File: /var/www/html/wp-content/plugins/Crocoblock-wizard/includes/modules/install-plugins/module.php
<?php
namespace Crocoblock_Wizard\Modules\Install_Plugins;
use Crocoblock_Wizard\Base\Module as Module_Base;
use Crocoblock_Wizard\Plugin as Plugin;
// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
die;
}
class Module extends Module_Base {
/**
* Returns module slug
*
* @return void
*/
public function get_slug() {
return 'install-plugins';
}
/**
* Enqueue module-specific assets
*
* @return void
*/
public function enqueue_module_assets() {
wp_enqueue_script(
'crocoblock-wizard-plugins',
CB_WIZARD_URL . 'assets/js/plugins.js',
array( 'cx-vue-ui' ),
CB_WIZARD_VERSION,
true
);
}
/**
* License page config
*
* @param array $config [description]
* @param string $subpage [description]
* @return [type] [description]
*/
public function page_config( $config = array(), $subpage = '' ) {
$skin = isset( $_GET['skin'] ) ? $_GET['skin'] : false;
$is_uploaded = isset( $_GET['is_uploaded'] ) ? $_GET['is_uploaded'] : false;
$action = ! empty( $_GET['action'] ) ? $_GET['action'] : 'full';
if ( 'full' === $action ) {
$skin_plugins = Plugin::instance()->skins->get_skin_plugins( $skin, $is_uploaded );
$all_plugins = Plugin::instance()->skins->get_all_plugins( $skin, $is_uploaded );
$prev_step = Plugin::instance()->dashboard->page_url( 'select-skin' );
$next_step = add_query_arg(
array(
'skin' => $skin,
'is_uploaded' => $is_uploaded
),
Plugin::instance()->dashboard->page_url( 'import-content' )
);
} else {
$skin_plugins = array_keys( Plugin::instance()->skins->get_plugins_for_license() );
$all_plugins = Plugin::instance()->skins->get_all_plugins();
$prev_step = Plugin::instance()->dashboard->page_url( 'license' );
$next_step = Plugin::instance()->dashboard->page_url( 'onboarding' );
}
$config['body'] = 'cbw-plugins';
$config['wrapper_css'] = 'plugins-page';
$config['is_uploaded'] = $is_uploaded;
$config['skin'] = $skin;
$config['action'] = $action;
$config['rec_plugins'] = $skin_plugins;
$config['extra_plugins'] = $this->get_rest_of_plugins( $skin_plugins, $all_plugins );
$config['all_plugins'] = $all_plugins;
$config['disabled_plugins'] = Plugin::instance()->skins->disabled_plugins();
$config['prev_step'] = $prev_step;
$config['next_step'] = $next_step;
return $config;
}
/**
* Returns rest of registered plugins
*
* @return [type] [description]
*/
public function get_rest_of_plugins( $skin_plugins, $all_plugins ) {
array_walk( $all_plugins, function( &$plugin, $slug ) use ( $skin_plugins ) {
if ( in_array( $slug, $skin_plugins ) ) {
$plugin = false;
}
} );
return array_keys( array_filter( $all_plugins ) );
}
/**
* Add license component template
*
* @param array $templates [description]
* @param string $subpage [description]
* @return [type] [description]
*/
public function page_templates( $templates = array(), $subpage = '' ) {
$templates['plugins'] = 'install-plugins/main';
$templates['select_plugins'] = 'install-plugins/select';
$templates['install_plugins'] = 'install-plugins/install';
return $templates;
}
/**
* Install plugin
*
* @return void
*/
public function install_plugin() {
if ( ! current_user_can( 'install_plugins' ) ) {
wp_send_json_error(
array( 'message' => esc_html__( 'You don\'t have permissions to do this', 'crocoblock-wizard' ) )
);
}
$plugin = isset( $_REQUEST['plugin'] ) ? esc_attr( $_REQUEST['plugin'] ) : false;
$skin = isset( $_REQUEST['skin'] ) ? esc_attr( $_REQUEST['skin'] ) : false;
$is_uploaded = isset( $_REQUEST['is_uploaded'] ) ? esc_attr( $_REQUEST['is_uploaded'] ) : false;
$installer = new Installer( $plugin );
$installed = $installer->do_plugin_install();
if ( ! $installed ) {
wp_send_json_error( array( 'message' => $installer->get_log() ) );
} else {
wp_send_json_success( array( 'message' => $installer->get_log() ) );
}
}
}