133 lines
3.7 KiB
PHP
133 lines
3.7 KiB
PHP
<?php
|
|
/**
|
|
* Flatsome Update Functions
|
|
*
|
|
* @author UX Themes
|
|
* @package Flatsome/Functions
|
|
*/
|
|
|
|
/**
|
|
* Inject update data for Flatsome to `_site_transient_update_themes`.
|
|
* The `package` property is a temporary URL which will be replaced with
|
|
* an actual URL to a zip file in the `upgrader_package_options` hook when
|
|
* WordPress runs the upgrader.
|
|
*
|
|
* @param array $transient The pre-saved value of the `update_themes` site transient.
|
|
* @return array
|
|
*/
|
|
function flatsome_get_update_info( $transient ) {
|
|
static $latest_version;
|
|
|
|
if ( ! isset( $transient->checked ) ) {
|
|
return $transient;
|
|
}
|
|
|
|
$theme = wp_get_theme( get_template() );
|
|
$template = $theme->get_template();
|
|
$version = $theme->get( 'Version' );
|
|
|
|
$update_details = array(
|
|
'theme' => $template,
|
|
'new_version' => $version,
|
|
'url' => add_query_arg(
|
|
array(
|
|
'version' => $version,
|
|
),
|
|
esc_url( admin_url( 'admin.php?page=flatsome-version-info' ) )
|
|
),
|
|
'package' => add_query_arg(
|
|
array(
|
|
'flatsome_version' => $version,
|
|
'flatsome_download' => true,
|
|
),
|
|
esc_url( admin_url( 'admin.php?page=flatsome-panel' ) )
|
|
),
|
|
);
|
|
|
|
if ( empty( $latest_version ) ) {
|
|
$cache = get_option( 'flatsome_update_cache' );
|
|
$now = time();
|
|
|
|
if (
|
|
! empty( $cache['version'] ) &&
|
|
! empty( $cache['last_checked'] ) &&
|
|
$now - ( (int) $cache['last_checked'] ) < 300
|
|
) {
|
|
$latest_version = $cache['version'];
|
|
} else {
|
|
$result = flatsome_envato()->registration->get_latest_version();
|
|
$latest_version = is_string( $result ) ? $result : $version;
|
|
|
|
update_option(
|
|
'flatsome_update_cache',
|
|
array(
|
|
'last_checked' => $now,
|
|
'version' => $latest_version,
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
if ( version_compare( $version, $latest_version, '<' ) ) {
|
|
$update_details['new_version'] = $latest_version;
|
|
$update_details['url'] = add_query_arg( 'version', $latest_version, $update_details['url'] );
|
|
$update_details['package'] = add_query_arg( 'flatsome_version', $latest_version, $update_details['package'] );
|
|
|
|
$transient->response[ $template ] = $update_details;
|
|
} else {
|
|
$transient->no_update[ $template ] = $update_details;
|
|
}
|
|
|
|
return $transient;
|
|
}
|
|
add_filter( 'pre_set_site_transient_update_themes', 'flatsome_get_update_info', 1, 99999 );
|
|
add_filter( 'pre_set_transient_update_themes', 'flatsome_get_update_info', 1, 99999 );
|
|
|
|
/**
|
|
* Get a fresh package URL before running the WordPress upgrader.
|
|
*
|
|
* @param array $options Options used by the upgrader.
|
|
* @return array
|
|
*/
|
|
function flatsome_upgrader_package_options( $options ) {
|
|
$package = $options['package'];
|
|
|
|
if ( false !== strrpos( $package, 'flatsome_download' ) ) {
|
|
parse_str( wp_parse_url( $package, PHP_URL_QUERY ), $vars );
|
|
|
|
if ( isset( $vars['flatsome_version'] ) ) {
|
|
$version = $vars['flatsome_version'];
|
|
$package = flatsome_envato()->registration->get_download_url( $version );
|
|
|
|
if ( is_wp_error( $package ) ) {
|
|
return $options;
|
|
}
|
|
|
|
$options['package'] = $package;
|
|
}
|
|
}
|
|
|
|
return $options;
|
|
}
|
|
add_filter( 'upgrader_package_options', 'flatsome_upgrader_package_options', 9 );
|
|
|
|
/**
|
|
* Disables update check for Flatsome in the WordPress themes repo.
|
|
*
|
|
* @param array $request An array of HTTP request arguments.
|
|
* @param string $url The request URL.
|
|
* @return array
|
|
*/
|
|
function flatsome_update_check_request_args( $request, $url ) {
|
|
if ( false !== strpos( $url, '//api.wordpress.org/themes/update-check/1.1/' ) ) {
|
|
$data = json_decode( $request['body']['themes'] );
|
|
$template = get_template();
|
|
|
|
unset( $data->themes->$template );
|
|
|
|
$request['body']['themes'] = wp_json_encode( $data );
|
|
}
|
|
return $request;
|
|
}
|
|
add_filter( 'http_request_args', 'flatsome_update_check_request_args', 5, 2 );
|