PluginProbe
PlugVersions – Easily roll back to previous versions of your plugins. / 0.0.4
PlugVersions – Easily roll back to previous versions of your plugins. v0.0.4
0.0.6.RC-1 0.0.7 0.0.8 0.1.0 0.2.0 0.2.1 trunk 0.0.1 0.0.2 0.0.3 0.0.4 0.0.5 0.0.6
← All changes | plugversions.php +8 -75 trunk0.0.4 View file →
@@ -5,15 +5,9 @@
5 5 Author: Jose Mortellaro
6 6 Author URI: https://josemortellaro.com
7 7 Domain Path: /languages/
8 8 Text Domain: plugversions
9 -License: GPLv2 or later
10 -License URI: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
11 -Version: 0.2.1
12 -Requires at least: 4.9
13 -Tested up to: 6.8
14 -Requires PHP: 7.4
15 -Tags: plugin, versions, revisions, restore, rollback, backup, management
9 +Version: 0.0.4
16 10 */
17 11 /* This program is free software; you can redistribute it and/or modify
18 12 it under the terms of the GNU General Public License as published by
19 13 the Free Software Foundation; either version 2 of the License, or
@@ -29,25 +23,22 @@
29 23 define( 'PLUGIN_REVISIONS_PLUGIN_DIR', untrailingslashit( dirname( __FILE__ ) ) );
30 24 define( 'PLUGIN_REVISIONS_PLUGIN_URL', untrailingslashit( plugins_url( '', __FILE__ ) ) );
31 25
32 26 if( is_admin() ){
33 - require_once PLUGIN_REVISIONS_PLUGIN_DIR . '/admin/pr-admin.php';
27 + require_once PLUGIN_REVISIONS_PLUGIN_DIR.'/admin/pr-admin.php';
34 28 }
35 29
36 -add_filter( 'site_transient_update_plugins', function( $obj ) {
30 +add_filter( 'site_transient_update_plugins',function( $obj ){
37 31 /**
38 32 * Remove plugin revisions from the update notifications
39 - * This filter is applied to the site transient update plugins object.
40 - * It checks if the object is set and is an object, then it iterates through the response array.
41 - * If it finds a key that matches the plugin revision key, it removes that entry from the response.
42 33 *
43 34 * @since 0.0.1
44 35 */
45 - if( isset( $obj ) && is_object( $obj ) && isset( $obj->response ) ) {
36 + if( isset( $obj ) && is_object( $obj ) && isset( $obj->response ) ){
46 37 $response = $obj->response;
47 38 $key = eos_plugin_revision_key();
48 39 foreach( $response as $p => $arr ){
49 - if( false !== strpos( $p,'pr-'.$key.'-' ) && isset( $response[$p] ) ) {
40 + if( false !== strpos( $p,'pr-'.$key.'-' ) && isset( $response[$p] ) ){
50 41 unset( $response[$p] );
51 42 }
52 43 }
53 44 $obj->response = $response;
@@ -56,18 +47,15 @@
56 47 } );
57 48
58 49 /**
59 50 * Return revision key
60 - * This key is used to identify the plugin revisions.
61 - * It is based on the current time and is sanitized to ensure it is safe for use.
62 - * If the key does not exist, it creates a new one and saves it in the site options.
63 51 *
64 52 * @since 0.0.1
65 53 */
66 54 function eos_plugin_revision_key(){
67 - $opts = get_site_option( 'plugin_revisions', array() );
55 + $opts = get_site_option( 'plugin_revisions' );
68 56 if( $opts && isset( $opts['time' ] ) ){
69 - $key = substr( md5( sanitize_text_field( $opts['time' ] ) ), 0, 8 );
57 + $key = substr( md5( sanitize_text_field( $opts['time' ] ) ),0,8 );
70 58 return $key;
71 59 }
72 60 else{
73 61 $time = time();
@@ -72,63 +60,8 @@
72 60 else{
73 61 $time = time();
74 62 $opts['time'] = $time;
75 63 update_site_option( 'plugin_revisions',$opts );
76 - return substr( md5( $time ), 0, 8 );
64 + return substr( md5( $time ),0,8 );
77 65 }
78 66 return false;
79 -}
80 -
81 -/**
82 - * Create a zip file using PclZip.
83 - * This function creates a zip file from a specified directory using the PclZip library.
84 - * It checks if the PclZip class exists, retrieves all files from the directory,
85 - * and creates a zip file at the specified destination.
86 - * If the zip creation fails, it returns false; otherwise, it returns true.
87 - *
88 - * @param string $destination The path where the zip file will be created.
89 - * @param string $zip_dirname The directory name to be zipped.
90 - * @return bool True on success, false on failure.
91 - *
92 - * @since 0.0.6
93 - *
94 - */
95 -function eos_pv_create_zip_pclzip( $destination, $zip_dirname ) {
96 - if( file_exists( ABSPATH . 'wp-admin/includes/class-pclzip.php' ) ) {
97 - require_once( ABSPATH . 'wp-admin/includes/class-pclzip.php' );
98 - if( class_exists( 'PclZip' ) ) {
99 - $files = eos_pv_get_files( $destination );
100 - if( $files ) {
101 - $zip = new PclZip( str_replace( '/.zip', '.zip', $destination . '.zip' ) );
102 - if ( defined( 'PCLZIP_OPT_REMOVE_PATH' ) ) {
103 - $zip_created = $zip->create( $files, PCLZIP_OPT_REMOVE_PATH, WP_PLUGIN_DIR );
104 - if( 0 == $zip_created ) {
105 - // If the zip creation fails, return false
106 - return false;
107 - }
108 - return true;
109 - }
110 - }
111 - }
112 - return false;
113 - }
114 -}
115 -
116 -/**
117 - * This function retrieves all files from a given directory path, including subdirectories.
118 - * It uses the RecursiveDirectoryIterator and RecursiveIteratorIterator classes to traverse the directory structure.
119 - * The function returns an array of file paths, with backslashes replaced by forward slashes for consistency.
120 - *
121 - * @since 0.0.6
122 - */
123 -function eos_pv_get_files( $path ) {
124 - if( ! class_exists( 'RecursiveIteratorIterator' ) ) return false;
125 - $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $path ), RecursiveIteratorIterator::LEAVES_ONLY );
126 - $files_paths = array();
127 - foreach ( $files as $name => $file ) {
128 - if ( ! $file->isDir() ) {
129 - $file_path = str_replace( '\\', '/', $file->getRealPath() );
130 - $files_paths[] = $file_path;
131 - }
132 - }
133 - return $files_paths;
134 67 }