*/ 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( 'wp_ajax_jlt_admin_bar_editor_recommended_upgrade_plugin', array( $this, 'jlt_admin_bar_editor_recommended_upgrade_plugin' ) ); add_action( 'wp_ajax_jlt_admin_bar_editor_recommended_activate_plugin', array( $this, 'jlt_admin_bar_editor_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 jlt_admin_bar_editor_recommended_activate_plugin() { try { if ( isset( $_POST['file'] ) ) { $nonce = isset( $_POST['nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['nonce'] ) ) : ''; if ( ! wp_verify_nonce( $nonce, 'jlt_admin_bar_editor_recommended_nonce' ) ) { wp_send_json_error( array( 'mess' => esc_html__( 'Nonce is invalid', 'admin-bar' ) ) ); } if ( ( is_multisite() && ! is_network_admin() ) || ! current_user_can( 'install_plugins' ) ) { wp_send_json_error( array( 'mess' => esc_html__( 'Invalid access', 'admin-bar' ) ) ); } $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' => esc_html__( 'Invalid plugin', 'admin-bar' ) ) ); } $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' => esc_html__( 'Activate success', 'admin-bar' ), ) ); } } catch ( \Error $ex ) { wp_send_json_error( array( 'mess' => esc_html__( 'Error.', 'admin-bar' ), array( 'error' => $ex, ), ) ); } } /** * Upgrade Plugins required Libraries * * @author Jewel Theme */ public function jlt_admin_bar_editor_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, 'jlt_admin_bar_editor_recommended_nonce' ) ) { wp_send_json_error( array( 'mess' => esc_html__( 'Nonce is invalid', 'admin-bar' ) ) ); } if ( ( is_multisite() && ! is_network_admin() ) || ! current_user_can( 'install_plugins' ) ) { wp_send_json_error( array( 'mess' => esc_html__( 'Invalid access', 'admin-bar' ) ) ); } $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' => esc_html__( 'Invalid plugin', 'admin-bar' ) ) ); } $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' => esc_html__( 'Install success', 'admin-bar' ), ) ); } } 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' => esc_html__( 'Update success', 'admin-bar' ), 'active' => $is_active, ) ); } } } } catch ( \Exception $ex ) { wp_send_json_error( array( 'mess' => esc_html__( 'Error exception.', 'admin-bar' ), array( 'error' => $ex, ), ) ); } catch ( \Error $ex ) { wp_send_json_error( array( 'mess' => esc_html__( 'Error.', 'admin-bar' ), array( 'error' => $ex, ), ) ); } } } }