Current File : /home/natitnen/hintact.com/wp-content/themes/ave/liquid/admin/updater/liquid-updater-class.php |
<?php
/**
* Liquid Themes Theme Framework
* The Liquid_Updater initiate the theme engine
*/
if( !defined( 'ABSPATH' ) )
exit; // Exit if accessed directly
class Liquid_Updater {
private $remote_api_url;
private $request_data;
private $response_key;
private $theme_slug;
private $purchase_code;
private $version;
private $author;
protected $strings = null;
function __construct( $args = array(), $strings = array() ) {
$args = wp_parse_args( $args, array(
'remote_api_url' => 'http://api.liquid-themes.com',
'request_data' => array(),
'theme_slug' => get_template(),
'item_name' => '',
'license' => '',
'version' => '',
'author' => ''
) );
extract( $args );
$this->license = $license;
$this->item_name = $item_name;
$this->version = $version;
$this->theme_slug = sanitize_key( $theme_slug );
$this->remote_api_url = $remote_api_url;
$this->response_key = $this->theme_slug . '-update-response';
$this->strings = $strings;
add_filter( 'site_transient_update_themes', array( &$this, 'theme_update_transient' ) );
add_filter( 'delete_site_transient_update_themes', array( &$this, 'delete_theme_update_transient' ) );
add_action( 'load-update-core.php', array( &$this, 'delete_theme_update_transient' ) );
add_action( 'load-themes.php', array( &$this, 'delete_theme_update_transient' ) );
add_action( 'load-themes.php', array( &$this, 'load_themes_screen' ) );
}
function load_themes_screen() {
add_thickbox();
add_action( 'admin_notices', array( &$this, 'update_nag' ) );
}
function update_nag() {
$strings = $this->strings;
$theme = wp_get_theme( $this->theme_slug );
$api_response = get_transient( $this->response_key );
if ( false === $api_response ) {
return;
}
$update_url = wp_nonce_url( 'update.php?action=upgrade-theme&theme=' . urlencode( $this->theme_slug ), 'upgrade-theme_' . $this->theme_slug );
$update_onclick = ' onclick="if ( confirm(\'' . esc_js( esc_attr__( 'Updating this theme will lose any customizations you have made. \'Cancel\' to stop, \'OK\' to update.', 'ave' ) ) . '\') ) {return true;}return false;"';
if ( version_compare( $this->version, $api_response->new_version, '<' ) ) {
echo '<div id="update-nag">';
printf(
wp_kses_post( __( '<strong>%1$s %2$s</strong> is available. <a href="%3$s" class="thickbox" title="%4s">Check out what\'s new</a> or <a href="%5$s"%6$s>update now</a>.', 'ave' ) ),
$theme->get( 'Name' ),
$api_response->new_version,
'#TB_inline?width=640&inlineId=' . $this->theme_slug . '_changelog',
$theme->get( 'Name' ),
$update_url,
$update_onclick
);
echo '</div>';
echo '<div id="' . $this->theme_slug . '_' . 'changelog" style="display:none;">';
echo wpautop( $api_response->sections['changelog'] );
echo '</div>';
}
}
function theme_update_transient( $value ) {
$update_data = $this->check_for_update();
if ( $update_data ) {
$value->response[ $this->theme_slug ] = $update_data;
}
return $value;
}
function delete_theme_update_transient() {
delete_transient( $this->response_key );
}
function check_for_update() {
$update_data = get_transient( $this->response_key );
if ( false === $update_data ) {
$failed = false;
$api_params = array(
'action' => 'get_version',
'license' => $this->license,
'slug' => $this->theme_slug,
'author' => $this->author
);
$response = wp_remote_get( $this->remote_api_url, array( 'timeout' => 15, 'body' => $api_params ) );
// Make sure the response was successful
if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) {
$failed = true;
}
$update_data = json_decode( wp_remote_retrieve_body( $response ) );
if ( ! is_object( $update_data ) ) {
$failed = true;
}
// If the response failed, try again in 30 minutes
if ( $failed ) {
$data = new stdClass;
$data->new_version = $this->version;
set_transient( $this->response_key, $data, strtotime( '+30 minutes' ) );
return false;
}
// If the status is 'ok', return the update arguments
if ( ! $failed ) {
$update_data->sections = maybe_unserialize( $update_data->sections );
set_transient( $this->response_key, $update_data, strtotime( '+12 hours' ) );
}
}
if ( version_compare( $this->version, $update_data->new_version, '>=' ) ) {
return false;
}
return (array) $update_data;
}
}