File "branding.php"
Full Path: /home/vantageo/public_html/cache/cache/.wp-cli/wp-content/plugins/mojo-marketplace-wp-plugin/inc/cli/branding.php
File size: 4.44 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Class EIG_WP_CLI_Branding
*
* This class is instantiated in /inc/cli-init.php
*/
class EIG_WP_CLI_Branding extends EIG_WP_CLI_Command {
/**
* @var string - Stores brand slug
* @see EIG_WP_CLI_Loader->brand_aliases & EIG_WP_CLI_Loader->must_use_aliases
*/
protected static $option_key = 'mm_brand';
/**
* @var string - Stores SVG of current brand's icon in database.
*/
protected static $icon_transient_key = 'mm_icon_hash';
/**
* @var string - Remote location of branding.json config file.
*/
protected static $api_branding_file = MM_ASSETS_URL . 'json/branding.json';
/**
* @var string - User-provided action.
*/
protected $action;
/**
* @var string - User-provided brand.
*/
protected $brand;
/**
* Manage Endurance Branding and Conditional Connections
*
* @param array $args
* @param array $assoc_args
*
* @throws \WP_CLI\ExitException
*/
public function __invoke( $args, $assoc_args ) {
/**
* Initialize $this->action & $this->brand
*/
$this->init_class_params( $args, $assoc_args );
/**
* Route Sub-commands to Methods
*/
switch ( $this->action ) {
case 'update':
$this->update();
break;
case 'remove':
$this->remove();
break;
}
}
/**
* Initialize $this->action, $this->brand and other class vars.
*
* @param array $args
* @param array $assoc_args
*/
protected function init_class_params( $args, $assoc_args ) {
/**
* Validate & Decide $this->action + $this->brand
*/
if ( isset( $args[0] ) && 'update' === $args[0] ) {
$this->action = $args[0];
if ( ! empty( $args[1] ) ) {
$this->brand = $args[1];
} else {
$this->error( 'No brand identified to update.' );
}
} elseif ( isset( $args[0] ) && 'remove' === $args[0] ) {
$this->action = 'remove';
} else {
if ( ! empty( $assoc_args['update'] ) ) {
$this->action = 'update';
$this->brand = $assoc_args['update'];
} elseif ( isset( $assoc_args['remove'] ) ) {
$this->action = 'remove';
} else {
$this->error( 'No valid action provided.' );
}
}
}
/**
* wp {alias} branding update {brand}
* -- -- -- OR -- -- --
* wp {alias} branding --update={brand}
*
* @throws \WP_CLI\ExitException
*/
protected function update() {
$valid_brands = $this->get_brands();
$existing_brand = get_option( static::$option_key, null );
if ( in_array( $this->brand, $valid_brands ) ) {
/**
* Check if passed brand param matches saved brand
*/
if ( $this->brand === $existing_brand ) {
$this->success( 'Branding already set to "' . $this->brand . '", wiping transients...' );
delete_transient( static::$icon_transient_key );
\WP_CLI::halt( 200 );
} elseif ( update_option( static::$option_key, $this->brand ) ) {
delete_transient( static::$icon_transient_key );
$this->success( 'Plugin branding updated to: ' . $this->brand );
} else {
$this->error( 'Failed to update plugin branding to: ' . $this->brand );
}
} else {
if ( ! empty( $valid_brands ) ) {
$lowercase = array_map( 'strtolower', $valid_brands );
if ( in_array( $this->brand, $lowercase ) ) {
$this->warning( 'WRONG CASE! Try that string again with the correct case.' );
}
$this->colorize_log( 'Valid brands: ' );
$this->table( $valid_brands, array( '---', 'BRAND SLUG' ) );
}
$this->error( 'Didn\'t receive valid brand in subcommand or flag value.' );
}
}
/**
* wp {alias} branding remove
* -- -- -- OR -- -- --
* wp {alias} branding --remove
*/
protected function remove() {
if ( delete_option( static::$option_key ) ) {
delete_transient( static::$icon_transient_key );
$this->success( 'Plugin branding removed successfully.' );
} else {
$this->warning( 'No plugin branding found. Try "wp {alias} branding update {brand}"' );
if ( ! empty( $valid_brands = $this->get_brands() ) ) {
$this->colorize_log( 'Valid brands: ' );
$this->table( $valid_brands, array( '---', 'BRAND SLUG' ) );
}
}
}
/**
* Helper to hit Mojo API Cache for JSON Branding Map.
*
* @return array
*/
protected function get_brands() {
$valid_brands = array();
$brands = mm_api_cache( static::$api_branding_file );
if ( ! is_wp_error( $brands ) && $brands = json_decode( $brands['body'] ) ) {
$brands = (array) $brands;
while ( false !== ( $brand = array_search( 'default', $brands ) ) ) {
unset( $brands[ $brand ] );
}
$valid_brands = array_keys( $brands );
}
return $valid_brands;
}
}