*/ class Recommended { public $menu_items; public $plugins_list; public $sub_menu; public $menu_order; /** * Constructor method * * @param integer $menu_order . * @author Jewel Theme */ public function __construct($menu_order = 99) { $this->menu_order = $menu_order; $this->menu_items = $this->menu_items(); $this->plugins_list = $this->plugins_list(); $this->includes(); add_action('admin_menu', array($this, 'admin_menu'), $this->menu_order); // add_action('network_admin_menu', array($this, 'admin_menu'), $this->menu_order); add_action('wp_ajax_jltwp_adminify_recommended_upgrade_plugin', array($this, 'jltwp_adminify_recommended_upgrade_plugin')); add_action('wp_ajax_jltwp_adminify_recommended_activate_plugin', array($this, 'jltwp_adminify_recommended_activate_plugin')); } /** * Includes * * @author Jewel Theme */ public function includes() { if (!function_exists('install_plugin_install_status')) { require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; } } /** * Menu Items * * @author Jewel Theme */ public function menu_items() { return array(); } /** * Plugins list * * @author Jewel Theme */ public function plugins_list() { return array(); } /** * Admin submenu */ public function admin_menu() { } /** * Render recommended plugins body */ public function render_recommended_plugins() { ?>
plugins(); ?>
plugins_list as $key => $plugin) { $install_status = \install_plugin_install_status($plugin); $classes = implode(' ', $plugin['type']); $more_details = self_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . esc_attr($plugin['slug']) . '&TB_iframe=true&width=600&height=550' ); ?> */ public function jltwp_adminify_recommended_activate_plugin() { try { if (isset($_POST['file'])) { $nonce = isset($_POST['nonce']) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : ''; if (!wp_verify_nonce($nonce, 'jltwp_adminify_recommended_nonce')) { wp_send_json_error(array('mess' => __('Nonce is invalid', 'adminify'))); } if ((is_multisite() && !is_network_admin()) || !current_user_can('install_plugins')) { wp_send_json_error(array('mess' => __('Invalid access', 'adminify'))); } $plugin = sanitize_text_field(wp_unslash($_POST['plugin'])); $plugin_links = array_values(wp_list_pluck($this->plugins_list, 'download_link')); if (!in_array($plugin, $plugin_links)) { wp_send_json_error(array('mess' => __('Invalid plugin', 'adminify'))); } $file = sanitize_text_field(wp_unslash($_POST['file'])); $result = activate_plugin($file); if (is_wp_error($result)) { wp_send_json_error( array( 'mess' => $result->get_error_message(), ) ); } wp_send_json_success( array( 'mess' => __('Activate success', 'adminify'), ) ); } } catch (\Exception $ex) { wp_send_json_error( array( 'mess' => __('Error exception.', 'adminify'), array( 'error' => $ex, ), ) ); } } /** * Upgrade Plugins required Libraries * * @author Jewel Theme */ public function jltwp_adminify_recommended_upgrade_plugin() { try { require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php'; require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php'; if (isset($_POST['plugin'])) { $nonce = isset($_POST['nonce']) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : ''; if (!wp_verify_nonce($nonce, 'jltwp_adminify_recommended_nonce')) { wp_send_json_error(array('mess' => __('Nonce is invalid', 'adminify'))); } if ((is_multisite() && !is_network_admin()) || !current_user_can('install_plugins')) { wp_send_json_error(array('mess' => __('Invalid access', 'adminify'))); } $plugin = sanitize_text_field(wp_unslash($_POST['plugin'])); $plugin_links = array_values(wp_list_pluck($this->plugins_list, 'download_link')); if (!in_array($plugin, $plugin_links)) { wp_send_json_error(array('mess' => __('Invalid plugin', 'adminify'))); } $type = isset($_POST['type']) ? sanitize_text_field(wp_unslash($_POST['type'])) : 'install'; $skin = new \WP_Ajax_Upgrader_Skin(); $upgrader = new \Plugin_Upgrader($skin); if ('install' === $type) { $result = $upgrader->install($plugin); if (is_wp_error($result)) { wp_send_json_error( array( 'mess' => $result->get_error_message(), ) ); } $args = array( 'slug' => $upgrader->result['destination_name'], 'fields' => array( 'short_description' => true, 'icons' => true, 'banners' => false, 'added' => false, 'reviews' => false, 'sections' => false, 'requires' => false, 'rating' => false, 'ratings' => false, 'downloaded' => false, 'last_updated' => false, 'added' => false, 'tags' => false, 'compatibility' => false, 'homepage' => false, 'donate_link' => false, ), ); $plugin_data = plugins_api('plugin_information', $args); if ($plugin_data && !is_wp_error($plugin_data)) { $install_status = \install_plugin_install_status($plugin_data); $active_plugin = activate_plugin($install_status['file']); if (is_wp_error($active_plugin)) { wp_send_json_error( array( 'mess' => $active_plugin->get_error_message(), ) ); } else { wp_send_json_success( array( 'mess' => __('Install success', 'adminify'), ) ); } } else { wp_send_json_error( array( 'mess' => 'Error', ) ); } } else { $is_active = is_plugin_active($plugin); $result = $upgrader->upgrade($plugin); if (is_wp_error($result)) { wp_send_json_error( array( 'mess' => $result->get_error_message(), ) ); } else { activate_plugin($plugin); wp_send_json_success( array( 'mess' => __('Update success', 'adminify'), 'active' => $is_active, ) ); } } } } catch (\Exception $ex) { wp_send_json_error( array( 'mess' => __('Error exception.', 'adminify'), array( 'error' => $ex, ), ) ); } } } }