BP_BuddyBoss_Platform_Updater
Load BuddyBoss Platform Updater class
Description
Source
File: bp-core/classes/class-bp-buddyboss-platform-updater.php
class BP_BuddyBoss_Platform_Updater {
var $license;
var $api_url;
var $plugin_id = 0;
var $plugin_path;
var $plugin_slug;
function __construct( $api_url, $plugin_path, $plugin_id, $license = '' ) {
$this->api_url = $api_url;
$this->plugin_path = $plugin_path;
$this->license = $license;
$this->plugin_id = $plugin_id;
if ( strstr( $plugin_path, '/' ) ) {
list ( $part1, $part2 ) = explode( '/', $plugin_path );
} else {
$part2 = $plugin_path;
}
$this->plugin_slug = str_replace( '.php', '', $part2 );
add_filter( 'pre_set_site_transient_update_plugins', array( &$this, 'update_plugin' ) );
add_filter( 'plugins_api', array( &$this, 'plugins_api' ), 10, 3 );
}
function update_plugin( $transient ) {
if ( empty( $transient->checked ) || empty( $transient->checked[ $this->plugin_path ] ) ) {
return $transient;
}
$request_data = array(
'id' => $this->plugin_id,
'slug' => $this->plugin_slug,
'version' => $transient->checked[ $this->plugin_path ]
);
if ( ! empty( $this->license ) ) {
$request_data['license'] = $this->license;
}
$request_string = $this->request_call( 'update_check', $request_data );
$raw_response = wp_remote_post( $this->api_url, $request_string );
$response = null;
if ( ! is_wp_error( $raw_response ) && ( $raw_response['response']['code'] == 200 ) ) {
$response = unserialize( $raw_response['body'] );
}
//Feed the candy
if ( is_object( $response ) && ! empty( $response ) ) {
$transient->response[ $this->plugin_path ] = $response;
return $transient;
}
// If there is any same plugin from wordpress.org repository then unset it.
if ( isset( $transient->response[ $this->plugin_path ] ) ) {
if ( strpos( $transient->response[ $this->plugin_path ]->package, 'wordpress.org' ) !== false ) {
unset( $transient->response[ $this->plugin_path ] );
}
}
return $transient;
}
function plugins_api( $def, $action, $args ) {
if ( ! isset( $args->slug ) || $args->slug != $this->plugin_slug ) {
return $def;
}
$plugin_info = get_site_transient( 'update_plugins' );
$request_data = array(
'id' => $this->plugin_id,
'slug' => $this->plugin_slug,
'version' => ( isset( $plugin_info->checked ) ) ? $plugin_info->checked[ $this->plugin_path ] : 0
// Current version
);
if ( ! empty( $this->license ) ) {
$request_data['license'] = $this->license;
}
$request_string = $this->request_call( $action, $request_data );
$raw_response = wp_remote_post( $this->api_url, $request_string );
if ( is_wp_error( $raw_response ) ) {
$res = new WP_Error( 'plugins_api_failed', __( 'An Unexpected HTTP Error occurred during the API request.</p> <p><a href="?" onclick="document.location.reload(); return false;">Try again</a>', 'buddyboss' ), $raw_response->get_error_message() );
} else {
$res = unserialize( $raw_response['body'] );
if ( $res === false ) {
$res = new WP_Error( 'plugins_api_failed', __( 'An unknown error occurred', 'buddyboss' ), $raw_response['body'] );
}
}
return $res;
}
function request_call( $action, $args ) {
global $wp_version;
return array(
'body' => array(
'action' => $action,
'request' => serialize( $args ),
'api-key' => md5( home_url() )
),
'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url()
);
}
}
Changelog
| Version | Description |
|---|---|
| BuddyBoss 1.0.0 | Introduced. |
Methods
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.