PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 2.0.7
Adminify – White Label, Admin Menu Editor, Login Customizer v2.0.7
4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.1.17 All 164 releases
adminify / Inc / Classes / Adminify_Rollback.php

Adminify_Rollback.php in Adminify – White Label, Admin Menu Editor, Login Customizer 2.0.7, at Inc/Classes/Adminify_Rollback.php

211 lines 5.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPAdminify\Inc\Classes;
4
5 if (!defined('ABSPATH')) exit;
6
7 class Adminify_Rollback
8 {
9
10 protected $package_url;
11
12 protected $version;
13
14 protected $plugin_name = WP_ADMINIFY;
15
16 protected $plugin_slug;
17
18 private static $instance = null;
19
20 public function __construct($args = [])
21 {
22 add_action('admin_post_wp_adminify_rollback_version', [$this, 'jltwp_adminify_post_addons_rollback']);
23
24 foreach ($args as $key => $value) {
25 $this->{$key} = $value;
26 }
27 }
28
29
30 /**
31 * Rollback function
32 */
33 public function jltwp_adminify_post_addons_rollback()
34 {
35
36 check_admin_referer('wp_adminify_rollback_version');
37
38 $rollback_versions = $this->get_rollback_versions();
39
40 if (empty($_GET['version']) || !in_array($_GET['version'], $rollback_versions)) {
41 wp_die(esc_html__('Error occurred, The version selected is invalid. Try selecting different version.', 'adminify'));
42 }
43
44 $plugin_slug = basename(WP_ADMINIFY_BASE, '.php');
45 $plugin_version = $_GET['version'];
46
47 $jltwp_adminify_rollback = new self(
48 [
49 'version' => $plugin_version,
50 'plugin_name' => $this->plugin_name,
51 'plugin_slug' => $plugin_slug,
52 'package_url' => sprintf('https://downloads.wordpress.org/plugin/%s.%s.zip', $plugin_slug, $_GET['version']),
53 ]
54 );
55
56 $jltwp_adminify_rollback->run();
57
58 wp_die('', __('Rollback to Previous Version', MELA_TD), ['response' => 200,]);
59 }
60
61
62
63
64 public function get_rollback_versions()
65 {
66 $rollback_versions = get_transient('wp_adminify_rollback_versions_' . WP_ADMINIFY_VER);
67 if (false === $rollback_versions) {
68 $max_versions = 30;
69
70 require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
71
72 $plugin_information = plugins_api(
73 'plugin_information',
74 [
75 'slug' => 'adminify',
76 ]
77 );
78
79 if (empty($plugin_information->versions) || !is_array($plugin_information->versions)) {
80 return [];
81 }
82
83 krsort($plugin_information->versions);
84
85 $rollback_versions = [];
86
87 $current_index = 0;
88 foreach ($plugin_information->versions as $version => $download_link) {
89 if ($max_versions <= $current_index) {
90 break;
91 }
92
93 $lowercase_version = strtolower($version);
94 $is_valid_rollback_version = !preg_match('/(trunk|beta|rc|dev)/i', $lowercase_version);
95
96 $is_valid_rollback_version = apply_filters(
97 'adminify/options/rollback/is_valid_rollback_version',
98 $is_valid_rollback_version,
99 $lowercase_version
100 );
101
102 if (!$is_valid_rollback_version) {
103 continue;
104 }
105
106 if (version_compare($version, WP_ADMINIFY_VER, '>=')) {
107 continue;
108 }
109
110 $current_index++;
111 $rollback_versions[] = $version;
112 }
113
114 set_transient('wp_adminify_rollback_versions_' . WP_ADMINIFY_VER, $rollback_versions, WEEK_IN_SECONDS);
115 }
116
117 return $rollback_versions;
118 }
119
120
121
122 private function print_inline_style()
123 {
124 ?>
125 <style>
126 .wrap {
127 overflow: hidden;
128 }
129
130 h1 {
131 background: #0347FF;
132 text-align: center;
133 color: #fff !important;
134 padding: 70px !important;
135 text-transform: uppercase;
136 letter-spacing: 1px;
137 }
138
139 h1 img {
140 max-width: 300px;
141 display: block;
142 margin: auto auto 50px;
143 }
144 </style>
145
146 <?php
147 }
148
149 protected function apply_package()
150 {
151
152 $update_plugins = get_site_transient('update_plugins');
153
154 if (!is_object($update_plugins)) {
155
156 $update_plugins = new \stdClass();
157 }
158
159 $plugin_info = new \stdClass();
160
161 $plugin_info->new_version = $this->version;
162
163 $plugin_info->slug = $this->plugin_slug;
164
165 $plugin_info->package = $this->package_url;
166
167 $plugin_info->url = 'https://wpadminify.com/';
168
169 $update_plugins->response[$this->plugin_name] = $plugin_info;
170
171 set_site_transient('update_plugins', $update_plugins);
172 }
173
174 protected function upgrade()
175 {
176
177 require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
178
179 $logo_url = WP_ADMINIFY_ASSETS_IMAGE . 'logos/logo-text-dark.svg';
180
181 $upgrader_args = [
182 'url' => 'update.php?action=upgrade-plugin&plugin=' . rawurlencode($this->plugin_name),
183 'plugin' => $this->plugin_name,
184 'nonce' => 'upgrade-plugin_' . $this->plugin_name,
185 'title' => '<img src="' . $logo_url . '" alt="WP Adminify Version Rollback">' . __('Rollback to Previous Version ', 'adminify'),
186 ];
187
188 $this->print_inline_style();
189
190 $upgrader = new \Plugin_Upgrader(new \Plugin_Upgrader_Skin($upgrader_args));
191
192 $upgrader->upgrade($this->plugin_name);
193 }
194
195 public function run()
196 {
197
198 $this->apply_package();
199
200 $this->upgrade();
201 }
202
203 public static function get_instance()
204 {
205 if (!self::$instance) {
206 self::$instance = new self;
207 }
208 return self::$instance;
209 }
210 }
211