????JFIF??x?x????'
| Server IP : 79.136.114.73 / Your IP : 216.73.216.55 Web Server : Apache/2.4.7 (Ubuntu) PHP/5.5.9-1ubuntu4.29 OpenSSL/1.0.1f System : Linux b8009 3.13.0-170-generic #220-Ubuntu SMP Thu May 9 12:40:49 UTC 2019 x86_64 User : www-data ( 33) PHP Version : 5.5.9-1ubuntu4.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/www.astacus.eu/wp-content/themes/Avada/includes/ |
Upload File : |
<?php
// Do not allow directly accessing this file.
if ( ! defined( 'ABSPATH' ) ) {
exit( 'Direct script access denied.' );
}
/**
* A class to handle everything related to product registration
*
* @since 5.0.0
*/
class Avada_Product_Registration {
/**
* The option group name.
*
* @since 5.0.0
*
* @static
* @access private
* @var string
*/
private static $option_group_slug = 'avada_registration';
/**
* The option name.
*
* @since 5.0.0
*
* @static
* @access private
* @var string
*/
private static $option_name = 'avada_registration';
/**
* The option array.
*
* @since 5.0.0
*
* @static
* @access private
* @var array
*/
private static $option;
/**
* The Envato token.
*
* @since 5.0.0
*
* @static
* @access private
* @var string
*/
private static $token;
/**
* Whether the token is valid and for Avada or not.
*
* @since 5.0.0
*
* @static
* @access private
* @var bool
*/
private static $registered;
/**
* The class constructor.
*
* @since 5.0.0
*
* @access public
*/
public function __construct() {
self::init_globals();
// Register the settings.
add_action( 'admin_init', array( $this, 'register_settings' ) );
}
/**
* Initialize the variables..
*
* @since 5.0.0
*
* @access private
* @return void
*/
private function init_globals() {
self::$option = get_option( self::$option_name );
self::$token = self::$option['token'];
self::$registered = get_option( 'avada_registered' );
}
/**
* Returns the option group name.
*
* @since 5.0.0
*
* @access public
* @return string The option group name.
*/
public static function get_option_group_slug() {
return self::$option_group_slug;
}
/**
* Sets a new token.
*
* @since 5.0.0
*
* @access public
* @param string $token A new token.
* @return void
*/
public static function set_token( $token ) {
self::$token = $token;
}
/**
* Returns the current token.
*
* @since 5.0.0
*
* @access public
* @return string The current token.
*/
public static function get_token() {
return self::$token;
}
/**
* Registers the setting field(s) for the registration form.
*
* @since 5.0.0
*
* @access public
* @return void
*/
public function register_settings() {
// Setting.
register_setting( self::$option_group_slug, self::$option_name, array( $this, 'check_registration' ) );
// Token setting.
add_settings_field(
'token',
__( 'Token', 'Avada' ),
array( $this, 'render_token_setting_callback' ),
self::$option_group_slug
);
}
/**
* Renders the token settings field.
*
* @since 5.0.0
*
* @access public
* @return void
*/
public function render_token_setting_callback() {
?>
<input type="text" name="<?php echo esc_attr( $self::$option_name ); ?>[token]" class="widefat" value="<?php echo esc_html( self::$token ); ?>" autocomplete="off">
<?php
}
/**
* Envato API class.
*
* @since 5.0.0
*
* @return Avada_Envato_API
*/
public static function envato_api() {
if ( ! class_exists( 'Avada_Envato_API' ) ) {
require_once( Avada::$template_dir_path . '/includes/class-avada-envato-api.php' );
}
return Avada_Envato_API::instance();
}
/**
* Checks if Avada is part of the themes purchased by the user belonging to the token.
*
* @since 5.0.0
*
* @access public
* @param string $new_value The new token to check.
*/
public function check_registration( $new_value ) {
// Get the old value.
$old_value = false;
$old_setting = get_option( 'avada_registration', false );
if ( is_array( $old_setting ) && isset( $old_setting['token'] ) ) {
$old_value = $old_setting['token'];
}
if ( false === $old_value || empty( $old_value ) ) {
$old_value = array( 'token' => '' );
}
// Check that the new value is properly formatted.
if ( is_array( $new_value ) && isset( $new_value['token'] ) ) {
// If token field is empty, copy is not registered.
if ( empty( $new_value['token'] ) ) {
$registered = false;
} else {
// Remove spaces from the beginning and end of the token.
$new_value['token'] = trim( $new_value['token'] );
// If field contents changed, we have to check if new token is valid.
if ( ! isset( $old_value['token'] ) || ( $old_value['token'] != $new_value['token'] ) ) {
$registered = self::is_avada_in_themes( $new_value['token'] );
}
}
} else {
$new_value = array( 'token' => '' );
}
// Update the 'avada_registered' option.
update_option( 'avada_registered', $registered );
// Return the new value.
return $new_value;
}
/**
* Checks if Avada is part of the themes purchased by the user belonging to the token.
*
* @since 5.0.0
*
* @access private
* @param string $token A token to check.
* @return bool
*/
private static function is_avada_in_themes( $token = '' ) {
// Set the new token for the API call.
if ( '' !== $token ) {
self::envato_api()->set_token( $token );
}
$themes = self::envato_api()->themes();
// If a WP Error object is returned we need to check if API is down.
if ( is_wp_error( $themes ) ) {
// 403 means the token is invalid, so in any other case set a transient to allow bypassing registration.
if ( 403 !== $themes->get_error_code() ) {
set_site_transient( 'avada_envato_api_down', true, 3600 );
}
return false;
}
// Check iv Avada is part of the purchased themes.
foreach ( $themes as $theme ) {
if ( isset( $theme['name'] ) ) {
if ( 'avada' == strtolower( $theme['name'] ) ) {
return true;
}
}
}
return false;
}
/**
* Has user associated with current token purchased Avada?
*
* @access public
* @since 5.0.0
* @return bool
*/
public static function is_registered() {
// If no token is set, the product is not registered.
if ( empty( self::$token ) ) {
return false;
} elseif ( self::$registered ) {
return true;
} elseif ( get_site_transient( 'avada_envato_api_down' ) ) {
return true;
} else {
return false;
}
}
}
/* Omit closing PHP tag to avoid "Headers already sent" issues. */