????
Current Path : /home/darkwebsol/public_ftp/sports4lux.com/wp-content/plugins/ocean-extra/includes/ |
Current File : /home/darkwebsol/public_ftp/sports4lux.com/wp-content/plugins/ocean-extra/includes/plugins-tab.php |
<?php /** * OceanWP Plugins Tab * * @package OceanWP WordPress theme */ // Exit if accessed directly. if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Class OceanWP_Plugins_Tab * * Adds a custom tab to the plugin install screen to display OceanWP plugins. */ class OceanWP_Plugins_Tab { /** * OceanWP_Plugins_Tab constructor. * * Hooks the methods to the appropriate actions and filters. */ public function __construct() { add_filter( 'install_plugins_tabs', array( $this, 'add_oceanwp_plugin_tab' ) ); add_action( 'install_plugins_oceanwp_plugins_tab', array( $this, 'display_oceanwp_plugins_tab_content' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); add_action( 'wp_ajax_oceanwp_install_plugin', array( $this, 'ajax_install_plugin' ) ); add_action( 'wp_ajax_oceanwp_activate_plugin', array( $this, 'ajax_activate_plugin' ) ); } /** * Enqueues the necessary scripts for handling AJAX plugin installation. */ public function enqueue_scripts( $hook_suffix ) { // Only enqueue the scripts on the plugin installation page and our custom tab. if ( 'plugin-install.php' === $hook_suffix && isset( $_GET['tab'] ) && 'oceanwp_plugins_tab' === $_GET['tab'] ) { wp_enqueue_script( 'plugin-install' ); wp_enqueue_script( 'updates' ); wp_enqueue_script( 'oceanwp-plugin-install', plugin_dir_url( __FILE__ ) . '../assets/js/oceanwp-plugin-install.js', array( 'jquery' ), OE_VERSION, true ); wp_localize_script( 'oceanwp-plugin-install', 'oceanwpPluginInstall', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'plugin_install_nonce' ), ) ); } } /** * Adds a custom tab to the plugin install screen. * * @param array $tabs The existing tabs. * @return array The modified tabs. */ public function add_oceanwp_plugin_tab( $tabs ) { // Check if the current user has the capability to install plugins. if ( apply_filters( 'oceanwp_show_plugin_tab', current_user_can( 'install_plugins' ) ) ) { $tabs['oceanwp_plugins_tab'] = __( 'For OceanWP', 'ocean-extra' ); // Add new tab. } return $tabs; } /** * Displays the content for the custom OceanWP plugins tab. */ public function display_oceanwp_plugins_tab_content() { if ( ! current_user_can( 'install_plugins' ) ) { wp_die( __( 'You do not have sufficient permissions to access this page.', 'ocean-extra' ) ); } ?> <div class="wrap"> <h2><?php _e( 'For OceanWP', 'ocean-extra' ); ?></h2> <div id="oceanwp-plugin-list"> <?php // Query Plugins by Author. $api = plugins_api( 'query_plugins', array( 'author' => 'oceanwp', 'per_page' => 20, ) ); if ( is_wp_error( $api ) ) { echo '<div class="error"><p>' . $api->get_error_message() . '</p></div>'; } else { $this->ocean_display_plugins_table( $api->plugins ); } ?> </div> </div> <?php } /** * Displays the plugins using the default WordPress layout. * * @param array $plugins The plugins to display. */ private function ocean_display_plugins_table( $plugins ) { global $wp_list_table; if ( ! class_exists( 'WP_Plugin_Install_List_Table' ) ) { require_once ABSPATH . 'wp-admin/includes/class-wp-plugin-install-list-table.php'; } $wp_list_table = new WP_Plugin_Install_List_Table( array( 'screen' => 'plugin-install', ) ); $wp_list_table->items = $plugins; $wp_list_table->display(); } /** * Handles the AJAX request to install a plugin. */ public function ajax_install_plugin() { check_ajax_referer( 'plugin_install_nonce', '_ajax_nonce' ); if ( ! current_user_can( 'install_plugins' ) ) { wp_send_json_error( __( 'You do not have sufficient permissions to install plugins.', 'ocean-extra' ) ); } include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; include_once ABSPATH . 'wp-admin/includes/plugin-install.php'; $slug = sanitize_text_field( $_POST['slug'] ); $api = plugins_api( 'plugin_information', array( 'slug' => $slug, 'fields' => array( 'sections' => false, ), ) ); if ( is_wp_error( $api ) ) { wp_send_json_error( $api->get_error_message() ); } $skin = new Automatic_Upgrader_Skin(); $upgrader = new Plugin_Upgrader( $skin ); $result = $upgrader->install( $api->download_link ); if ( is_wp_error( $result ) ) { wp_send_json_error( $result->get_error_message() ); } wp_send_json_success(); } /** * Handles the AJAX request to activate a plugin. */ public function ajax_activate_plugin() { check_ajax_referer( 'plugin_install_nonce', '_ajax_nonce' ); if ( ! current_user_can( 'activate_plugins' ) ) { wp_send_json_error( __( 'You do not have sufficient permissions to activate plugins.', 'ocean-extra' ) ); } $slug = sanitize_text_field( $_POST['slug'] ); $plugin_file = $this->get_plugin_file_path( $slug ); if ( ! $plugin_file || ! file_exists( WP_PLUGIN_DIR . '/' . $plugin_file ) ) { wp_send_json_error( __( 'Plugin file does not exist.', 'ocean-extra' ) ); } $result = activate_plugin( $plugin_file ); if ( is_wp_error( $result ) ) { wp_send_json_error( $result->get_error_message() ); } wp_send_json_success(); } /** * Get the plugin file path based on the plugin slug. * * @param string $slug The plugin slug. * @return string|false The plugin file path or false if not found. */ private function get_plugin_file_path( $slug ) { $plugins = get_plugins(); foreach ( $plugins as $plugin_file => $plugin_data ) { if ( strpos( $plugin_file, $slug . '/' ) !== false || strpos( $plugin_file, $slug . '.php' ) !== false ) { return $plugin_file; } } return false; } } // Initialize the class new OceanWP_Plugins_Tab();