720 lines
23 KiB
PHP
720 lines
23 KiB
PHP
<?php
|
|
/**
|
|
* BSF Analytics Stats
|
|
*
|
|
* @package BSF_Core
|
|
*/
|
|
|
|
/**
|
|
* Delete these transients/options for debugging
|
|
* set_site_transient( 'update_plugins', null );
|
|
* set_site_transient( 'update_themes', null );
|
|
* delete_option( 'brainstrom_products' );
|
|
*/
|
|
|
|
if ( ! class_exists( 'BSF_Update_Manager' ) ) {
|
|
|
|
/**
|
|
* Update Manager Class
|
|
*
|
|
* @class BSF_Update_Manager
|
|
*/
|
|
class BSF_Update_Manager {
|
|
|
|
/**
|
|
* Constructor function that initializes required sections
|
|
*/
|
|
public function __construct() {
|
|
// update data to WordPress's transient.
|
|
add_filter(
|
|
'pre_set_site_transient_update_plugins',
|
|
array(
|
|
$this,
|
|
'brainstorm_update_plugins_transient',
|
|
)
|
|
);
|
|
add_filter( 'pre_set_site_transient_update_themes', array( $this, 'brainstorm_update_themes_transient' ) );
|
|
|
|
// display changelog in update details.
|
|
add_filter( 'plugins_api', array( $this, 'bsf_get_plugin_information' ), 10, 3 );
|
|
|
|
// display correct error messages.
|
|
add_action( 'load-plugins.php', array( $this, 'bsf_update_display_license_link' ) );
|
|
|
|
add_filter( 'upgrader_pre_download', array( $this, 'modify_download_package_message' ), 20, 3 );
|
|
|
|
add_action( 'bsf_get_plugin_information', array( $this, 'plugin_information' ) );
|
|
}
|
|
|
|
/**
|
|
* Function to update plugin's transient.
|
|
*
|
|
* @param obj $_transient_data Transient Data.
|
|
* @return $_transient_data.
|
|
*/
|
|
public function brainstorm_update_plugins_transient( $_transient_data ) {
|
|
|
|
global $pagenow;
|
|
|
|
if ( ! is_object( $_transient_data ) ) {
|
|
$_transient_data = new stdClass();
|
|
}
|
|
|
|
$update_data = $this->bsf_update_transient_data( 'plugins' );
|
|
|
|
foreach ( $update_data as $key => $product ) {
|
|
|
|
if ( isset( $product['template'] ) && '' !== $product['template'] ) {
|
|
$template = $product['template'];
|
|
} elseif ( isset( $product['init'] ) && '' !== $product['init'] ) {
|
|
$template = $product['init'];
|
|
}
|
|
|
|
if ( isset( $_transient_data->response[ $template ] ) ) {
|
|
continue;
|
|
}
|
|
|
|
if ( false === $this->enable_auto_updates( $product['id'] ) ) {
|
|
continue;
|
|
}
|
|
|
|
$plugin = new stdClass();
|
|
$plugin->id = isset( $product['id'] ) ? $product['id'] : '';
|
|
$plugin->slug = $this->bsf_get_plugin_slug( $template );
|
|
$plugin->plugin = isset( $template ) ? $template : '';
|
|
$plugin->upgrade_notice = '';
|
|
|
|
if ( $this->use_beta_version( $plugin->id ) ) {
|
|
$plugin->new_version = isset( $product['version_beta'] ) ? $product['version_beta'] : '';
|
|
$plugin->upgrade_notice .= 'It is recommended to use the beta version on a staging enviornment only.';
|
|
} else {
|
|
$plugin->new_version = isset( $product['remote'] ) ? $product['remote'] : '';
|
|
}
|
|
|
|
$plugin->url = isset( $product['purchase_url'] ) ? $product['purchase_url'] : '';
|
|
|
|
if ( BSF_License_Manager::bsf_is_active_license( $product['id'] ) === true ) {
|
|
$plugin->package = $this->bsf_get_package_uri( $product['id'] );
|
|
} else {
|
|
$plugin->package = '';
|
|
$bundled = self::bsf_is_product_bundled( $plugin->id );
|
|
if ( ! empty( $bundled ) ) {
|
|
$parent_id = $bundled[0];
|
|
$parent_name = brainstrom_product_name( $parent_id );
|
|
$plugin->upgrade_notice = 'This plugin is came bundled with the ' . $parent_name . '. For receiving updates, you need to register license of ' . $parent_name . '.';
|
|
} else {
|
|
$plugin->upgrade_notice .= ' Please activate your license to receive automatic updates.';
|
|
}
|
|
}
|
|
|
|
$plugin->tested = isset( $product['tested'] ) ? $product['tested'] : '';
|
|
$plugin->requires_php = isset( $product['php_version'] ) ? $product['php_version'] : '';
|
|
|
|
$plugin->icons = apply_filters(
|
|
"bsf_product_icons_{$product['id']}",
|
|
array(
|
|
'1x' => ( isset( $product['product_image'] ) ) ? $product['product_image'] : '',
|
|
'2x' => ( isset( $product['product_image'] ) ) ? $product['product_image'] : '',
|
|
'default' => ( isset( $product['product_image'] ) ) ? $product['product_image'] : '',
|
|
)
|
|
);
|
|
|
|
$_transient_data->last_checked = time();
|
|
$_transient_data->response[ $template ] = $plugin;
|
|
}
|
|
|
|
return $_transient_data;
|
|
}
|
|
|
|
/**
|
|
* Function to update theme's transient.
|
|
*
|
|
* @param obj $_transient_data Transient Data.
|
|
* @return $_transient_data.
|
|
*/
|
|
public function brainstorm_update_themes_transient( $_transient_data ) {
|
|
|
|
global $pagenow;
|
|
|
|
if ( ! is_object( $_transient_data ) ) {
|
|
$_transient_data = new stdClass();
|
|
}
|
|
|
|
if ( 'themes.php' !== $pagenow && 'update-core.php' !== $pagenow ) {
|
|
return $_transient_data;
|
|
}
|
|
|
|
$update_data = $this->bsf_update_transient_data( 'themes' );
|
|
|
|
foreach ( $update_data as $key => $product ) {
|
|
|
|
if ( false === $this->enable_auto_updates( $product['id'] ) ) {
|
|
continue;
|
|
}
|
|
|
|
if ( isset( $product['template'] ) && '' !== $product['template'] ) {
|
|
$template = $product['template'];
|
|
}
|
|
|
|
$themes = array();
|
|
$themes['theme'] = isset( $template ) ? $template : '';
|
|
|
|
if ( $this->use_beta_version( $product['id'] ) ) {
|
|
$themes['new_version'] = isset( $product['version_beta'] ) ? $product['version_beta'] : '';
|
|
} else {
|
|
$themes['new_version'] = isset( $product['remote'] ) ? $product['remote'] : '';
|
|
}
|
|
|
|
$themes['url'] = isset( $product['purchase_url'] ) ? $product['purchase_url'] : '';
|
|
if ( BSF_License_Manager::bsf_is_active_license( $product['id'] ) === true ) {
|
|
$themes['package'] = $this->bsf_get_package_uri( $product['id'] );
|
|
} else {
|
|
$themes['package'] = '';
|
|
$themes['upgrade_notice'] = 'Please activate your license to receive automatic updates.';
|
|
}
|
|
$_transient_data->last_checked = time();
|
|
|
|
if ( isset( $template ) ) {
|
|
$_transient_data->response[ $template ] = $themes;
|
|
}
|
|
}
|
|
|
|
return $_transient_data;
|
|
}
|
|
|
|
/**
|
|
* Allow autoupdates to be enabled/disabled per product basis.
|
|
*
|
|
* @param String $product_id - Product ID.
|
|
* @return boolean True - IF updates are to be enabled. False if updates are to be disabled.
|
|
*/
|
|
private function enable_auto_updates( $product_id ) {
|
|
return apply_filters( "bsf_enable_product_autoupdates_{$product_id}", true );
|
|
}
|
|
|
|
/**
|
|
*
|
|
* Updates information on the "View version x.x details" page with custom data.
|
|
*
|
|
* @uses api_request()
|
|
*
|
|
* @param mixed $_data Data.
|
|
* @param string $_action Action.
|
|
* @param object $_args Arguments.
|
|
*
|
|
* @return object $_data
|
|
*/
|
|
public function bsf_get_plugin_information( $_data, $_action = '', $_args = null ) {
|
|
|
|
if ( 'plugin_information' !== $_action ) {
|
|
|
|
return $_data;
|
|
|
|
}
|
|
|
|
$brainstrom_products = apply_filters( 'bsf_get_plugin_information', get_option( 'brainstrom_products', array() ) );
|
|
|
|
$plugins = isset( $brainstrom_products['plugins'] ) ? $brainstrom_products['plugins'] : array();
|
|
$themes = isset( $brainstrom_products['themes'] ) ? $brainstrom_products['themes'] : array();
|
|
$all_products = $plugins + $themes;
|
|
|
|
foreach ( $all_products as $key => $product ) {
|
|
|
|
$product_slug = isset( $product['slug'] ) ? $product['slug'] : '';
|
|
|
|
if ( $product_slug === $_args->slug ) {
|
|
|
|
$id = isset( $product['id'] ) ? $product['id'] : '';
|
|
|
|
$info = new stdClass();
|
|
|
|
if ( $this->use_beta_version( $id ) ) {
|
|
$info->new_version = isset( $product['version_beta'] ) ? $product['version_beta'] : '';
|
|
} else {
|
|
$info->new_version = isset( $product['remote'] ) ? $product['remote'] : '';
|
|
}
|
|
|
|
$product_name = isset( $product['name'] ) ? $product['name'] : '';
|
|
$info->name = bsf_get_white_lable_product_name( $id, $product_name );
|
|
$info->slug = $product_slug;
|
|
$info->version = isset( $product['remote'] ) ? $product['remote'] : '';
|
|
$info->author = apply_filters( "bsf_product_author_{$id}", 'Brainstorm Force' );
|
|
$info->url = isset( $product['changelog_url'] ) ? apply_filters( "bsf_product_url_{$id}", $product['changelog_url'] ) : apply_filters( "bsf_product_url_{$id}", '' );
|
|
$info->homepage = isset( $product['purchase_url'] ) ? apply_filters( "bsf_product_homepage_{$id}", $product['purchase_url'] ) : apply_filters( "bsf_product_homepage_{$id}", '' );
|
|
|
|
if ( BSF_License_Manager::bsf_is_active_license( $id ) === true ) {
|
|
$package_url = $this->bsf_get_package_uri( $id );
|
|
$info->package = $package_url;
|
|
$info->download_link = $package_url;
|
|
}
|
|
|
|
$info->sections = array();
|
|
$product_decription = isset( $product['description'] ) ? $product['description'] : '';
|
|
$info->sections['description'] = apply_filters( "bsf_product_description_{$id}", $product_decription );
|
|
$product_changelog = 'Thank you for using ' . $info->name . '. </br></br>To make your experience using ' . $info->name . ' better we release updates regularly, you can view the full changelog <a href="' . $info->url . '">here</a>';
|
|
$info->sections['changelog'] = apply_filters( "bsf_product_changelog_{$id}", $product_changelog );
|
|
|
|
$_data = $info;
|
|
}
|
|
}
|
|
|
|
return $_data;
|
|
}
|
|
|
|
/**
|
|
* Check if product is bundled.
|
|
*
|
|
* @param array $bsf_product Product.
|
|
* @param string $search_by Search By.
|
|
* @return $product_parent.
|
|
*/
|
|
public static function bsf_is_product_bundled( $bsf_product, $search_by = 'id' ) {
|
|
$brainstrom_bundled_products = get_option( 'brainstrom_bundled_products', array() );
|
|
$product_parent = array();
|
|
|
|
foreach ( $brainstrom_bundled_products as $parent => $products ) {
|
|
|
|
foreach ( $products as $key => $product ) {
|
|
|
|
if ( 'init' === $search_by ) {
|
|
|
|
if ( $product->init === $bsf_product ) {
|
|
$product_parent[] = $parent;
|
|
}
|
|
} elseif ( 'id' === $search_by ) {
|
|
|
|
if ( $product->id === $bsf_product ) {
|
|
$product_parent[] = $parent;
|
|
}
|
|
} elseif ( 'name' === $search_by ) {
|
|
|
|
if ( strcasecmp( $product->name, $bsf_product ) === 0 ) {
|
|
$product_parent[] = $parent;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
$product_parent = apply_filters( 'bsf_is_product_bundled', array_unique( $product_parent ), $bsf_product, $search_by );
|
|
|
|
return $product_parent;
|
|
}
|
|
/**
|
|
* Get package URL
|
|
*
|
|
* @param int $product_id Product Id.
|
|
* @return string $download_path.
|
|
*/
|
|
public function bsf_get_package_uri( $product_id ) {
|
|
|
|
$product = get_brainstorm_product( $product_id );
|
|
$status = BSF_License_Manager::bsf_is_active_license( $product_id );
|
|
$download_path = '';
|
|
$parent_product = isset( $product['parent'] ) ? $product['parent'] : '';
|
|
|
|
if ( $this->use_beta_version( $product_id ) ) {
|
|
$version = isset( $product['version_beta'] ) ? $product['version_beta'] : '';
|
|
} else {
|
|
$version = isset( $product['remote'] ) ? $product['remote'] : '';
|
|
}
|
|
|
|
if ( '' !== $version && false !== $status ) {
|
|
$bundled_product = self::bsf_is_product_bundled( $product_id );
|
|
$purchase_key = $this->get_purchse_key( $product_id );
|
|
$is_bundled = ( ! empty( $bundled_product ) ) ? '1' : '0';
|
|
|
|
$download_params = array(
|
|
'version_no' => $version,
|
|
'purchase_key' => $purchase_key,
|
|
'site_url' => get_site_url(),
|
|
'is_bundled' => $is_bundled,
|
|
'parent_product' => $parent_product,
|
|
);
|
|
|
|
$download_path = bsf_get_api_site( false, true ) . 'download/' . $product_id . '?' . http_build_query( $download_params );
|
|
// Clear Product versions from transient after update.
|
|
bsf_clear_versions_cache( $product_id );
|
|
|
|
return $download_path;
|
|
}
|
|
|
|
return $download_path;
|
|
}
|
|
/**
|
|
* Update transient Data.
|
|
*
|
|
* @param string $product_type Product Type.
|
|
* @return $update_required.
|
|
*/
|
|
public function bsf_update_transient_data( $product_type ) {
|
|
|
|
$this->maybe_force_check_bsf_product_updates();
|
|
|
|
$all_products = array();
|
|
$update_required = array();
|
|
|
|
if ( 'plugins' === $product_type ) {
|
|
$all_products = $this->prepare_plugins_for_update( brainstorm_get_all_products( false, true, false ) );
|
|
}
|
|
|
|
if ( 'themes' === $product_type ) {
|
|
$all_products = brainstorm_get_all_products( true, false, true );
|
|
}
|
|
|
|
foreach ( $all_products as $key => $product ) {
|
|
|
|
$product_id = isset( $product['id'] ) ? $product['id'] : '';
|
|
|
|
$constant = strtoupper( str_replace( '-', '_', $product_id ) );
|
|
$constant = 'BSF_' . $constant . '_CHECK_UPDATES';
|
|
|
|
if ( defined( $constant ) && ( constant( $constant ) === 'false' || constant( $constant ) === false ) ) {
|
|
continue;
|
|
}
|
|
|
|
$remote = isset( $product['remote'] ) ? $product['remote'] : '';
|
|
$local = isset( $product['version'] ) ? $product['version'] : '';
|
|
$version_beta = isset( $product['version_beta'] ) ? $product['version_beta'] : $remote;
|
|
|
|
if ( $this->use_beta_version( $product_id ) ) {
|
|
$remote = $version_beta;
|
|
}
|
|
|
|
if ( version_compare( $remote, $local, '>' ) ) {
|
|
array_push( $update_required, $product );
|
|
}
|
|
}
|
|
|
|
return $update_required;
|
|
}
|
|
|
|
/**
|
|
* Remove plugins from the updates array which are not installed.
|
|
*
|
|
* @param Array $plugins Plugins.
|
|
* @return Array of plugins.
|
|
*/
|
|
public static function prepare_plugins_for_update( $plugins ) {
|
|
foreach ( $plugins as $key => $plugin ) {
|
|
if ( isset( $plugin['template'] ) && ! file_exists( dirname( realpath( WP_PLUGIN_DIR . '/' . $plugin['template'] ) ) ) ) {
|
|
unset( $plugins[ $key ] );
|
|
}
|
|
if ( isset( $plugin['init'] ) && ! file_exists( dirname( realpath( WP_PLUGIN_DIR . '/' . $plugin['init'] ) ) ) ) {
|
|
unset( $plugins[ $key ] );
|
|
}
|
|
}
|
|
|
|
return $plugins;
|
|
}
|
|
/**
|
|
* Force check BSF Product updates.
|
|
*/
|
|
public function maybe_force_check_bsf_product_updates() {
|
|
if ( true === bsf_time_since_last_versioncheck( 2, 'bsf_last_update_check' ) ) {
|
|
global $ultimate_referer;
|
|
$ultimate_referer = 'on-transient-delete-2-hours';
|
|
bsf_check_product_update();
|
|
update_option( 'bsf_last_update_check', (string) current_time( 'timestamp' ) );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Use Beta version.
|
|
*
|
|
* @param int $product_id Product ID.
|
|
* @return bool.
|
|
*/
|
|
public function use_beta_version( $product_id ) {
|
|
|
|
$product = get_brainstorm_product( $product_id );
|
|
$stable = isset( $product['remote'] ) ? $product['remote'] : '';
|
|
$beta = isset( $product['version_beta'] ) ? $product['version_beta'] : '';
|
|
|
|
// If beta version is not set, return.
|
|
if ( '' === $beta ) {
|
|
return false;
|
|
}
|
|
|
|
if ( version_compare( $stable, $beta, '<' ) &&
|
|
self::bsf_allow_beta_updates( $product_id ) ) {
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Beta version normalized.
|
|
*
|
|
* @param array $beta Beta.
|
|
* @return $version.
|
|
*/
|
|
public function beta_version_normalized( $beta ) {
|
|
$beta_explode = explode( '-', $beta );
|
|
|
|
$version = $beta_explode[0] . '.' . str_replace( 'beta', '', $beta_explode[1] );
|
|
|
|
return $version;
|
|
}
|
|
|
|
/**
|
|
* Allow Beta updates.
|
|
*
|
|
* @param array $product_id Product ID.
|
|
* @return bool.
|
|
*/
|
|
public static function bsf_allow_beta_updates( $product_id ) {
|
|
return apply_filters( "bsf_allow_beta_updates_{$product_id}", false );
|
|
}
|
|
|
|
/**
|
|
* Get Plugin's slug.
|
|
*
|
|
* @param array $template Template.
|
|
* @return $slug.
|
|
*/
|
|
public function bsf_get_plugin_slug( $template ) {
|
|
$slug = explode( '/', $template );
|
|
|
|
if ( isset( $slug[0] ) ) {
|
|
return $slug[0];
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Update display license link.
|
|
*/
|
|
public function bsf_update_display_license_link() {
|
|
$brainstorm_all_products = $this->brainstorm_all_products();
|
|
|
|
foreach ( $brainstorm_all_products as $key => $product ) {
|
|
|
|
if ( isset( $product['id'] ) ) {
|
|
$id = $product['id'];
|
|
|
|
if ( isset( $product['template'] ) && '' !== $product['template'] ) {
|
|
$template = $product['template'];
|
|
} elseif ( isset( $product['init'] ) && '' !== $product['init'] ) {
|
|
$template = $product['init'];
|
|
}
|
|
|
|
if ( BSF_License_Manager::bsf_is_active_license( $id ) === false ) {
|
|
|
|
if ( is_plugin_active( $template ) ) {
|
|
add_action(
|
|
"in_plugin_update_message-$template",
|
|
array(
|
|
$this,
|
|
'bsf_add_registration_message',
|
|
),
|
|
9,
|
|
2
|
|
);
|
|
}
|
|
} else {
|
|
add_action(
|
|
"in_plugin_update_message-$template",
|
|
array(
|
|
$this,
|
|
'add_beta_update_message',
|
|
),
|
|
9,
|
|
2
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
/**
|
|
* Brainstorm All Products.
|
|
*/
|
|
public function brainstorm_all_products() {
|
|
$brainstrom_products = get_option( 'brainstrom_products', array() );
|
|
$brainstrom_products_plugins = isset( $brainstrom_products['plugins'] ) ? $brainstrom_products['plugins'] : array();
|
|
$brainstrom_products_themes = isset( $brainstrom_products['themes'] ) ? $brainstrom_products['themes'] : array();
|
|
$brainstrom_bundled_products = get_option( 'brainstrom_bundled_products', array() );
|
|
|
|
$bundled = array();
|
|
|
|
foreach ( $brainstrom_bundled_products as $parent => $children ) {
|
|
|
|
foreach ( $children as $key => $product ) {
|
|
$bundled[ $product->id ] = (array) $product;
|
|
}
|
|
}
|
|
|
|
// array of all the products.
|
|
$all_products = $brainstrom_products_plugins + $brainstrom_products_themes + $bundled;
|
|
|
|
return $all_products;
|
|
}
|
|
/**
|
|
* Add Registration message.
|
|
*
|
|
* @param array $plugin_data Plugin data.
|
|
* @param array $response Response.
|
|
*/
|
|
public function bsf_add_registration_message( $plugin_data, $response ) {
|
|
|
|
$plugin_init = isset( $plugin_data['plugin'] ) ? $plugin_data['plugin'] : '';
|
|
|
|
if ( '' !== $plugin_init ) {
|
|
$product_id = brainstrom_product_id_by_init( $plugin_init );
|
|
$bundled = self::bsf_is_product_bundled( $plugin_init, 'init' );
|
|
$registration_page = bsf_registration_page_url( '', $product_id );
|
|
} else {
|
|
$plugin_name = isset( $plugin_data['name'] ) ? $plugin_data['name'] : '';
|
|
$product_id = brainstrom_product_id_by_name( $plugin_name );
|
|
$bundled = self::bsf_is_product_bundled( $plugin_name, 'name' );
|
|
$registration_page = bsf_registration_page_url( '', $product_id );
|
|
}
|
|
|
|
if ( ! empty( $bundled ) ) {
|
|
$parent_id = $bundled[0];
|
|
$registration_page = bsf_registration_page_url( '', $parent_id );
|
|
$parent_name = bsf_get_white_lable_product_name( $parent_id, brainstrom_product_name( $parent_id ) );
|
|
/* translators: %1$s: $parent_name %2%s: $registration_page */
|
|
$message = sprintf( __( ' <br>This plugin is came bundled with the <i>%1$s</i>. For receiving updates, you need to register license of <i>%2$s</i> <a href="%3$s">here</a>.', 'bsf' ), $parent_name, $parent_name, $registration_page );
|
|
} else {
|
|
/* translators: %1$s: $registration_page %2%s: search term */
|
|
$message = sprintf( ' <i>%s</i>', sprintf( __( 'Please <a href="%1$s">activate your license</a> to update the plugin.', 'bsf' ), $registration_page ) );
|
|
}
|
|
|
|
if ( true === self::bsf_allow_beta_updates( $product_id ) && $this->is_beta_version( $plugin_data['new_version'] ) ) {
|
|
$message = $message . ' <i>It is recommended to use the beta version on a staging enviornment only.</i>';
|
|
}
|
|
|
|
echo wp_kses_post( $message );
|
|
|
|
}
|
|
/**
|
|
* Add Beta update message.
|
|
*
|
|
* @param array $plugin_data plugin data.
|
|
* @param array $response Response.
|
|
*/
|
|
public function add_beta_update_message( $plugin_data, $response ) {
|
|
$plugin_init = isset( $plugin_data['plugin'] ) ? $plugin_data['plugin'] : '';
|
|
|
|
if ( '' !== $plugin_init ) {
|
|
$product_id = brainstrom_product_id_by_init( $plugin_init );
|
|
} else {
|
|
$product_id = brainstrom_product_id_by_name( $plugin_name );
|
|
}
|
|
|
|
if ( true === self::bsf_allow_beta_updates( $product_id ) && $this->is_beta_version( $plugin_data['new_version'] ) ) {
|
|
echo ' <i>It is recommended to use the beta version on a staging enviornment only.</i>';
|
|
}
|
|
}
|
|
/**
|
|
* Is Beta version
|
|
*
|
|
* @param string $version Version.
|
|
* @return bool.
|
|
*/
|
|
private function is_beta_version( $version ) {
|
|
return strpos( $version, 'beta' ) ||
|
|
strpos( $version, 'alpha' );
|
|
}
|
|
|
|
/**
|
|
* Modify download package message to hide download URL.
|
|
*
|
|
* @param string $reply Reply.
|
|
* @param string $package Package.
|
|
* @param string $current Current.
|
|
* @return string $reply.
|
|
*/
|
|
public function modify_download_package_message( $reply, $package, $current ) {
|
|
|
|
// Read atts into separate veriables so that easy to reference below.
|
|
$strings = $current->strings;
|
|
|
|
if ( isset( $current->skin->plugin_info ) ) {
|
|
$plugin_info = $current->skin->plugin_info;
|
|
|
|
if ( ( isset( $plugin_info['author'] ) && 'Brainstorm Force' === $plugin_info['author'] ) || ( isset( $plugin_info['AuthorName'] ) && 'Brainstorm Force' === $plugin_info['AuthorName'] ) ) {
|
|
$strings['downloading_package'] = __( 'Downloading the update...', 'bsf-core' );
|
|
}
|
|
} elseif ( isset( $current->skin->theme_info ) ) {
|
|
|
|
$theme_info = $current->skin->theme_info;
|
|
$theme_author = $theme_info->get( 'Author' );
|
|
|
|
if ( 'Brainstorm Force' === $theme_author ) {
|
|
$strings['downloading_package'] = __( 'Downloading the update...', 'bsf-core' );
|
|
}
|
|
} elseif ( isset( $_GET['action'] ) && 'bsf_rollback' === $_GET['action'] && check_admin_referer( 'bsf_rollback' ) ) {
|
|
// In case of rollback version.
|
|
$strings['downloading_package'] = __( 'Downloading the update...', 'bsf-core' );
|
|
}
|
|
|
|
// restore the strings back to WP_Upgrader.
|
|
$current->strings = $strings;
|
|
|
|
// We are not changing teh return parameter.
|
|
return $reply;
|
|
}
|
|
|
|
/**
|
|
* Install Pluigns Filter
|
|
*
|
|
* Add brainstorm bundle products in plugin installer list though filter.
|
|
*
|
|
* @since 1.0.0
|
|
*
|
|
* @param array $brainstrom_products Brainstorm Products.
|
|
* @return array Brainstorm Products merged with Brainstorm Bundle Products.
|
|
*/
|
|
public function plugin_information( $brainstrom_products = array() ) {
|
|
|
|
$main_products = (array) get_option( 'brainstrom_bundled_products', array() );
|
|
|
|
foreach ( $main_products as $single_product_key => $single_product ) {
|
|
foreach ( $single_product as $bundle_product_key => $bundle_product ) {
|
|
|
|
if ( is_object( $bundle_product ) ) {
|
|
$type = $bundle_product->type;
|
|
$slug = $bundle_product->slug;
|
|
} else {
|
|
$type = $bundle_product['type'];
|
|
$slug = $bundle_product['slug'];
|
|
}
|
|
|
|
// Add bundled plugin in installer list.
|
|
if ( 'plugin' === $type ) {
|
|
$brainstrom_products['plugins'][ $slug ] = (array) $bundle_product;
|
|
}
|
|
}
|
|
}
|
|
|
|
return $brainstrom_products;
|
|
}
|
|
|
|
/**
|
|
* Get the prurchase key for product download API.
|
|
* If the product is bundeled then return it's parent product purchase key.
|
|
*
|
|
* @param string $product_id Product ID.
|
|
* @return string Purchase Key.
|
|
*/
|
|
public function get_purchse_key( $product_id ) {
|
|
$all_products = brainstorm_get_all_products();
|
|
$is_bundled = self::bsf_is_product_bundled( $product_id );
|
|
$product = isset( $all_products[ $product_id ] ) ? $all_products[ $product_id ] : array();
|
|
|
|
if ( ! empty( $is_bundled ) ) {
|
|
$product = isset( $all_products[ $product['parent'] ] ) ? $all_products[ $product['parent'] ] : array();
|
|
}
|
|
|
|
return isset( $product['purchase_key'] ) ? $product['purchase_key'] : '';
|
|
}
|
|
|
|
} // class BSF_Update_Manager
|
|
|
|
new BSF_Update_Manager();
|
|
}
|