File "modules.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/mojo-marketplace-wp-plugin/inc/cli/modules.php
File size: 4.59 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Class EIG_WP_CLI_Module
*/
class EIG_WP_CLI_Module extends EIG_WP_CLI_Command {
/**
* @var string - action for module, default is 'list'.
*/
protected $action;
/**
* @var string - selected module to modify (not used in list/details), default is empty string.
*/
protected $module;
/**
* @var string - type of response to return (human or JSON)
*/
protected $response_type = 'human';
/**
* @var bool - whether or not to bypass reset confirmation.
*/
protected $no_confirm = false;
/**
* @var string - key for option persisted in DB
*/
protected static $module_option = 'eig_active_modules';
/**
* Module command switchboard.
*
* @param null $args
* @param array $assoc_args
*/
public function __invoke( $args, $assoc_args ) {
// Setup class parameters
$this->init_class_variables( $args, $assoc_args );
switch ( $this->action ) {
case 'reset':
$this->reset();
break;
case 'activate':
case 'enable':
$this->activate();
$this->module_status();
break;
case 'deactivate':
case 'disable':
$this->deactivate();
$this->module_status();
break;
case 'get':
case 'status':
$this->module_status();
break;
case 'details':
case 'list':
default:
$this->module_list();
break;
}
}
/**
* @param array $args - passthrough $args from class invocation.
* @param array $assoc_args - passthrough $assoc_args from class invocation.
*/
protected function init_class_variables( $args, $assoc_args ) {
$this->action = ( ! empty( $args[0] ) && is_string( $args[0] ) ) ? $args[0] : 'list';
$this->module = ( ! empty( $args[1] ) && is_string( $args[1] ) ) ? $args[1] : '';
if ( ! empty( $assoc_args['response'] )
&& 'json' === strtolower( $assoc_args['response'] )
) {
$this->response_type = 'json';
}
if ( isset( $assoc_args['no_confirm'] ) ) {
$this->no_confirm = true;
}
}
/**
* wp {alias} module activate
*
* Run EIG module activation via Manager class
*/
protected function activate() {
$this->colorize_log( 'Activating ' . $this->module . '...' );
Endurance_ModuleManager::activate( $this->module );
$this->colorize_log( 'Checking status...' );
}
/**
* wp {alias} module deactivate
*
* Run EIG module deactivation via Manager class
*/
protected function deactivate() {
$this->colorize_log( 'Activating ' . $this->module . '...' );
Endurance_ModuleManager::deactivate( $this->module );
$this->colorize_log( 'Checking status...' );
}
/**
* wp {alias} module status (optional --response=json)
*
* Get module status. Runs after Activate or Deactivate.
*/
protected function module_status() {
if ( 'json' === $this->response_type ) {
$this->machine_module_status();
} else {
$this->human_module_status();
}
}
/**
* Check module state and log human-readable status to terminal
*/
protected function human_module_status() {
$data = Endurance_ModuleRegistry::get( $this->module );
if ( ! empty( $data ) && isset( $data['isActive'] ) ) {
if ( $data['isActive'] ) {
$this->colorize_log( $data['label'] . ' is currently active.' );
} else {
$this->colorize_log( $data['label'] . ' is not currently active.' );
}
} else {
$this->error( $this->module . ' was not found.' );
}
}
/**
* Check module state and return JSON
*/
protected function machine_module_status() {
$data = Endurance_ModuleRegistry::get( $this->module );
if ( ! empty( $data ) ) {
$this->log_to_json( $data );
} else {
$this->log_to_json( array( $this->module => 'not_found' ) );
}
}
/**
*
*/
protected function module_list() {
if ( 'json' === $this->response_type ) {
$this->machine_module_list();
} else {
$this->human_module_list();
}
}
/**
* Check all module states and return human-readable table to terminal
*/
protected function human_module_list() {
$raw = Endurance_ModuleRegistry::collection()->all();
foreach ( $raw as $module ) {
unset( $module['callback'] );
$this->table( array_reverse( $module ) );
}
}
/**
* Check all module states and return JSON
*/
protected function machine_module_list() {
$data = Endurance_ModuleRegistry::collection()->all();
$this->log_to_json( $data );
}
/**
* Reset all EIG modules to their default isActive state.
*/
protected function reset() {
if ( ! $this->no_confirm ) {
$this->confirm( 'Are you sure you want to reset all modules to their default active state?' );
}
$deleted = delete_option( self::$module_option );
if ( $deleted ) {
$this->success( 'EIG modules reset.' );
} else {
$this->warning( 'Failed to reset EIG modules.' );
}
}
}