*/ class Addons { public $menu_items = []; public $plugins_list = []; public $sub_menu; public $menu_order; public $server_url = 'https://coupon.wpadminify.com/'; /** * Constructor method * * @param integer $menu_order . * @author Jewel Theme */ public function __construct($menu_order = 70) { $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, 1000); // add_action('network_admin_menu', array($this, 'admin_menu'), $this->menu_order); add_action('wp_ajax_jltwp_adminify_addons_upgrade_plugin', array($this, 'jltwp_adminify_addons_upgrade_plugin')); add_action('wp_ajax_jltwp_adminify_addons_activate_plugin', array($this, 'jltwp_adminify_addons_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'; require_once(ABSPATH . '/wp-load.php'); require_once(ABSPATH . 'wp-admin/includes/plugin-install.php'); require_once(ABSPATH . 'wp-admin/includes/file.php'); require_once(ABSPATH . 'wp-admin/includes/misc.php'); require_once(ABSPATH . 'wp-admin/includes/plugin.php'); require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.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 addons plugins body */ public function render_addons_plugins() { ?>
header(); ?> body(); ?>
_get_license(); if (!is_object($license) || !$license->is_valid() || !$license->is_active()) return; if ( $this->is_eligible_for_coupon() ) { // Get the coupon $coupon = $this->maybe_create_and_get_coupon(); if (!empty($coupon) && !empty($coupon['code'])) { echo sprintf( __('

Coupon Code: %s 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 redeem coupon code?

', 'adminify'), esc_attr($coupon['code']) ); } } echo ''; } public function is_eligible_for_coupon() { $is_eligible = get_option('wp_adminify_addon__is_eligible_for_coupon', null); if ( $is_eligible !== null ) return wp_validate_boolean($is_eligible); $args = [ 'license' => jltwp_adminify()->_get_license(), 'action' => 'check_eligibility' ]; $response = wp_remote_get(add_query_arg($args, $this->server_url)); if (!is_wp_error($response) && $response['response']['code'] === 200) { $file_contents = wp_remote_retrieve_body($response); $is_eligible = json_decode($file_contents, true); update_option('wp_adminify_addon__is_eligible_for_coupon', wp_validate_boolean($is_eligible)); return $is_eligible; } return false; } public function maybe_create_and_get_coupon() { $coupon = get_option('wp_adminify_addon__coupon'); if (!empty($coupon)) return $coupon; // communicate hit hserver get coupon $args = [ 'license' => jltwp_adminify()->_get_license(), 'action' => 'get_coupon' ]; $response = wp_remote_get(add_query_arg($args, $this->server_url)); if (!is_wp_error($response) && $response['response']['code'] === 200) { $file_contents = wp_remote_retrieve_body($response); $response_data = json_decode($file_contents, true); if (!empty($response_data)) { $coupon = [ 'id' => $response_data['id'], 'code' => $response_data['code'] ]; update_option('wp_adminify_addon__coupon', $coupon); } } return $coupon; } /** * Header */ public function header() { ?>

jltwp_adminify_addons_check(); ?>
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_addons_activate_plugin() { if (empty($_POST['plugin'])) { return; } try { $nonce = isset($_POST['nonce']) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : ''; if (!wp_verify_nonce($nonce, 'jltwp_adminify_addons_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, 'slug')); if (!in_array(dirname($plugin), $plugin_links)) { wp_send_json_error(array('mess' => __('Invalid plugin', 'adminify'))); } $result = activate_plugin($plugin); 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, ), ) ); } catch (\Error $ex) { wp_send_json_error( array( 'mess' => __('Error.', 'adminify'), array( 'error' => $ex, ), ) ); } } public function get_the_plugin_slug( $plugin ) { // If the plugin is like myplugin/myplugin.php if ( ! filter_var($plugin, FILTER_VALIDATE_URL) ) { return dirname($plugin); } // If the plugin is from wordpress.org if ( false !== strpos( $plugin, 'https://downloads.wordpress.org/plugin/' ) ) { $plugin = str_replace( 'https://downloads.wordpress.org/plugin/', '', $plugin ); return str_replace( '.zip', '', $plugin ); } // If the plugin is from local store $plugin = explode( 'plugin_slug=', $plugin ); $plugin = explode( '&', $plugin[1] ); return $plugin[0]; } /** * Upgrade Plugins required Libraries * * @author Jewel Theme */ public function jltwp_adminify_addons_upgrade_plugin() { if (empty($_POST['plugin'])) { return; } 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'; $nonce = isset($_POST['nonce']) ? sanitize_text_field(wp_unslash($_POST['nonce'])) : ''; if (!wp_verify_nonce($nonce, 'jltwp_adminify_addons_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_slug = $this->get_the_plugin_slug( $plugin ); if ( ! array_key_exists( $plugin_slug, $this->plugins_list) ) { 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 (empty($result) || empty($upgrader->result)) { wp_send_json_error( array( 'mess' => 'Something is wrong', ) ); } if (is_wp_error($result)) { wp_send_json_error( array( 'mess' => $result->get_error_message(), ) ); } $plugins = get_plugins('/' . $upgrader->result['destination_name']); $plugin_data = end($plugins); $plugin_data['slug'] = $upgrader->result['destination_name']; $plugin_data['version'] = $plugin_data['Version']; if (!empty($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 ( empty($result) || is_wp_error($result) ) { wp_send_json_error( array( 'mess' => is_wp_error($result) ? $result->get_error_message() : __('Couldn\'t upgrade', 'adminify') ) ); } $active_status = activate_plugin($plugin); if ( empty($active_status) || is_wp_error($active_status) ) { wp_send_json_error( array( 'mess' => is_wp_error($result) ? $result->get_error_message() : __('Activation Failed', 'adminify') ) ); } wp_send_json_success( array( 'mess' => __('Update success', 'adminify'), 'active' => true, ) ); } } catch (\Exception $ex) { wp_send_json_error( array( 'mess' => __('Error exception.', 'adminify'), array( 'error' => $ex, ), ) ); } } } }