Parse the terms came from remote request. *
Verify several configurations so that it wont create issues further. *
Prepare cases (imp) Whole logic to decide plugins state. * * @param type $plugin_remote_config . */ public function __construct( $plugin_remote_config ) { $this->config = $plugin_remote_config; $this->populate_properties(); $this->parse_terms(); $this->verify_configurations( $this->config ); $this->prepare_cases(); parent::__construct( $this ); } /** * Populate properties and sets up variables */ public function populate_properties() { if ( $this->config && is_object( $this->config ) ) { $config_as_array = (array) $this->config; $current_slug = key( $config_as_array ); $this->title = $this->config->$current_slug->title; $this->pluginbasename = $this->config->$current_slug->plugin_basename; $this->is_in_repo = $this->config->$current_slug->is_in_repo; $this->more_details_link = $this->config->$current_slug->more_details_link; $this->title_link = $this->config->$current_slug->title_link; $this->base_terms = $this->config->$current_slug->terms; $this->current_version = $this->config->$current_slug->version; $this->buy_now_link = $this->config->$current_slug->buy_now_link; $this->status_link = $this->config->$current_slug->status_link; $this->download_url = $this->config->$current_slug->download_url; $this->Edd_slug = '' . preg_replace( '/[^a-zA-Z0-9_\s]/', '', str_replace( ' ', '_', strtolower( $this->title ) ) ); } } /** * Parse WP term object and make the array out of it so that it can be utilized in filtering */ public function parse_terms() { if ( $this->config && is_object( $this->config ) ) { $config_as_array = (array) $this->config; $current_slug = key( $config_as_array ); if ( $this->config->$current_slug->terms && count( $this->config->$current_slug->terms ) > 0 ) { foreach ( $this->config->$current_slug->terms as $term => $term_obj ) { $get_all_slugs = wp_list_pluck( $term_obj, 'slug' ); if ( ! empty( $get_all_slugs ) ) { $get_terms = wp_list_pluck( $term_obj, 'slug' ); if ( $get_terms && count( $get_terms ) > 0 ) { foreach ( $get_terms as $term_single ) { array_push( $this->term, $term_single ); } } } } } } } /** * Verify remote configs so that it will be shown and worked perfect with the current structure */ public function verify_configurations() { if ( $this->config && is_object( $this->config ) ) { $config_as_array = (array) $this->config; $current_slug = key( $config_as_array ); if ( ! $this->config->$current_slug->icon_full_url ) { $this->icon_full_url = plugin_dir_url( dirname( ( __FILE__ ) ) ) . 'img/noimage.jpg'; } } } /** * Prepare case * As we are handling several scenarios to the dashboard screen so to make grid actions we need to have exact state of a product *
It means we need to parse info from the core wp about different plugin states. *
Taking decisions on the condition where the code lies. *
Different state can be: Update available, uninstalled, installed, inactive, active, license exp. *
* * @since 1.0.0 */ public function prepare_cases() { if ( $this->is_plugin_installed() ) { $this->button_config = array(); $this->status_config = array( __( 'Plugin Is Installed.', 'xlplugins' ) ); } else { if ( ! $this->is_plugin_in_wp() ) { $this->button_config = array( 'state' => 'button-primary', 'text' => __( 'Get Add-On', 'xlplugins' ), 'url' => $this->buy_now_link, ); $this->status_config = array( sprintf( __( 'Available For Install. Download Now', 'xlplugins' ), $this->status_link ) ); } else { $this->button_config = array( 'state' => 'button-primary', 'text' => __( 'Get Add-On', 'xlplugins' ), 'url' => $this->buy_now_link, ); $this->status_config = array( sprintf( __( 'License Not Available. Purchase Now', 'xlplugins' ), $this->status_link ) ); } } /** Preserving Previous logic to create dynamic status and button config */ // if ($this->is_plugin_installed()) { // // // if (!$this->is_update_available()) { // // $this->button_config = array(); // $this->status_config = array(__('Plugin is installed.', 'xlplugins')); // array_push($this->term, 'purchased'); // } else { // // $this->button_config = array( // 'state' => 'update-now', // 'text' => __('Update Now', 'xlplugins'), // 'url' => wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=' . $this->pluginbasename), 'upgrade-plugin_' . $this->pluginbasename) // ); // // $this->status_config = array(__('Update Available', 'xlplugins')); // array_push($this->term, 'purchased'); // } // // if (!$this->is_plugin_in_wp()) { // // if (!$this->is_license_exists()) { // // $this->button_config = array( // 'state' => 'button-primary', // 'text' => __('Get Add-On', 'xlplugins'), // 'url' => $this->buy_now_link // ); // // $this->status_config = array(sprintf(__('License Not Available. Purchase Now', 'xlplugins'),$this->status_link)); // } else { // // // if ($this->is_license_active()) { // // // // if (!$this->is_update_available()) { // // $this->button_config = array(); // $this->status_config = array(__('Plugin is installed.', 'xlplugins')); // } // // else { // // $this->button_config = array( // 'state' => 'update-now', // 'text' => __('Update Now', 'xlplugins'), // 'url' => wp_nonce_url(self_admin_url('update.php?action=upgrade-plugin&plugin=' . $this->pluginbasename), 'upgrade-plugin_' . $this->pluginbasename) // ); // // $this->status_config = array(__('Update Available', 'xlplugins')); // array_push($this->term, 'purchased'); // } // } else { // // if ($this->is_license_expired()) { // // $this->button_config = array( // 'state' => 'button-primary', // 'text' => __('Get Add-On', 'xlplugins'), // 'url' => $this->buy_now_link // ); // // $this->status_config = array(__('License Key Expired.Renew Now', 'xlplugins')); // array_push($this->term, 'purchased'); // } else { // // if ($this->is_license_invalid()) { // // $this->button_config = array( // 'state' => 'button-primary', // 'text' => __('Get Add-On', 'xlplugins'), // 'url' => $this->buy_now_link // ); // // $this->status_config = array(__('License Key invalid.Enter or Purchase License Key', 'xlplugins')); // array_push($this->term, 'purchased'); // } // } // } // } // } // // // if ($this->is_plugin_activated()) { // $this->plugin_state_config = array('deactivate' => array( // 'text' => __('Deactivate', 'xlplugins'), // 'after_link' => sprintf('', $this->pluginbasename), // 'class' => 'xl_plugins_deactivate', // 'wrapperClass' => 'deactivate', // 'url' => wp_nonce_url('plugins.php?action=deactivate&plugin=' . $this->pluginbasename . '&plugin_status=all&paged=1&', 'deactivate-plugin_' . $this->pluginbasename) // )); // } else { // $this->plugin_state_config = array('activate' => array( // 'text' => __('Activate', 'xlplugins'), // 'after_link' => '', // 'wrapperClass' => '', // 'class' => '', // 'url' => wp_nonce_url('plugins.php?action=activate&plugin=' . $this->pluginbasename . '&plugin_status=all&paged=1&', 'activate-plugin_' . $this->pluginbasename) // ), 'delete' => array( // 'text' => __('Delete', 'xlplugins'), // 'after_link' => '', // 'wrapperClass' => '', // 'class' => 'xl_plugins_deactivate', // 'url' => wp_nonce_url('plugins.php?action=delete-selected&checked[]=' . $this->pluginbasename . '&plugin_status=all&paged=1&', 'bulk-plugins') // )); // } // // // // // } else { // // // if (!$this->is_plugin_in_wp()) { // // // if (!$this->is_license_exists()) { // // $this->button_config = array( // 'state' => 'button-primary', // 'text' => __('Get Add-On', 'xlplugins'), // 'url' => $this->buy_now_link // ); // // $this->status_config = array(sprintf(__('License Not Available. Purchase Now', 'xlplugins'),$this->status_link)); // } else { // // // if ($this->is_license_active()) { // $this->button_config = array( // 'state' => 'button-primary', // 'text' => __('Get Add-On', 'xlplugins'), // 'url' => $this->buy_now_link, // // 'url' => wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $this->pluginbasename . "&xl=1"), 'install-plugin_' . $this->pluginbasename), // ); // // $this->status_config = array(sprintf(__('Available For Install. Download Now', 'xlplugins'),$this->status_link)); // array_push($this->term, 'purchased'); // } else { // if ($this->is_license_expired()) { // $this->button_config = array( // 'state' => 'button-primary', // 'text' => __('Get Add-On', 'xlplugins'), // 'url' => $this->buy_now_link // ); // // $this->status_config = array(__('License Key Expired.Renew Now'), 'xlplugins'); // array_push($this->term, 'purchased'); // } else { // if ($this->is_license_invalid()) { // $this->button_config = array( // 'state' => 'button-primary', // 'text' => __('Get Add-On', 'xlplugins'), // 'url' => $this->buy_now_link // ); // // $this->status_config = array(__('License Key invalid.Enter or Purchase License Key', 'xlplugins')); // array_push($this->term, 'purchased'); // } // } // } // } // } else { // $this->button_config = array( // 'state' => 'button-primary', // 'text' => __('Get Add-On', 'xlplugins'), // 'url' => $this->buy_now_link, // // 'url' => wp_nonce_url(self_admin_url('update.php?action=install-plugin&plugin=' . $this->pluginbasename . ""), 'install-plugin_' . $this->pluginbasename), // ); // // $this->status_config = array(sprintf(__('Available For Install. Download Now', 'xlplugins'),$this->status_link)); // // array_push($this->term, 'purchased'); // } // } // } } }