mirror of
https://ghproxy.net/https://github.com/AlxMedia/clearwork.git
synced 2025-08-27 02:01:11 +08:00
1.0.2
This commit is contained in:
parent
52198cc0ed
commit
c52d66cdc8
7 changed files with 26 additions and 1026 deletions
|
@ -14,12 +14,6 @@
|
||||||
// Load Kirki
|
// Load Kirki
|
||||||
include( get_template_directory() . '/functions/kirki/kirki.php' );
|
include( get_template_directory() . '/functions/kirki/kirki.php' );
|
||||||
|
|
||||||
// Load theme updater functions
|
|
||||||
function clearwork_theme_updater() {
|
|
||||||
require( get_template_directory() . '/functions/updater/theme-updater.php' );
|
|
||||||
}
|
|
||||||
add_action( 'after_setup_theme', 'clearwork_theme_updater' );
|
|
||||||
|
|
||||||
if ( ! function_exists( 'clearwork_load' ) ) {
|
if ( ! function_exists( 'clearwork_load' ) ) {
|
||||||
|
|
||||||
function clearwork_load() {
|
function clearwork_load() {
|
||||||
|
|
|
@ -1,626 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Theme updater admin page and functions.
|
|
||||||
*
|
|
||||||
* @package EDD Sample Theme
|
|
||||||
*/
|
|
||||||
|
|
||||||
class EDD_Theme_Updater_Admin {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Variables required for the theme updater
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
* @type string
|
|
||||||
*/
|
|
||||||
protected $remote_api_url = null;
|
|
||||||
protected $theme_slug = null;
|
|
||||||
protected $version = null;
|
|
||||||
protected $author = null;
|
|
||||||
protected $download_id = null;
|
|
||||||
protected $renew_url = null;
|
|
||||||
protected $strings = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize the class.
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
function __construct( $config = array(), $strings = array() ) {
|
|
||||||
|
|
||||||
$config = wp_parse_args( $config, array(
|
|
||||||
'remote_api_url' => 'http://easydigitaldownloads.com',
|
|
||||||
'theme_slug' => get_template(),
|
|
||||||
'item_name' => '',
|
|
||||||
'license' => '',
|
|
||||||
'version' => '',
|
|
||||||
'author' => '',
|
|
||||||
'download_id' => '',
|
|
||||||
'renew_url' => '',
|
|
||||||
'beta' => false,
|
|
||||||
) );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fires after the theme $config is setup.
|
|
||||||
*
|
|
||||||
* @since x.x.x
|
|
||||||
*
|
|
||||||
* @param array $config Array of EDD SL theme data.
|
|
||||||
*/
|
|
||||||
do_action( 'post_edd_sl_theme_updater_setup', $config );
|
|
||||||
|
|
||||||
// Set config arguments
|
|
||||||
$this->remote_api_url = $config['remote_api_url'];
|
|
||||||
$this->item_name = $config['item_name'];
|
|
||||||
$this->theme_slug = sanitize_key( $config['theme_slug'] );
|
|
||||||
$this->version = $config['version'];
|
|
||||||
$this->author = $config['author'];
|
|
||||||
$this->download_id = $config['download_id'];
|
|
||||||
$this->renew_url = $config['renew_url'];
|
|
||||||
$this->beta = $config['beta'];
|
|
||||||
|
|
||||||
// Populate version fallback
|
|
||||||
if ( '' == $config['version'] ) {
|
|
||||||
$theme = wp_get_theme( $this->theme_slug );
|
|
||||||
$this->version = $theme->get( 'Version' );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Strings passed in from the updater config
|
|
||||||
$this->strings = $strings;
|
|
||||||
|
|
||||||
add_action( 'init', array( $this, 'updater' ) );
|
|
||||||
add_action( 'admin_init', array( $this, 'register_option' ) );
|
|
||||||
add_action( 'admin_init', array( $this, 'license_action' ) );
|
|
||||||
add_action( 'admin_menu', array( $this, 'license_menu' ) );
|
|
||||||
add_action( 'update_option_' . $this->theme_slug . '_license_key', array( $this, 'activate_license' ), 10, 2 );
|
|
||||||
add_filter( 'http_request_args', array( $this, 'disable_wporg_request' ), 5, 2 );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates the updater class.
|
|
||||||
*
|
|
||||||
* since 1.0.0
|
|
||||||
*/
|
|
||||||
function updater() {
|
|
||||||
if ( ! current_user_can( 'manage_options' ) ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If there is no valid license key status, don't allow updates. */
|
|
||||||
if ( get_option( $this->theme_slug . '_license_key_status', false) != 'valid' ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !class_exists( 'EDD_Theme_Updater' ) ) {
|
|
||||||
// Load our custom theme updater
|
|
||||||
include( dirname( __FILE__ ) . '/theme-updater-class.php' );
|
|
||||||
}
|
|
||||||
|
|
||||||
new EDD_Theme_Updater(
|
|
||||||
array(
|
|
||||||
'remote_api_url' => $this->remote_api_url,
|
|
||||||
'version' => $this->version,
|
|
||||||
'license' => trim( get_option( $this->theme_slug . '_license_key' ) ),
|
|
||||||
'item_name' => $this->item_name,
|
|
||||||
'author' => $this->author,
|
|
||||||
'beta' => $this->beta
|
|
||||||
),
|
|
||||||
$this->strings
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a menu item for the theme license under the appearance menu.
|
|
||||||
*
|
|
||||||
* since 1.0.0
|
|
||||||
*/
|
|
||||||
function license_menu() {
|
|
||||||
|
|
||||||
$strings = $this->strings;
|
|
||||||
|
|
||||||
add_theme_page(
|
|
||||||
$strings['theme-license'],
|
|
||||||
$strings['theme-license'],
|
|
||||||
'manage_options',
|
|
||||||
$this->theme_slug . '-license',
|
|
||||||
array( $this, 'license_page' )
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Outputs the markup used on the theme license page.
|
|
||||||
*
|
|
||||||
* since 1.0.0
|
|
||||||
*/
|
|
||||||
function license_page() {
|
|
||||||
|
|
||||||
$strings = $this->strings;
|
|
||||||
|
|
||||||
$license = trim( get_option( $this->theme_slug . '_license_key' ) );
|
|
||||||
$status = get_option( $this->theme_slug . '_license_key_status', false );
|
|
||||||
|
|
||||||
// Checks license status to display under license key
|
|
||||||
if ( ! $license ) {
|
|
||||||
$message = $strings['enter-key'];
|
|
||||||
} else {
|
|
||||||
// delete_transient( $this->theme_slug . '_license_message' );
|
|
||||||
if ( ! get_transient( $this->theme_slug . '_license_message', false ) ) {
|
|
||||||
set_transient( $this->theme_slug . '_license_message', $this->check_license(), ( 60 * 60 * 24 ) );
|
|
||||||
}
|
|
||||||
$message = get_transient( $this->theme_slug . '_license_message' );
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
<div class="wrap">
|
|
||||||
<h2><?php echo $strings['theme-license'] ?></h2>
|
|
||||||
<form method="post" action="options.php">
|
|
||||||
|
|
||||||
<?php settings_fields( $this->theme_slug . '-license' ); ?>
|
|
||||||
|
|
||||||
<table class="form-table">
|
|
||||||
<tbody>
|
|
||||||
|
|
||||||
<tr valign="top">
|
|
||||||
<th scope="row" valign="top">
|
|
||||||
<?php echo $strings['license-key']; ?>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<input id="<?php echo $this->theme_slug; ?>_license_key" name="<?php echo $this->theme_slug; ?>_license_key" type="text" class="regular-text" value="<?php echo esc_attr( $license ); ?>" />
|
|
||||||
<p class="description">
|
|
||||||
<?php echo $message; ?>
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<?php if ( $license ) { ?>
|
|
||||||
<tr valign="top">
|
|
||||||
<th scope="row" valign="top">
|
|
||||||
<?php echo $strings['license-action']; ?>
|
|
||||||
</th>
|
|
||||||
<td>
|
|
||||||
<?php
|
|
||||||
wp_nonce_field( $this->theme_slug . '_nonce', $this->theme_slug . '_nonce' );
|
|
||||||
if ( 'valid' == $status ) { ?>
|
|
||||||
<input type="submit" class="button-secondary" name="<?php echo $this->theme_slug; ?>_license_deactivate" value="<?php esc_attr_e( $strings['deactivate-license'] ); ?>"/>
|
|
||||||
<?php } else { ?>
|
|
||||||
<input type="submit" class="button-secondary" name="<?php echo $this->theme_slug; ?>_license_activate" value="<?php esc_attr_e( $strings['activate-license'] ); ?>"/>
|
|
||||||
<?php }
|
|
||||||
?>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<?php } ?>
|
|
||||||
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<?php submit_button(); ?>
|
|
||||||
</form>
|
|
||||||
<?php
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Registers the option used to store the license key in the options table.
|
|
||||||
*
|
|
||||||
* since 1.0.0
|
|
||||||
*/
|
|
||||||
function register_option() {
|
|
||||||
register_setting(
|
|
||||||
$this->theme_slug . '-license',
|
|
||||||
$this->theme_slug . '_license_key',
|
|
||||||
array( $this, 'sanitize_license' )
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sanitizes the license key.
|
|
||||||
*
|
|
||||||
* since 1.0.0
|
|
||||||
*
|
|
||||||
* @param string $new License key that was submitted.
|
|
||||||
* @return string $new Sanitized license key.
|
|
||||||
*/
|
|
||||||
function sanitize_license( $new ) {
|
|
||||||
|
|
||||||
$old = get_option( $this->theme_slug . '_license_key' );
|
|
||||||
|
|
||||||
if ( $old && $old != $new ) {
|
|
||||||
// New license has been entered, so must reactivate
|
|
||||||
delete_option( $this->theme_slug . '_license_key_status' );
|
|
||||||
delete_transient( $this->theme_slug . '_license_message' );
|
|
||||||
}
|
|
||||||
|
|
||||||
return $new;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Makes a call to the API.
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*
|
|
||||||
* @param array $api_params to be used for wp_remote_get.
|
|
||||||
* @return array $response decoded JSON response.
|
|
||||||
*/
|
|
||||||
function get_api_response( $api_params ) {
|
|
||||||
|
|
||||||
// Call the custom API.
|
|
||||||
$verify_ssl = (bool) apply_filters( 'edd_sl_api_request_verify_ssl', true );
|
|
||||||
$response = wp_remote_post( $this->remote_api_url, array( 'timeout' => 15, 'sslverify' => $verify_ssl, 'body' => $api_params ) );
|
|
||||||
|
|
||||||
return $response;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Activates the license key.
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
function activate_license() {
|
|
||||||
|
|
||||||
$license = trim( get_option( $this->theme_slug . '_license_key' ) );
|
|
||||||
|
|
||||||
// Data to send in our API request.
|
|
||||||
$api_params = array(
|
|
||||||
'edd_action' => 'activate_license',
|
|
||||||
'license' => $license,
|
|
||||||
'item_name' => urlencode( $this->item_name ),
|
|
||||||
'url' => home_url()
|
|
||||||
);
|
|
||||||
|
|
||||||
$response = $this->get_api_response( $api_params );
|
|
||||||
|
|
||||||
// make sure the response came back okay
|
|
||||||
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
|
|
||||||
|
|
||||||
if ( is_wp_error( $response ) ) {
|
|
||||||
$message = $response->get_error_message();
|
|
||||||
} else {
|
|
||||||
$message = __( 'An error occurred, please try again.' );
|
|
||||||
}
|
|
||||||
|
|
||||||
$base_url = admin_url( 'themes.php?page=' . $this->theme_slug . '-license' );
|
|
||||||
$redirect = add_query_arg( array( 'sl_theme_activation' => 'false', 'message' => urlencode( $message ) ), $base_url );
|
|
||||||
|
|
||||||
wp_redirect( $redirect );
|
|
||||||
exit();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
|
|
||||||
|
|
||||||
if ( false === $license_data->success ) {
|
|
||||||
|
|
||||||
switch( $license_data->error ) {
|
|
||||||
|
|
||||||
case 'expired' :
|
|
||||||
|
|
||||||
$message = sprintf(
|
|
||||||
__( 'Your license key expired on %s.' ),
|
|
||||||
date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) )
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'disabled':
|
|
||||||
case 'revoked' :
|
|
||||||
|
|
||||||
$message = __( 'Your license key has been disabled.' );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'missing' :
|
|
||||||
|
|
||||||
$message = __( 'Invalid license.' );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'invalid' :
|
|
||||||
case 'site_inactive' :
|
|
||||||
|
|
||||||
$message = __( 'Your license is not active for this URL.' );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'item_name_mismatch' :
|
|
||||||
|
|
||||||
$message = sprintf( __( 'This appears to be an invalid license key for %s.' ), $this->item_name );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'no_activations_left':
|
|
||||||
|
|
||||||
$message = __( 'Your license key has reached its activation limit.' );
|
|
||||||
break;
|
|
||||||
|
|
||||||
default :
|
|
||||||
|
|
||||||
$message = __( 'An error occurred, please try again.' );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! empty( $message ) ) {
|
|
||||||
$base_url = admin_url( 'themes.php?page=' . $this->theme_slug . '-license' );
|
|
||||||
$redirect = add_query_arg( array( 'sl_theme_activation' => 'false', 'message' => urlencode( $message ) ), $base_url );
|
|
||||||
|
|
||||||
wp_redirect( $redirect );
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// $response->license will be either "active" or "inactive"
|
|
||||||
if ( $license_data && isset( $license_data->license ) ) {
|
|
||||||
update_option( $this->theme_slug . '_license_key_status', $license_data->license );
|
|
||||||
delete_transient( $this->theme_slug . '_license_message' );
|
|
||||||
}
|
|
||||||
|
|
||||||
wp_redirect( admin_url( 'themes.php?page=' . $this->theme_slug . '-license' ) );
|
|
||||||
exit();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Deactivates the license key.
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
function deactivate_license() {
|
|
||||||
|
|
||||||
// Retrieve the license from the database.
|
|
||||||
$license = trim( get_option( $this->theme_slug . '_license_key' ) );
|
|
||||||
|
|
||||||
// Data to send in our API request.
|
|
||||||
$api_params = array(
|
|
||||||
'edd_action' => 'deactivate_license',
|
|
||||||
'license' => $license,
|
|
||||||
'item_name' => urlencode( $this->item_name ),
|
|
||||||
'url' => home_url()
|
|
||||||
);
|
|
||||||
|
|
||||||
$response = $this->get_api_response( $api_params );
|
|
||||||
|
|
||||||
// make sure the response came back okay
|
|
||||||
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
|
|
||||||
|
|
||||||
if ( is_wp_error( $response ) ) {
|
|
||||||
$message = $response->get_error_message();
|
|
||||||
} else {
|
|
||||||
$message = __( 'An error occurred, please try again.' );
|
|
||||||
}
|
|
||||||
|
|
||||||
$base_url = admin_url( 'themes.php?page=' . $this->theme_slug . '-license' );
|
|
||||||
$redirect = add_query_arg( array( 'sl_theme_activation' => 'false', 'message' => urlencode( $message ) ), $base_url );
|
|
||||||
|
|
||||||
wp_redirect( $redirect );
|
|
||||||
exit();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
|
|
||||||
|
|
||||||
// $license_data->license will be either "deactivated" or "failed"
|
|
||||||
if ( $license_data && ( $license_data->license == 'deactivated' ) ) {
|
|
||||||
delete_option( $this->theme_slug . '_license_key_status' );
|
|
||||||
delete_transient( $this->theme_slug . '_license_message' );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ! empty( $message ) ) {
|
|
||||||
$base_url = admin_url( 'themes.php?page=' . $this->theme_slug . '-license' );
|
|
||||||
$redirect = add_query_arg( array( 'sl_theme_activation' => 'false', 'message' => urlencode( $message ) ), $base_url );
|
|
||||||
|
|
||||||
wp_redirect( $redirect );
|
|
||||||
exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
wp_redirect( admin_url( 'themes.php?page=' . $this->theme_slug . '-license' ) );
|
|
||||||
exit();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructs a renewal link
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
function get_renewal_link() {
|
|
||||||
|
|
||||||
// If a renewal link was passed in the config, use that
|
|
||||||
if ( '' != $this->renew_url ) {
|
|
||||||
return $this->renew_url;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If download_id was passed in the config, a renewal link can be constructed
|
|
||||||
$license_key = trim( get_option( $this->theme_slug . '_license_key', false ) );
|
|
||||||
if ( '' != $this->download_id && $license_key ) {
|
|
||||||
$url = esc_url( $this->remote_api_url );
|
|
||||||
$url .= '/checkout/?edd_license_key=' . $license_key . '&download_id=' . $this->download_id;
|
|
||||||
return $url;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Otherwise return the remote_api_url
|
|
||||||
return $this->remote_api_url;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if a license action was submitted.
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
function license_action() {
|
|
||||||
|
|
||||||
if ( isset( $_POST[ $this->theme_slug . '_license_activate' ] ) ) {
|
|
||||||
if ( check_admin_referer( $this->theme_slug . '_nonce', $this->theme_slug . '_nonce' ) ) {
|
|
||||||
$this->activate_license();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( isset( $_POST[$this->theme_slug . '_license_deactivate'] ) ) {
|
|
||||||
if ( check_admin_referer( $this->theme_slug . '_nonce', $this->theme_slug . '_nonce' ) ) {
|
|
||||||
$this->deactivate_license();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if license is valid and gets expire date.
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*
|
|
||||||
* @return string $message License status message.
|
|
||||||
*/
|
|
||||||
function check_license() {
|
|
||||||
|
|
||||||
$license = trim( get_option( $this->theme_slug . '_license_key' ) );
|
|
||||||
$strings = $this->strings;
|
|
||||||
|
|
||||||
$api_params = array(
|
|
||||||
'edd_action' => 'check_license',
|
|
||||||
'license' => $license,
|
|
||||||
'item_name' => urlencode( $this->item_name ),
|
|
||||||
'url' => home_url()
|
|
||||||
);
|
|
||||||
|
|
||||||
$response = $this->get_api_response( $api_params );
|
|
||||||
|
|
||||||
// make sure the response came back okay
|
|
||||||
if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
|
|
||||||
|
|
||||||
if ( is_wp_error( $response ) ) {
|
|
||||||
$message = $response->get_error_message();
|
|
||||||
} else {
|
|
||||||
$message = $strings['license-status-unknown'];
|
|
||||||
}
|
|
||||||
|
|
||||||
$base_url = admin_url( 'themes.php?page=' . $this->theme_slug . '-license' );
|
|
||||||
$redirect = add_query_arg( array( 'sl_theme_activation' => 'false', 'message' => urlencode( $message ) ), $base_url );
|
|
||||||
|
|
||||||
wp_redirect( $redirect );
|
|
||||||
exit();
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$license_data = json_decode( wp_remote_retrieve_body( $response ) );
|
|
||||||
|
|
||||||
// If response doesn't include license data, return
|
|
||||||
if ( !isset( $license_data->license ) ) {
|
|
||||||
$message = $strings['license-status-unknown'];
|
|
||||||
return $message;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We need to update the license status at the same time the message is updated
|
|
||||||
if ( $license_data && isset( $license_data->license ) ) {
|
|
||||||
update_option( $this->theme_slug . '_license_key_status', $license_data->license );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get expire date
|
|
||||||
$expires = false;
|
|
||||||
if ( isset( $license_data->expires ) && 'lifetime' != $license_data->expires ) {
|
|
||||||
$expires = date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) );
|
|
||||||
$renew_link = '<a href="' . esc_url( $this->get_renewal_link() ) . '" target="_blank">' . $strings['renew'] . '</a>';
|
|
||||||
} elseif ( isset( $license_data->expires ) && 'lifetime' == $license_data->expires ) {
|
|
||||||
$expires = 'lifetime';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get site counts
|
|
||||||
$site_count = $license_data->site_count;
|
|
||||||
$license_limit = $license_data->license_limit;
|
|
||||||
|
|
||||||
// If unlimited
|
|
||||||
if ( 0 == $license_limit ) {
|
|
||||||
$license_limit = $strings['unlimited'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $license_data->license == 'valid' ) {
|
|
||||||
$message = $strings['license-key-is-active'] . ' ';
|
|
||||||
if ( isset( $expires ) && 'lifetime' != $expires ) {
|
|
||||||
$message .= sprintf( $strings['expires%s'], $expires ) . ' ';
|
|
||||||
}
|
|
||||||
if ( isset( $expires ) && 'lifetime' == $expires ) {
|
|
||||||
$message .= $strings['expires-never'];
|
|
||||||
}
|
|
||||||
if ( $site_count && $license_limit ) {
|
|
||||||
$message .= sprintf( $strings['%1$s/%2$-sites'], $site_count, $license_limit );
|
|
||||||
}
|
|
||||||
} else if ( $license_data->license == 'expired' ) {
|
|
||||||
if ( $expires ) {
|
|
||||||
$message = sprintf( $strings['license-key-expired-%s'], $expires );
|
|
||||||
} else {
|
|
||||||
$message = $strings['license-key-expired'];
|
|
||||||
}
|
|
||||||
if ( $renew_link ) {
|
|
||||||
$message .= ' ' . $renew_link;
|
|
||||||
}
|
|
||||||
} else if ( $license_data->license == 'invalid' ) {
|
|
||||||
$message = $strings['license-keys-do-not-match'];
|
|
||||||
} else if ( $license_data->license == 'inactive' ) {
|
|
||||||
$message = $strings['license-is-inactive'];
|
|
||||||
} else if ( $license_data->license == 'disabled' ) {
|
|
||||||
$message = $strings['license-key-is-disabled'];
|
|
||||||
} else if ( $license_data->license == 'site_inactive' ) {
|
|
||||||
// Site is inactive
|
|
||||||
$message = $strings['site-is-inactive'];
|
|
||||||
} else {
|
|
||||||
$message = $strings['license-status-unknown'];
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
return $message;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Disable requests to wp.org repository for this theme.
|
|
||||||
*
|
|
||||||
* @since 1.0.0
|
|
||||||
*/
|
|
||||||
function disable_wporg_request( $r, $url ) {
|
|
||||||
|
|
||||||
// If it's not a theme update request, bail.
|
|
||||||
if ( 0 !== strpos( $url, 'https://api.wordpress.org/themes/update-check/1.1/' ) ) {
|
|
||||||
return $r;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Decode the JSON response
|
|
||||||
$themes = json_decode( $r['body']['themes'] );
|
|
||||||
|
|
||||||
// Remove the active parent and child themes from the check
|
|
||||||
$parent = get_option( 'template' );
|
|
||||||
$child = get_option( 'stylesheet' );
|
|
||||||
unset( $themes->themes->$parent );
|
|
||||||
unset( $themes->themes->$child );
|
|
||||||
|
|
||||||
// Encode the updated JSON response
|
|
||||||
$r['body']['themes'] = json_encode( $themes );
|
|
||||||
|
|
||||||
return $r;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is a means of catching errors from the activation method above and displyaing it to the customer
|
|
||||||
*/
|
|
||||||
function edd_sample_theme_admin_notices() {
|
|
||||||
if ( isset( $_GET['sl_theme_activation'] ) && ! empty( $_GET['message'] ) ) {
|
|
||||||
|
|
||||||
switch( $_GET['sl_theme_activation'] ) {
|
|
||||||
|
|
||||||
case 'false':
|
|
||||||
$message = urldecode( $_GET['message'] );
|
|
||||||
?>
|
|
||||||
<div class="error">
|
|
||||||
<p><?php echo $message; ?></p>
|
|
||||||
</div>
|
|
||||||
<?php
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'true':
|
|
||||||
default:
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
add_action( 'admin_notices', 'edd_sample_theme_admin_notices' );
|
|
|
@ -1,192 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Theme updater class.
|
|
||||||
*
|
|
||||||
* @package EDD Sample Theme
|
|
||||||
* @version 1.0.3
|
|
||||||
*/
|
|
||||||
|
|
||||||
class EDD_Theme_Updater {
|
|
||||||
|
|
||||||
private $remote_api_url;
|
|
||||||
private $request_data;
|
|
||||||
private $response_key;
|
|
||||||
private $theme_slug;
|
|
||||||
private $license_key;
|
|
||||||
private $version;
|
|
||||||
private $author;
|
|
||||||
protected $strings = null;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initiate the Theme updater
|
|
||||||
*
|
|
||||||
* @param array $args Array of arguments from the theme requesting an update check
|
|
||||||
* @param array $strings Strings for the update process
|
|
||||||
*/
|
|
||||||
function __construct( $args = array(), $strings = array() ) {
|
|
||||||
|
|
||||||
$defaults = array(
|
|
||||||
'remote_api_url' => 'http://easydigitaldownloads.com',
|
|
||||||
'request_data' => array(),
|
|
||||||
'theme_slug' => get_template(), // use get_stylesheet() for child theme updates
|
|
||||||
'item_name' => '',
|
|
||||||
'license' => '',
|
|
||||||
'version' => '',
|
|
||||||
'author' => '',
|
|
||||||
'beta' => false,
|
|
||||||
);
|
|
||||||
|
|
||||||
$args = wp_parse_args( $args, $defaults );
|
|
||||||
|
|
||||||
$this->license = $args['license'];
|
|
||||||
$this->item_name = $args['item_name'];
|
|
||||||
$this->version = $args['version'];
|
|
||||||
$this->theme_slug = sanitize_key( $args['theme_slug'] );
|
|
||||||
$this->author = $args['author'];
|
|
||||||
$this->beta = $args['beta'];
|
|
||||||
$this->remote_api_url = $args['remote_api_url'];
|
|
||||||
$this->response_key = $this->theme_slug . '-' . $this->beta . '-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' ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Show the update notification when neecessary
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function load_themes_screen() {
|
|
||||||
add_thickbox();
|
|
||||||
add_action( 'admin_notices', array( $this, 'update_nag' ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Display the update notifications
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
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( $strings['update-notice'] ) . '\') ) {return true;}return false;"';
|
|
||||||
|
|
||||||
if ( version_compare( $this->version, $api_response->new_version, '<' ) ) {
|
|
||||||
|
|
||||||
echo '<div id="update-nag">';
|
|
||||||
printf(
|
|
||||||
$strings['update-available'],
|
|
||||||
$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>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Update the theme update transient with the response from the version check
|
|
||||||
*
|
|
||||||
* @param array $value The default update values.
|
|
||||||
* @return array|boolean If an update is available, returns the update parameters, if no update is needed returns false, if
|
|
||||||
* the request fails returns false.
|
|
||||||
*/
|
|
||||||
function theme_update_transient( $value ) {
|
|
||||||
$update_data = $this->check_for_update();
|
|
||||||
if ( $update_data ) {
|
|
||||||
|
|
||||||
// Make sure the theme property is set. See issue 1463 on Github in the Software Licensing Repo.
|
|
||||||
$update_data['theme'] = $this->theme_slug;
|
|
||||||
|
|
||||||
$value->response[ $this->theme_slug ] = $update_data;
|
|
||||||
}
|
|
||||||
return $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove the update data for the theme
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function delete_theme_update_transient() {
|
|
||||||
delete_transient( $this->response_key );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call the EDD SL API (using the URL in the construct) to get the latest version information
|
|
||||||
*
|
|
||||||
* @return array|boolean If an update is available, returns the update parameters, if no update is needed returns false, if
|
|
||||||
* the request fails returns false.
|
|
||||||
*/
|
|
||||||
function check_for_update() {
|
|
||||||
|
|
||||||
$update_data = get_transient( $this->response_key );
|
|
||||||
|
|
||||||
if ( false === $update_data ) {
|
|
||||||
$failed = false;
|
|
||||||
|
|
||||||
$api_params = array(
|
|
||||||
'edd_action' => 'get_version',
|
|
||||||
'license' => $this->license,
|
|
||||||
'name' => $this->item_name,
|
|
||||||
'slug' => $this->theme_slug,
|
|
||||||
'version' => $this->version,
|
|
||||||
'author' => $this->author,
|
|
||||||
'beta' => $this->beta
|
|
||||||
);
|
|
||||||
|
|
||||||
$response = wp_remote_post( $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', time() ) );
|
|
||||||
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', time() ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( version_compare( $this->version, $update_data->new_version, '>=' ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (array) $update_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Easy Digital Downloads Theme Updater
|
|
||||||
*
|
|
||||||
* @package EDD Sample Theme
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Includes the files needed for the theme updater
|
|
||||||
if ( !class_exists( 'EDD_Theme_Updater_Admin' ) ) {
|
|
||||||
include( dirname( __FILE__ ) . '/theme-updater-admin.php' );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Loads the updater classes
|
|
||||||
$updater = new EDD_Theme_Updater_Admin(
|
|
||||||
|
|
||||||
// Config settings
|
|
||||||
$config = array(
|
|
||||||
'remote_api_url' => 'https://alx.media', // Site where EDD is hosted
|
|
||||||
'item_name' => 'Clearwork', // Name of theme
|
|
||||||
'theme_slug' => 'clearwork', // Theme slug
|
|
||||||
'version' => '1.0.1', // The current version of this theme
|
|
||||||
'author' => 'AlxMedia', // The author of this theme
|
|
||||||
'download_id' => '', // Optional, used for generating a license renewal link
|
|
||||||
'renew_url' => '', // Optional, allows for a custom license renewal link
|
|
||||||
'beta' => false, // Optional, set to true to opt into beta versions
|
|
||||||
),
|
|
||||||
|
|
||||||
// Strings
|
|
||||||
$strings = array(
|
|
||||||
'theme-license' => __( 'Theme License', 'clearwork' ),
|
|
||||||
'enter-key' => __( 'Enter your theme license key.', 'clearwork' ),
|
|
||||||
'license-key' => __( 'License Key', 'clearwork' ),
|
|
||||||
'license-action' => __( 'License Action', 'clearwork' ),
|
|
||||||
'deactivate-license' => __( 'Deactivate License', 'clearwork' ),
|
|
||||||
'activate-license' => __( 'Activate License', 'clearwork' ),
|
|
||||||
'status-unknown' => __( 'License status is unknown.', 'clearwork' ),
|
|
||||||
'renew' => __( 'Renew?', 'clearwork' ),
|
|
||||||
'unlimited' => __( 'unlimited', 'clearwork' ),
|
|
||||||
'license-key-is-active' => __( 'License key is active.', 'clearwork' ),
|
|
||||||
'expires%s' => __( 'Expires %s.', 'clearwork' ),
|
|
||||||
'expires-never' => __( 'Lifetime License.', 'clearwork' ),
|
|
||||||
'%1$s/%2$-sites' => __( 'You have %1$s / %2$s sites activated.', 'clearwork' ),
|
|
||||||
'license-key-expired-%s' => __( 'License key expired %s.', 'clearwork' ),
|
|
||||||
'license-key-expired' => __( 'License key has expired.', 'clearwork' ),
|
|
||||||
'license-keys-do-not-match' => __( 'License keys do not match.', 'clearwork' ),
|
|
||||||
'license-is-inactive' => __( 'License is inactive.', 'clearwork' ),
|
|
||||||
'license-key-is-disabled' => __( 'License key is disabled.', 'clearwork' ),
|
|
||||||
'site-is-inactive' => __( 'Site is inactive.', 'clearwork' ),
|
|
||||||
'license-status-unknown' => __( 'License status is unknown.', 'clearwork' ),
|
|
||||||
'update-notice' => __( "Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update.", 'clearwork' ),
|
|
||||||
'update-available' => __('<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>.', 'clearwork' ),
|
|
||||||
)
|
|
||||||
|
|
||||||
);
|
|
|
@ -2,7 +2,7 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Clearwork\n"
|
"Project-Id-Version: Clearwork\n"
|
||||||
"POT-Creation-Date: 2021-03-05 15:46+0100\n"
|
"POT-Creation-Date: 2021-03-08 18:58+0100\n"
|
||||||
"PO-Revision-Date: 2018-09-21 21:27+0100\n"
|
"PO-Revision-Date: 2018-09-21 21:27+0100\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -55,83 +55,83 @@ msgstr ""
|
||||||
msgid "Theme by"
|
msgid "Theme by"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:90
|
#: functions.php:84
|
||||||
msgid "Mobile"
|
msgid "Mobile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:91 functions/theme-options.php:52
|
#: functions.php:85 functions/theme-options.php:52
|
||||||
msgid "Header"
|
msgid "Header"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:183
|
#: functions.php:177
|
||||||
msgid "Primary"
|
msgid "Primary"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:183
|
#: functions.php:177
|
||||||
msgid "Normal full width sidebar"
|
msgid "Normal full width sidebar"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:185 functions/theme-options.php:273
|
#: functions.php:179 functions/theme-options.php:273
|
||||||
msgid "Footer Ads"
|
msgid "Footer Ads"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:185
|
#: functions.php:179
|
||||||
msgid "Footer ads area"
|
msgid "Footer ads area"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:187
|
#: functions.php:181
|
||||||
msgid "Frontpage Top 1"
|
msgid "Frontpage Top 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:187 functions.php:188 functions.php:189 functions.php:190
|
#: functions.php:181 functions.php:182 functions.php:183 functions.php:184
|
||||||
msgid "Frontpage area"
|
msgid "Frontpage area"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:188
|
#: functions.php:182
|
||||||
msgid "Frontpage Top 2"
|
msgid "Frontpage Top 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:189
|
#: functions.php:183
|
||||||
msgid "Frontpage Bottom 1"
|
msgid "Frontpage Bottom 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:190
|
#: functions.php:184
|
||||||
msgid "Frontpage Bottom 2"
|
msgid "Frontpage Bottom 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:192
|
#: functions.php:186
|
||||||
msgid "Footer 1"
|
msgid "Footer 1"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:192 functions.php:193 functions.php:194 functions.php:195
|
#: functions.php:186 functions.php:187 functions.php:188 functions.php:189
|
||||||
msgid "Widgetized footer"
|
msgid "Widgetized footer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:193
|
#: functions.php:187
|
||||||
msgid "Footer 2"
|
msgid "Footer 2"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:194
|
#: functions.php:188
|
||||||
msgid "Footer 3"
|
msgid "Footer 3"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:195
|
#: functions.php:189
|
||||||
msgid "Footer 4"
|
msgid "Footer 4"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:687
|
#: functions.php:681
|
||||||
msgid "Alx Extensions"
|
msgid "Alx Extensions"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:691
|
#: functions.php:685
|
||||||
msgid "Meta Box"
|
msgid "Meta Box"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:695
|
#: functions.php:689
|
||||||
msgid "Regenerate Thumbnails"
|
msgid "Regenerate Thumbnails"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions.php:699
|
#: functions.php:693
|
||||||
msgid "WP-PageNavi"
|
msgid "WP-PageNavi"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -745,132 +745,6 @@ msgstr ""
|
||||||
msgid "Footer Background"
|
msgid "Footer Background"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: functions/updater/theme-updater-admin.php:276
|
|
||||||
#: functions/updater/theme-updater-admin.php:330
|
|
||||||
#: functions/updater/theme-updater-admin.php:383
|
|
||||||
msgid "An error occurred, please try again."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater-admin.php:296
|
|
||||||
#, php-format
|
|
||||||
msgid "Your license key expired on %s."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater-admin.php:304
|
|
||||||
msgid "Your license key has been disabled."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater-admin.php:309
|
|
||||||
msgid "Invalid license."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater-admin.php:315
|
|
||||||
msgid "Your license is not active for this URL."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater-admin.php:320
|
|
||||||
#, php-format
|
|
||||||
msgid "This appears to be an invalid license key for %s."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater-admin.php:325
|
|
||||||
msgid "Your license key has reached its activation limit."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:30
|
|
||||||
msgid "Theme License"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:31
|
|
||||||
msgid "Enter your theme license key."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:32
|
|
||||||
msgid "License Key"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:33
|
|
||||||
msgid "License Action"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:34
|
|
||||||
msgid "Deactivate License"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:35
|
|
||||||
msgid "Activate License"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:36
|
|
||||||
#: functions/updater/theme-updater.php:49
|
|
||||||
msgid "License status is unknown."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:37
|
|
||||||
msgid "Renew?"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:38
|
|
||||||
msgid "unlimited"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:39
|
|
||||||
msgid "License key is active."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:40
|
|
||||||
#, php-format
|
|
||||||
msgid "Expires %s."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:41
|
|
||||||
msgid "Lifetime License."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:42
|
|
||||||
#, php-format
|
|
||||||
msgid "You have %1$s / %2$s sites activated."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:43
|
|
||||||
#, php-format
|
|
||||||
msgid "License key expired %s."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:44
|
|
||||||
msgid "License key has expired."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:45
|
|
||||||
msgid "License keys do not match."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:46
|
|
||||||
msgid "License is inactive."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:47
|
|
||||||
msgid "License key is disabled."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:48
|
|
||||||
msgid "Site is inactive."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:50
|
|
||||||
msgid ""
|
|
||||||
"Updating this theme will lose any customizations you have made. 'Cancel' to "
|
|
||||||
"stop, 'OK' to update."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: functions/updater/theme-updater.php:51
|
|
||||||
#, php-format
|
|
||||||
msgid ""
|
|
||||||
"<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>."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: header.php:19
|
#: header.php:19
|
||||||
msgid "Skip to content"
|
msgid "Skip to content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -69,6 +69,10 @@ Source: https://stocksnap.io
|
||||||
|
|
||||||
== Changelog ==
|
== Changelog ==
|
||||||
|
|
||||||
|
= 1.0.2 - 2021-03-08 =
|
||||||
|
* Removed premium theme updater code
|
||||||
|
* Updated language files
|
||||||
|
|
||||||
= 1.0.1 - 2021-03-05 =
|
= 1.0.1 - 2021-03-05 =
|
||||||
* Fixed: mobile menu tabbing will enter in the menu even when it's closed
|
* Fixed: mobile menu tabbing will enter in the menu even when it's closed
|
||||||
* Fixed: trap focus in search popup
|
* Fixed: trap focus in search popup
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
Theme Name: Clearwork
|
Theme Name: Clearwork
|
||||||
Theme URI: http://alx.media/themes/clearwork/
|
Theme URI: http://alx.media/themes/clearwork/
|
||||||
Version: 1.0.1
|
Version: 1.0.2
|
||||||
Requires at least: 5.0
|
Requires at least: 5.0
|
||||||
Requires PHP: 5.6
|
Requires PHP: 5.6
|
||||||
Tested up to: 5.6
|
Tested up to: 5.6
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue