index of
/
home
/
thefkyzp
/
www
/
wp-content
/
plugins
/
ocean-extra
/
includes
/
panel
/
assets
/
File: /home/thefkyzp/www/wp-content/plugins/ocean-extra/includes/panel/assets/class-plugin-installer.php
<?php /** * Plugin Installer * * @package Ocean_Extra * @category Core * @author Darren Cooney * @link https://github.com/dcooney/wordpress-plugin-installer */ // Exit if accessed directly if ( ! defined( 'ABSPATH' ) ) { exit; } // Start Class class Ocean_Extra_Plugin_Installer { public function start() { add_action( 'wp_ajax_oe_plugin_installer', array( $this, 'oe_plugin_installer' ) ); add_action( 'wp_ajax_oe_plugin_activation', array( $this, 'oe_plugin_activation' ) ); add_action( 'wp_ajax_oe_premium_plugin_activation', array( $this, 'oe_premium_plugin_activation' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); } /** * Initialize the display of the free plugins * * @since 1.0.0 */ public static function init( $plugins ) { ?> <?php require_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); foreach( $plugins as $plugin ) : $button_classes = 'install button'; $button_text = __( 'Install Now', 'ocean-extra' ); $api = plugins_api( 'plugin_information', array( 'slug' => sanitize_file_name( $plugin['slug'] ), 'fields' => array( 'short_description' => true, 'sections' => false, 'requires' => false, 'downloaded' => true, 'last_updated' => false, 'added' => false, 'tags' => false, 'compatibility' => false, 'homepage' => false, 'donate_link' => false, 'icons' => true, 'banners' => true, ), ) ); if ( ! is_wp_error( $api ) ) { // confirm error free $main_plugin_file = Ocean_Extra_Plugin_Installer::get_plugin_file( $plugin['slug'] ); // Get main plugin file if ( self::check_file_extension( $main_plugin_file ) ) { // check file extension if ( is_plugin_active( $main_plugin_file ) ) { // plugin activation, confirmed! $button_classes = 'button disabled'; $button_text = __('Activated', 'ocean-extra'); } else { // It's installed, let's activate it $button_classes = 'activate button button-primary'; $button_text = __('Activate', 'ocean-extra'); } } // Send plugin data to template self::render_template( $plugin, $api, $button_text, $button_classes ); } endforeach; ?> <?php } /** * Render display template for each free plugin * * @since 1.0.0 */ public static function render_template( $plugin, $api, $button_text, $button_classes ) { ?> <div class="plugin"> <div class="plugin-wrap"> <img src="<?php echo $api->icons['1x']; ?>" alt=""> <h2><?php echo $api->name; ?></h2> <p><?php echo $api->short_description; ?></p> <p class="plugin-author"><?php _e( 'By', 'ocean-extra' ); ?> <?php echo $api->author; ?></p> </div> <ul class="activation-row"> <li> <a class="<?php echo $button_classes; ?>" data-slug="<?php echo $api->slug; ?>" data-name="<?php echo $api->name; ?>" href="<?php echo get_admin_url(); ?>update.php?action=install-plugin&plugin=<?php echo $api->slug; ?>&_wpnonce=<?php echo wp_create_nonce('install-plugin_'. $api->slug) ?>"><?php echo $button_text; ?></a> </li> <li> <a href="https://wordpress.org/plugins/<?php echo $api->slug; ?>/" target="_blank"><?php _e( 'More Details', 'ocean-extra' ); ?></a> </li> </ul> </div> <?php } /** * Initialize the display of the premium plugins * * @since 1.0.0 */ public static function init_premium( $plugins ) { ?> <?php foreach( $plugins as $plugin ) : $button_classes = ''; $button_text = ''; $api = array( 'slug' => isset( $plugin['slug'] ) ? $plugin['slug'] : '', 'url' => isset( $plugin['url'] ) ? $plugin['url'] : '', 'full_url' => isset( $plugin['full_url'] ) ? $plugin['full_url'] : '', 'name' => isset( $plugin['name'] ) ? $plugin['name'] : '', 'description' => isset( $plugin['description'] ) ? $plugin['description'] : '', 'icons' => isset( $plugin['icons'] ) ? $plugin['icons'] : '', 'author' => isset( $plugin['author'] ) ? $plugin['author'] : '', 'author_url' => isset( $plugin['author_url'] ) ? $plugin['author_url'] : '', ); if ( ! is_wp_error( $api ) ) { // confirm error free $main_plugin_file = Ocean_Extra_Plugin_Installer::get_plugin_file( $plugin['slug'] ); // Get main plugin file if ( self::check_file_extension( $main_plugin_file ) ) { // check file extension if ( is_plugin_active( $main_plugin_file ) ) { // plugin activation, confirmed! $button_classes = 'button disabled'; $button_text = __('Activated', 'ocean-extra'); } else { // It's installed, let's activate it $button_classes = 'activate button button-primary premium-activation'; $button_text = __('Activate', 'ocean-extra'); } } // Send plugin data to template self::render_premium_template( $plugin, $api, $button_text, $button_classes ); } endforeach; ?> <?php } /** * Render display template for each premium plugin * * @since 1.0.0 */ public static function render_premium_template( $plugin, $api, $button_text, $button_classes ) { // Var $slug = $api['slug']; $url = $api['url']; $full_url = $api['full_url']; $name = $api['name']; $description = $api['description']; $icons = $api['icons']; $author = $api['author']; $author_url = $api['author_url']; // Affiliate link $ref_url = ''; $aff_ref = apply_filters( 'ocean_affiliate_ref', $ref_url ); // Add & is has referal link if ( $aff_ref ) { $if_ref = '&'; } else { $if_ref = '?'; } ?> <div class="plugin"> <div class="plugin-wrap"> <?php if ( $icons ) { ?> <img src="<?php echo $icons; ?>" alt="<?php echo $name; ?>" /> <?php } if ( $name ) { ?> <h2><?php echo $name; ?></h2> <?php } if ( $description ) { ?> <p><?php echo $description; ?></p> <?php } if ( $author ) { ?> <p class="plugin-author"><?php _e( 'By', 'ocean-extra' ); ?> <a href="<?php echo $author_url; ?>"><?php echo $author; ?></a></p> <?php } ?> </div> <ul class="activation-row"> <li> <?php // Get main plugin file $main_plugin_file = Ocean_Extra_Plugin_Installer::get_plugin_file( $plugin['slug'] ); // If the plugin is installed if ( self::check_file_extension( $main_plugin_file ) ) { ?> <a class="<?php echo $button_classes; ?>" data-slug="<?php echo $slug; ?>" data-name="<?php echo $name; ?>" href="<?php echo get_admin_url(); ?>update.php?action=install-plugin&plugin=<?php echo $slug; ?>&_wpnonce=<?php echo wp_create_nonce('install-plugin_'. $slug) ?>"><?php echo $button_text; ?></a> <?php // If the plugin is not installed } else { // If full url, used for the rec. plugins tab if ( $full_url ) { ?> <a class="button premium-link" href="<?php echo $full_url; ?>" target="_blank"><?php _e( 'Get This Plugin', 'ocean-extra' ); ?></a> <?php } else { ?> <a class="button premium-link" href="<?php echo $url; ?><?php echo $slug; ?>/<?php echo esc_attr( $aff_ref ); ?><?php echo $if_ref; ?>utm_source=admin-extensions&utm_medium=extension&utm_campaign=OWP-extensions-page&utm_content=<?php echo $name; ?>" target="_blank"><?php _e( 'Get This Add On', 'ocean-extra' ); ?></a> <?php } } ?> </li> <li> <?php // If full url, used for the rec. plugins tab if ( $full_url ) { ?> <a href="<?php echo $full_url; ?>" target="_blank"><?php _e( 'More Details', 'ocean-extra' ); ?></a> <?php } else { ?> <a href="<?php echo $url; ?><?php echo $slug; ?>/<?php echo esc_attr( $aff_ref ); ?><?php echo $if_ref; ?>utm_source=admin-extensions&utm_medium=extension&utm_campaign=OWP-extensions-page&utm_content=<?php echo $name; ?>" target="_blank"><?php _e( 'More Details', 'ocean-extra' ); ?></a> <?php } ?> </li> <li class="ribbon"> <?php _e( 'Premium', 'ocean-extra' ); ?> </li> </ul> </div> <?php } /** * An Ajax method for installing plugin * * @since 1.0.0 */ public function oe_plugin_installer() { if ( ! current_user_can('install_plugins') ) { wp_die( __( 'Sorry, you are not allowed to install plugins on this site.', 'ocean-extra' ) ); } $nonce = $_POST["nonce"]; $plugin = $_POST["plugin"]; // Check our nonce, if they don't match then bounce! if ( ! wp_verify_nonce( $nonce, 'oe_installer_nonce' ) ) { wp_die( __( 'Error - unable to verify nonce, please try again.', 'ocean-extra') ); } // Include required libs for installation 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' ); // Get Plugin Info $api = plugins_api( 'plugin_information', array( 'slug' => $plugin, 'fields' => array( 'short_description' => 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, ), ) ); $skin = new WP_Ajax_Upgrader_Skin(); $upgrader = new Plugin_Upgrader( $skin ); $upgrader->install( $api->download_link ); if ( $api->name ) { $status = 'success'; $msg = $api->name .' successfully installed.'; } else { $status = 'failed'; $msg = 'There was an error installing '. $api->name .'.'; } $json = array( 'status' => $status, 'msg' => $msg, ); wp_send_json( $json ); } /** * Activate plugin via Ajax * * @since 1.0.0 */ public function oe_plugin_activation() { if ( ! current_user_can( 'install_plugins' ) ) { wp_die( __( 'Sorry, you are not allowed to activate plugins on this site.', 'ocean-extra' ) ); } $nonce = $_POST["nonce"]; $plugin = $_POST["plugin"]; // Check our nonce, if they don't match then bounce! if ( ! wp_verify_nonce( $nonce, 'oe_installer_nonce' ) ) { die( __( 'Error - unable to verify nonce, please try again.', 'ocean-extra' ) ); } // Include required libs for activation 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-plugin-upgrader.php' ); // Get Plugin Info $api = plugins_api( 'plugin_information', array( 'slug' => $plugin, 'fields' => array( 'short_description' => 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, ), ) ); if ( $api->name ) { $main_plugin_file = Ocean_Extra_Plugin_Installer::get_plugin_file( $plugin ); $status = 'success'; if ( $main_plugin_file ) { activate_plugin( $main_plugin_file ); $msg = $api->name .' successfully activated.'; } } else { $status = 'failed'; $msg = 'There was an error activating '. $api->name .'.'; } $json = array( 'status' => $status, 'msg' => $msg, ); wp_send_json( $json ); } /** * Activate premium plugin via Ajax * * @since 1.0.0 */ public function oe_premium_plugin_activation() { if ( ! current_user_can( 'install_plugins' ) ) { wp_die( __( 'Sorry, you are not allowed to activate plugins on this site.', 'ocean-extra' ) ); } $nonce = $_POST["nonce"]; $plugin = $_POST["plugin"]; // Check our nonce, if they don't match then bounce! if ( ! wp_verify_nonce( $nonce, 'oe_installer_nonce' ) ) { die( __( 'Error - unable to verify nonce, please try again.', 'ocean-extra' ) ); } // Include required libs for activation require_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); require_once( ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php' ); // Get Plugin Info $api = array( 'slug' => $plugin, 'name' => $plugin['name'], ); if ( $api['name'] ) { $main_plugin_file = Ocean_Extra_Plugin_Installer::get_plugin_file( $plugin ); $status = 'success'; if ( $main_plugin_file ) { activate_plugin( $main_plugin_file ); $msg = $api['name'] .' successfully activated.'; } } else { $status = 'failed'; $msg = 'There was an error activating '. $api['name'] .'.'; } $json = array( 'status' => $status, 'msg' => $msg, ); wp_send_json( $json ); } /** * A method to get the main plugin file * * @since 1.0.0 */ public static function get_plugin_file( $plugin_slug ) { require_once( ABSPATH . '/wp-admin/includes/plugin.php' ); // Load plugin lib $plugins = get_plugins(); foreach( $plugins as $plugin_file => $plugin_info ) { // Get the basename of the plugin e.g. [askismet]/askismet.php $slug = dirname( plugin_basename( $plugin_file ) ); if( $slug ) { if ( $slug == $plugin_slug ) { return $plugin_file; // If $slug = $plugin_name } } } return null; } /** * A helper to check file extension * * @since 1.0.0 */ public static function check_file_extension( $filename ) { if ( substr( strrchr( $filename, '.' ), 1 ) === 'php' ) { // has .php exension return true; } else { // ./wp-content/plugins return false; } } /** * Load scripts * * @since 1.0.0 */ public static function enqueue_scripts( $hook ) { // Only load scripts when needed if ( OE_ADMIN_PANEL_HOOK_PREFIX . '-extensions' != $hook && OE_ADMIN_PANEL_HOOK_PREFIX . '-rec-plugins' != $hook ) { return; } // JS wp_enqueue_script( 'oceanwp-installer', plugins_url( '/js/installer.min.js', __FILE__ ), array( 'jquery' ) ); wp_localize_script( 'oceanwp-installer', 'oe_installer_localize', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'admin_nonce' => wp_create_nonce( 'oe_installer_nonce' ), 'install_now' => __( 'Are you sure you want to install this plugin?', 'ocean-extra' ), 'install_btn' => __( 'Install Now', 'ocean-extra' ), 'activate_btn' => __( 'Activate', 'ocean-extra' ), 'installed_btn' => __( 'Activated', 'ocean-extra' ) ) ); // CSS wp_enqueue_style( 'oceanwp-installer', plugins_url( '/css/installer.min.css', __FILE__ ) ); } } // initialize $ocean_extra_plugin_installer = new Ocean_Extra_Plugin_Installer(); $ocean_extra_plugin_installer->start();