PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.0
Adminify – White Label, Admin Menu Editor, Login Customizer v4.0
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
← All changes | Libs/Addons.php +164 -369 4.2.134.0 View file →
@@ -1,7 +1,7 @@
1 1 <?php
2 2
3 -namespace PXLBSAdminify\Libs;
3 +namespace WPAdminify\Libs;
4 4
5 5 // No, Direct access Sir !!!
6 6 if (!defined('ABSPATH')) {
7 7 exit;
@@ -24,9 +24,11 @@
24 24 public $plugins_list = [];
25 25 public $sub_menu;
26 26 public $menu_order;
27 27
28 + public $server_url = 'https://coupon.wpadminify.com/';
28 29
30 +
29 31 /**
30 32 * Constructor method
31 33 *
32 34 * @param integer $menu_order .
@@ -39,223 +41,15 @@
39 41 $this->plugins_list = $this->plugins_list();
40 42
41 43 $this->includes();
42 44
43 - // Show Addons menu only on network admin for multisite, or on regular admin for single site
44 - if ( is_multisite() ) {
45 - add_action('network_admin_menu', array($this, 'admin_menu'), 1000);
46 - } else {
47 - add_action('admin_menu', array($this, 'admin_menu'), 1000);
48 - }
49 - add_action('wp_ajax_pxlbsadminify_addons_upgrade_plugin', array($this, 'pxlbsadminify_addons_upgrade_plugin'));
50 - add_action('wp_ajax_pxlbsadminify_addons_activate_plugin', array($this, 'pxlbsadminify_addons_activate_plugin'));
51 - // Notify the site admin when a renamed legacy addon is detected
52 - // alongside its replacement. Per WordPress.org plugin guidelines,
53 - // we must not deactivate or activate plugins automatically; the
54 - // user has to perform the swap themselves from the Plugins screen.
55 - add_action('admin_notices', array($this, 'maybe_renamed_addon_notice'));
56 - add_action( 'rest_api_init', array( $this , 'addons_rest_routes') );
45 + add_action('admin_menu', array($this, 'admin_menu'), $this->menu_order, 1000);
46 + // add_action('network_admin_menu', array($this, 'admin_menu'), $this->menu_order);
47 + add_action('wp_ajax_jltwp_adminify_addons_upgrade_plugin', array($this, 'jltwp_adminify_addons_upgrade_plugin'));
48 + add_action('wp_ajax_jltwp_adminify_addons_activate_plugin', array($this, 'jltwp_adminify_addons_activate_plugin'));
57 49 }
58 50
59 - public function addons_rest_routes() {
60 - register_rest_route('adminify/v1', '/get-addons-list', array(
61 - 'methods' => 'GET',
62 - 'callback' => [$this, 'get_addons_plugins_list'],
63 - 'permission_callback' => [$this, 'check_is_admin_user'],
64 - ));
65 -
66 - register_rest_route('adminify/v1', '/install-addons', array(
67 - 'methods' => 'POST',
68 - 'callback' => [$this, 'install_addons'],
69 - 'permission_callback' => [$this, 'check_verify_nonce_and_permissions'],
70 - ));
71 - }
72 -
73 - public function check_is_admin_user() {
74 - if ( is_multisite() && ! is_super_admin() ) {
75 - return new \WP_Error('rest_forbidden', __('You are not allowed to access this resource.', 'adminify'), array('status' => 403));
76 - }
77 - if ( ! current_user_can('manage_options') ) {
78 - return new \WP_Error('rest_forbidden', __('You are not allowed to access this resource.', 'adminify'), array('status' => 403));
79 - }
80 - return true;
81 - }
82 -
83 - public function check_verify_nonce_and_permissions() {
84 - // The install-addons endpoint may both install AND activate
85 - // addons depending on each addon's current status, so the
86 - // caller must hold BOTH capabilities. On multisite this also
87 - // requires super admin.
88 - if ( is_multisite() && ! is_super_admin() ) {
89 - return new \WP_Error('rest_forbidden', __('Super admin required.', 'adminify'), array('status' => 403));
90 - }
91 - if ( ! current_user_can('install_plugins') ) {
92 - return new \WP_Error('rest_forbidden', __('You are not allowed to install plugins.', 'adminify'), array('status' => 403));
93 - }
94 - if ( ! current_user_can('activate_plugins') ) {
95 - return new \WP_Error('rest_forbidden', __('You are not allowed to activate plugins.', 'adminify'), array('status' => 403));
96 - }
97 -
98 - // Nonce check from header. Sanitize and unslash before verifying.
99 - $nonce = isset($_SERVER['HTTP_X_WP_NONCE'])
100 - ? sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_WP_NONCE'] ) )
101 - : '';
102 - if ( ! wp_verify_nonce( $nonce, 'wp_rest' ) ) {
103 - return new \WP_Error('rest_cookie_invalid_nonce', __('Invalid nonce.', 'adminify'), array('status' => 403));
104 - }
105 -
106 - return true;
107 - }
108 -
109 -
110 - public function get_addons_plugins_list() {
111 - // Fetch the catalogue on demand. This callback only runs on the
112 - // Add-ons page (a user action), so the remote request is not made on
113 - // routine admin page loads.
114 - $plugins = ( method_exists( $this, 'get_adminify_plugins_lists' ) )
115 - ? (array) $this->get_adminify_plugins_lists()
116 - : (array) $this->plugins_list;
117 - unset($plugins['master-addons']);
118 - $all_plugins = get_plugins();
119 - $active_plugins = get_option('active_plugins');
120 - foreach( $plugins as $slug => $plugin){
121 - foreach ($all_plugins as $plugin_file => $plugin_data) {
122 - if (strpos($plugin_file, $slug) !== false) {
123 - $plugins[$slug]["status"] = 'installed';
124 -
125 - if (in_array($plugin_file, $active_plugins)) {
126 - $plugins[$slug]["status"] = 'activated';
127 - }
128 - break;
129 - }
130 - }
131 - if( !isset($plugins[$slug]["status"])) $plugins[$slug]["status"] = 'not-installed';
132 -
133 - }
134 -
135 - return rest_ensure_response($plugins);
136 -
137 - }
138 -
139 -
140 - public function install_addons( $request ) {
141 - $addons = $request->get_param('addons');
142 - if ( empty($addons) || ! is_array($addons) ) {
143 - return new \WP_Error('no_addons', __('No addons were selected.', 'adminify'), array('status' => 400));
144 - }
145 -
146 - $plugins_list = $this->get_addons_plugins_list()->data;
147 - foreach( $addons as $key => $plugin ) {
148 - $plugin = sanitize_key( $plugin );
149 - if ( ! isset( $plugins_list[ $plugin ] ) ) {
150 - continue;
151 - }
152 - if ( $plugins_list[ $plugin ]['status'] === 'activated' ) {
153 - continue;
154 - }
155 - if ( $plugins_list[ $plugin ]['status'] === 'installed' ) {
156 - $this->activate_plugin_by_slug( $plugin );
157 - continue;
158 - }
159 - $params = [
160 - 'request_type' => 'rest',
161 - 'plugin' => $plugins_list[ $plugin ]['download_link'],
162 - ];
163 -
164 - $this->pxlbsadminify_addons_upgrade_plugin( $params );
165 - }
166 -
167 - return rest_ensure_response(['message' => __('Addons processed.', 'adminify'), 'addons' => $addons]);
168 - }
169 -
170 - function activate_plugin_by_slug($slug) {
171 - // Activation requires the activate_plugins capability in
172 - // addition to whatever capability gated the calling endpoint.
173 - // On multisite, activation must be performed by a super admin.
174 - if ( is_multisite() && ! is_super_admin() ) {
175 - return new \WP_Error( 'rest_forbidden', __( 'Super admin required to activate plugins.', 'adminify' ), array( 'status' => 403 ) );
176 - }
177 - if ( ! current_user_can( 'activate_plugins' ) ) {
178 - return new \WP_Error( 'rest_forbidden', __( 'You are not allowed to activate plugins.', 'adminify' ), array( 'status' => 403 ) );
179 - }
180 -
181 - // Reject any slug containing path separators / traversal so
182 - // $slug cannot escape WP_PLUGIN_DIR.
183 - if ( ! is_string( $slug ) || $slug === '' || strpbrk( $slug, "/\\" ) !== false || strpos( $slug, '..' ) !== false ) {
184 - return new \WP_Error( 'invalid_slug', __( 'Invalid plugin slug.', 'adminify' ), array( 'status' => 400 ) );
185 - }
186 -
187 - // Slug must be present in the trusted addons list.
188 - if ( ! array_key_exists( $slug, (array) $this->plugins_list ) ) {
189 - return new \WP_Error( 'invalid_slug', __( 'Invalid plugin slug.', 'adminify' ), array( 'status' => 400 ) );
190 - }
191 -
192 - $plugin_path = WP_PLUGIN_DIR . '/' . $slug;
193 -
194 - if ( ! is_dir( $plugin_path ) ) {
195 - return;
196 - }
197 -
198 - $installed_plugins = get_plugins( '/' . $slug );
199 - if ( empty( $installed_plugins ) ) {
200 - return;
201 - }
202 -
203 - $plugin_relative_path = $slug . '/' . key( $installed_plugins );
204 -
205 - if ( is_plugin_active( $plugin_relative_path ) ) {
206 - return;
207 - }
208 -
209 - activate_plugin( $plugin_relative_path );
210 - }
211 -
212 51 /**
213 - * Map of legacy addon slugs that have been renamed to a new slug.
214 - *
215 - * @return array<string,string>
216 - */
217 - protected function renamed_addons_map() {
218 - return [
219 - 'sidebar-generator/adminify-sidebar-generator.php' => 'adminify-sidebar-generator/adminify-sidebar-generator.php',
220 - ];
221 - }
222 -
223 - /**
224 - * Show a non-blocking admin notice if a legacy (renamed) addon is
225 - * still installed. We never deactivate or activate plugins on the
226 - * user's behalf; the notice points them to the Plugins screen so
227 - * they can perform the swap themselves.
228 - */
229 - public function maybe_renamed_addon_notice() {
230 - if ( ! current_user_can('activate_plugins') ) {
231 - return;
232 - }
233 -
234 - $messages = [];
235 -
236 - foreach ($this->renamed_addons_map() as $old_plugin => $new_plugin) {
237 - $old_exists = file_exists(WP_PLUGIN_DIR . '/' . $old_plugin);
238 - if ( ! $old_exists ) {
239 - continue;
240 - }
241 -
242 - $messages[] = sprintf(
243 - /* translators: 1: old plugin slug, 2: new plugin slug */
244 - esc_html__('"%1$s" has been renamed to "%2$s". Please deactivate and remove the old version, then install the new one from the Adminify Addons screen.', 'adminify'),
245 - esc_html(dirname($old_plugin)),
246 - esc_html(dirname($new_plugin))
247 - );
248 - }
249 -
250 - if ( empty($messages) ) {
251 - return;
252 - }
253 -
254 - echo '<div class="notice notice-warning"><p><strong>' . esc_html__('Adminify', 'adminify') . ':</strong> ' . esc_html(implode('<br>', $messages)) . '</p></div>';
255 - }
256 -
257 - /**
258 52 * Includes
259 53 *
260 54 * @author Jewel Theme <support@jeweltheme.com>
261 55 */
@@ -260,18 +54,17 @@
260 54 * @author Jewel Theme <support@jeweltheme.com>
261 55 */
262 56 public function includes()
263 57 {
264 - // wp-load.php must never be required from within a plugin: the
265 - // plugin already runs inside WordPress. The wp-admin includes
266 - // below are required for plugin install/upgrade APIs used by
267 - // this class and are loaded with require_once immediately
268 - // before the functions from each file are called.
269 - require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
270 - require_once ABSPATH . 'wp-admin/includes/file.php';
271 - require_once ABSPATH . 'wp-admin/includes/misc.php';
272 - require_once ABSPATH . 'wp-admin/includes/plugin.php';
273 - require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
58 + // if (!function_exists('install_plugin_install_status')) {
59 + // require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
60 + require_once(ABSPATH . '/wp-load.php');
61 + require_once(ABSPATH . 'wp-admin/includes/plugin-install.php');
62 + require_once(ABSPATH . 'wp-admin/includes/file.php');
63 + require_once(ABSPATH . 'wp-admin/includes/misc.php');
64 + require_once(ABSPATH . 'wp-admin/includes/plugin.php');
65 + require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
66 + // }
274 67 }
275 68
276 69 /**
277 70 * Menu Items
@@ -319,10 +112,26 @@
319 112 *
320 113 * @return void
321 114 */
322 115
323 - public function addons_check()
116 + public function jltwp_adminify_addons_check()
324 117 {
118 +
119 + $license = jltwp_adminify()->_get_license();
120 +
121 + if (!is_object($license) || !$license->is_valid() || !$license->is_active()) return;
122 +
123 + if ( $this->is_eligible_for_coupon() ) {
124 + // Get the coupon
125 + $coupon = $this->maybe_create_and_get_coupon();
126 + if (!empty($coupon) && !empty($coupon['code'])) {
127 + echo sprintf(
128 + __('<h3>Coupon Code: <strong style="color: red">%s</strong> Redeem this coupon code to get free access to all our premium addons (Except Admin Bar Editor, RoleMaster Suite and Master Addons). Learn how to <a href="https://wpadminify.com/redeem-addons-using-coupon-code/" target="_blank">redeem coupon code?</a></h3> ', 'adminify'),
129 + esc_attr($coupon['code'])
130 + );
131 + }
132 + }
133 +
325 134 echo '<style>
326 135 #fs_addons .fs-cards-list{ display: flex; }
327 136 #fs_addons .fs-cards-list .fs-card .fs-inner .fs-cta .button{
328 137 top: 112px;
@@ -331,10 +140,64 @@
331 140 border-radius: 3px !important;
332 141 }</style>';
333 142 }
334 143
144 + public function is_eligible_for_coupon() {
335 145
146 + $is_eligible = get_option('wp_adminify_addon__is_eligible_for_coupon', null);
336 147
148 + if ( $is_eligible !== null ) return wp_validate_boolean($is_eligible);
149 +
150 + $args = [
151 + 'license' => jltwp_adminify()->_get_license(),
152 + 'action' => 'check_eligibility'
153 + ];
154 +
155 + $response = wp_remote_get(add_query_arg($args, $this->server_url));
156 +
157 + if (!is_wp_error($response) && $response['response']['code'] === 200) {
158 + $file_contents = wp_remote_retrieve_body($response);
159 + $is_eligible = json_decode($file_contents, true);
160 + update_option('wp_adminify_addon__is_eligible_for_coupon', wp_validate_boolean($is_eligible));
161 + return $is_eligible;
162 + }
163 +
164 + return false;
165 + }
166 +
167 + public function maybe_create_and_get_coupon()
168 + {
169 +
170 + $coupon = get_option('wp_adminify_addon__coupon');
171 +
172 + if (!empty($coupon)) return $coupon;
173 +
174 + // communicate hit hserver get coupon
175 + $args = [
176 + 'license' => jltwp_adminify()->_get_license(),
177 + 'action' => 'get_coupon'
178 + ];
179 +
180 + $response = wp_remote_get(add_query_arg($args, $this->server_url));
181 +
182 + if (!is_wp_error($response) && $response['response']['code'] === 200) {
183 +
184 + $file_contents = wp_remote_retrieve_body($response);
185 + $response_data = json_decode($file_contents, true);
186 +
187 + if (!empty($response_data)) {
188 + $coupon = [
189 + 'id' => $response_data['id'],
190 + 'code' => $response_data['code']
191 + ];
192 + update_option('wp_adminify_addon__coupon', $coupon);
193 + }
194 + }
195 +
196 + return $coupon;
197 + }
198 +
199 +
337 200 /**
338 201 * Header
339 202 */
340 203 public function header()
@@ -342,11 +205,11 @@
342 205 ?>
343 206 <div class='wp-adminify-addons-header'>
344 207 <div class='wp-adminify-addons-title'>
345 208 <h2>
346 - <?php echo esc_html__('Add Ons for Adminify', 'adminify'); ?>
209 + <?php echo esc_html__('Add Ons for WP Adminify', 'adminify'); ?>
347 210 </h2>
348 - <?php $this->addons_check(); ?>
211 + <?php $this->jltwp_adminify_addons_check(); ?>
349 212 </div>
350 213 <div class='wp-adminify-addons-menu'>
351 214 <div class="wp-filter">
352 215 <ul class="filter-links">
@@ -399,19 +262,10 @@
399 262 * Body
400 263 */
401 264 public function plugins()
402 265 {
403 - // $this->plugins_list is populated at construction only from the
404 - // cached catalogue, which is empty until a live fetch runs. The
405 - // Add-ons page render is itself an explicit user action, so fall
406 - // back to the bundled catalogue here so the cards always show.
407 - $plugins_list = $this->plugins_list;
408 266
409 - if ( empty( $plugins_list ) && method_exists( $this, 'get_adminify_plugins_lists' ) ) {
410 - $plugins_list = (array) $this->get_adminify_plugins_lists();
411 - }
412 -
413 - foreach ($plugins_list as $key => $plugin) {
267 + foreach ($this->plugins_list as $key => $plugin) {
414 268 $install_status = \install_plugin_install_status($plugin);
415 269 $classes = implode(' ', $plugin['type']);
416 270
417 271 $more_details = self_admin_url(
@@ -524,9 +378,9 @@
524 378 <?php
525 379 } elseif (current_user_can('activate_plugin', $install_status['file'])) {
526 380 ?>
527 381 <button class="button activate-now" data-plugin-file="<?php echo esc_attr($install_status['file']); ?>">
528 - <?php echo esc_html__('Activate Now', 'adminify'); ?>
382 + <?php echo esc_html__('Activate', 'adminify'); ?>
529 383 </button>
530 384 <?php
531 385 } else {
532 386 ?>
@@ -551,9 +405,9 @@
551 405 * Activate Plugins
552 406 *
553 407 * @author Jewel Theme <support@jeweltheme.com>
554 408 */
555 - public function pxlbsadminify_addons_activate_plugin()
409 + public function jltwp_adminify_addons_activate_plugin()
556 410 {
557 411 if (empty($_POST['plugin'])) {
558 412 return;
559 413 }
@@ -559,35 +413,23 @@
559 413 }
560 414 try {
561 415 $nonce = isset($_POST['nonce']) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : '';
562 416
563 - if (!wp_verify_nonce($nonce, 'pxlbsadminify_addons_nonce')) {
417 + if (!wp_verify_nonce($nonce, 'jltwp_adminify_addons_nonce')) {
564 418 wp_send_json_error(array('mess' => __('Nonce is invalid', 'adminify')));
565 419 }
566 420
567 - // Security check - only administrators can activate plugins
568 - if (!current_user_can('activate_plugins')) {
569 - wp_send_json_error(array('mess' => __('You do not have permission to perform this action.', 'adminify')));
570 - }
421 + // if ((is_multisite() && !is_network_admin()) || !current_user_can('install_plugins')) {
422 + // wp_send_json_error(array('mess' => __('Invalid access', 'adminify')));
423 + // }
571 424
572 425 $plugin = sanitize_text_field(wp_unslash($_POST['plugin']));
573 426 $plugin_links = array_values(wp_list_pluck($this->plugins_list, 'slug'));
574 427
575 - if (!in_array(dirname($plugin), $plugin_links, true)) {
428 + if (!in_array(dirname($plugin), $plugin_links)) {
576 429 wp_send_json_error(array('mess' => __('Invalid plugin', 'adminify')));
577 430 }
578 431
579 - // Resolve against the list of actually installed plugins so that
580 - // only a known plugin file is ever passed to activate_plugin().
581 - if (!function_exists('get_plugins')) {
582 - require_once ABSPATH . 'wp-admin/includes/plugin.php';
583 - }
584 - $installed_plugins = array_keys(get_plugins());
585 -
586 - if (!in_array($plugin, $installed_plugins, true)) {
587 - wp_send_json_error(array('mess' => __('Invalid plugin', 'adminify')));
588 - }
589 -
590 432 $result = activate_plugin($plugin);
591 433
592 434 if (is_wp_error($result)) {
593 435 wp_send_json_error(
@@ -645,11 +487,11 @@
645 487 * Upgrade Plugins required Libraries
646 488 *
647 489 * @author Jewel Theme <support@jeweltheme.com>
648 490 */
649 - public function pxlbsadminify_addons_upgrade_plugin( $params = null )
491 + public function jltwp_adminify_addons_upgrade_plugin()
650 492 {
651 - if ($params == null && empty($_POST['plugin'])) {
493 + if (empty($_POST['plugin'])) {
652 494 return;
653 495 }
654 496
655 497 try {
@@ -657,73 +499,48 @@
657 499 require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
658 500 require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';
659 501 require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
660 502
661 - if($params == null){
662 - $nonce = isset($_POST['nonce']) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : '';
503 + $nonce = isset($_POST['nonce']) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : '';
663 504
664 - if (!wp_verify_nonce($nonce, 'pxlbsadminify_addons_nonce')) {
665 - wp_send_json_error(array('mess' => __('Nonce is invalid', 'adminify')));
666 - }
667 - $plugin = sanitize_text_field(wp_unslash($_POST['plugin']));
668 - }else{
669 - $plugin = $params['plugin'];
505 + if (!wp_verify_nonce($nonce, 'jltwp_adminify_addons_nonce')) {
506 + wp_send_json_error(array('mess' => __('Nonce is invalid', 'adminify')));
670 507 }
671 508
672 - // Security check - only administrators can install plugins
673 - if (!current_user_can('install_plugins')) {
674 - wp_send_json_error(array('mess' => __('You do not have permission to perform this action.', 'adminify')));
675 - }
509 + // if ((is_multisite() && !is_network_admin()) || !current_user_can('install_plugins')) {
510 + // wp_send_json_error(array('mess' => __('Invalid access', 'adminify')));
511 + // }
676 512
513 + $plugin = sanitize_text_field(wp_unslash($_POST['plugin']));
514 +
677 515 $plugin_slug = $this->get_the_plugin_slug( $plugin );
678 516
679 - if ( ! array_key_exists( $plugin_slug, $this->plugins_list ) ) {
517 + if ( ! array_key_exists( $plugin_slug, $this->plugins_list) ) {
680 518 wp_send_json_error(array('mess' => __('Invalid plugin', 'adminify')));
681 519 }
682 520
683 - // Replace the user-supplied $plugin value with values derived
684 - // from our trusted internal addons list, so that arbitrary
685 - // input never reaches Plugin_Upgrader::install()/upgrade() or
686 - // activate_plugin().
687 - $trusted_install_source = isset($this->plugins_list[$plugin_slug]['download_link'])
688 - ? $this->plugins_list[$plugin_slug]['download_link']
689 - : '';
690 -
691 - if($params == null){
692 - $type = isset($_POST['type']) ? sanitize_text_field(wp_unslash($_POST['type'])) : 'install';
693 - }else{
694 - $type = 'install';
695 - }
521 + $type = isset($_POST['type']) ? sanitize_text_field(wp_unslash($_POST['type'])) : 'install';
696 522 $skin = new \WP_Ajax_Upgrader_Skin();
697 523 $upgrader = new \Plugin_Upgrader($skin);
698 524
699 525 if ('install' === $type) {
700 526
701 - if ( empty( $trusted_install_source ) ) {
702 - wp_send_json_error(array('mess' => __('Invalid plugin', 'adminify')));
527 + $result = $upgrader->install($plugin);
528 +
529 + if (empty($result) || empty($upgrader->result)) {
530 + wp_send_json_error(
531 + array(
532 + 'mess' => 'Something is wrong',
533 + )
534 + );
703 535 }
704 536
705 - $result = $upgrader->install( $trusted_install_source );
706 - if ($params == null){
707 - if (empty($result) || empty($upgrader->result)) {
708 - wp_send_json_error(
709 - array(
710 - 'mess' => 'Something is wrong',
711 - )
712 - );
713 - }
714 -
715 - if (is_wp_error($result)) {
716 - wp_send_json_error(
717 - array(
718 - 'mess' => $result->get_error_message(),
719 - )
720 - );
721 - }
722 - }else{
723 - if(empty($result) || empty($upgrader->result)){
724 - return;
725 - }
537 + if (is_wp_error($result)) {
538 + wp_send_json_error(
539 + array(
540 + 'mess' => $result->get_error_message(),
541 + )
542 + );
726 543 }
727 544
728 545 $plugins = get_plugins('/' . $upgrader->result['destination_name']);
729 546 $plugin_data = end($plugins);
@@ -734,91 +551,69 @@
734 551
735 552 $install_status = \install_plugin_install_status($plugin_data);
736 553
737 554 $active_plugin = activate_plugin($install_status['file']);
738 -
739 - if ($params == null){
740 - if (is_wp_error($active_plugin)) {
741 - wp_send_json_error(
742 - array(
743 - 'mess' => $active_plugin->get_error_message(),
744 - )
745 - );
746 - } else {
747 - wp_send_json_success(
748 - array(
749 - 'mess' => __('Install success', 'adminify'),
750 - )
751 - );
752 - }
753 - }
754 - } else {
755 - if ($params == null){
555 +
556 + if (is_wp_error($active_plugin)) {
756 557 wp_send_json_error(
757 558 array(
758 - 'mess' => 'Error',
559 + 'mess' => $active_plugin->get_error_message(),
759 560 )
760 561 );
562 + } else {
563 + wp_send_json_success(
564 + array(
565 + 'mess' => __('Install success', 'adminify'),
566 + )
567 + );
568 + }
569 + } else {
761 570
762 - }
571 + wp_send_json_error(
572 + array(
573 + 'mess' => 'Error',
574 + )
575 + );
763 576 }
764 577 } else {
765 578
766 - // Resolve the trusted plugin file path from the validated
767 - // slug instead of trusting the raw $_POST value, so that
768 - // is_plugin_active(), Plugin_Upgrader::upgrade() and
769 - // activate_plugin() never receive attacker-supplied paths.
770 - $installed_plugins = get_plugins( '/' . $plugin_slug );
771 - if ( empty( $installed_plugins ) ) {
772 - wp_send_json_error(array('mess' => __('Plugin not installed.', 'adminify')));
773 - }
774 - $trusted_plugin_file = $plugin_slug . '/' . key( $installed_plugins );
579 + $is_active = is_plugin_active($plugin);
580 + $result = $upgrader->upgrade($plugin);
775 581
776 - $is_active = is_plugin_active( $trusted_plugin_file );
777 - $result = $upgrader->upgrade( $trusted_plugin_file );
778 -
779 - if ($params == null){
780 - if ( empty($result) || is_wp_error($result) ) {
781 - wp_send_json_error(
782 - array(
783 - 'mess' => is_wp_error($result) ? $result->get_error_message() : __('Couldn\'t upgrade', 'adminify')
784 - )
785 - );
786 - }
582 + if ( empty($result) || is_wp_error($result) ) {
583 + wp_send_json_error(
584 + array(
585 + 'mess' => is_wp_error($result) ? $result->get_error_message() : __('Couldn\'t upgrade', 'adminify')
586 + )
587 + );
787 588 }
788 589
789 - $active_status = activate_plugin( $trusted_plugin_file );
590 + $active_status = activate_plugin($plugin);
790 591
791 - if ($params == null){
792 - if ( empty($active_status) || is_wp_error($active_status) ) {
793 - wp_send_json_error(
794 - array(
795 - 'mess' => is_wp_error($result) ? $result->get_error_message() : __('Activation Failed', 'adminify')
796 - )
797 - );
798 - }
799 -
800 - wp_send_json_success(
592 + if ( empty($active_status) || is_wp_error($active_status) ) {
593 + wp_send_json_error(
801 594 array(
802 - 'mess' => __('Update success', 'adminify'),
803 - 'active' => true,
595 + 'mess' => is_wp_error($result) ? $result->get_error_message() : __('Activation Failed', 'adminify')
804 596 )
805 597 );
806 598 }
807 - }
808 -
809 - } catch (\Exception $ex) {
810 - if ($params == null){
811 - wp_send_json_error(
599 +
600 + wp_send_json_success(
812 601 array(
813 - 'mess' => __('Error exception.', 'adminify'),
814 - array(
815 - 'error' => $ex,
816 - ),
602 + 'mess' => __('Update success', 'adminify'),
603 + 'active' => true,
817 604 )
818 605 );
819 606 }
607 + } catch (\Exception $ex) {
608 + wp_send_json_error(
609 + array(
610 + 'mess' => __('Error exception.', 'adminify'),
611 + array(
612 + 'error' => $ex,
613 + ),
614 + )
615 + );
820 616 }
821 617 }
822 -
823 618 }
824 619 }