PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/craftsperks.online/wp-content/plugins/backupbuddy/lib/updater/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : /home/trave494/craftsperks.online/wp-content/plugins/backupbuddy/lib/updater/settings.php |
<?php /* Central management of options storage and registered packages. Written by Chris Jean for iThemes.com Version 1.2.0 Version History 1.0.0 - 2013-09-19 - Chris Jean Split off from the old Ithemes_Updater_Init class. 1.0.1 - 2013-09-20 - Chris Jean Fixed bug where the old ithemes-updater-object global was being referenced. 1.1.0 - 2013-10-04 - Chris Jean Enhancement: Added handler for GET query variable: ithemes-updater-force-minor-update. Bug Fix: Changed URL regex for applying the CA patch to only apply to links for api.ithemes.com and not the S3 links. Bug Fix: A check to ensure that the $GLOBALS['ithemes_updater_path'] variable is set properly. Misc: Updated file reference for ca/cacert.crt to ca/roots.crt. 1.2.0 - 2013-10-23 - Chris Jean. Enhancement: Added the quick_releases setting. Enhancement: Added an explicit flush when the ithemes-updater-force-minor-update query variable is used Misc: Removed the show_on_sites setting as it is no longer needed. */ class Ithemes_Updater_Settings { private $option_name = 'ithemes-updater-cache'; private $packages = array(); private $new_packages = array(); private $options = false; private $options_modified = false; private $do_flush = false; private $initialized = false; private $plugins_cleaned = false; private $themes_cleaned = false; private $default_options = array( 'server-cache' => 30, 'expiration' => 0, 'timestamp' => 0, 'packages' => array(), 'update_plugins' => array(), 'update_themes' => array(), 'use_ca_patch' => false, 'use_ssl' => true, 'quick_releases' => false, ); public function __construct() { $GLOBALS['ithemes-updater-settings'] = $this; add_action( 'init', array( $this, 'init' ) ); add_action( 'shutdown', array( $this, 'shutdown' ) ); } public function init() { if ( $this->initialized ) return; $this->initialized = true; if ( ! isset( $GLOBALS['ithemes_updater_path'] ) ) $GLOBALS['ithemes_updater_path'] = dirname( __FILE__ ); $this->load(); do_action( 'ithemes_updater_register', $this ); $this->new_packages = array_diff( array_keys( $this->packages ), $this->options['packages'] ); if ( isset( $_GET['ithemes-updater-force-quick-release-update'] ) && ! isset( $_GET['ithemes-updater-force-minor-update'] ) ) $_GET['ithemes-updater-force-minor-update'] = $_GET['ithemes-updater-force-quick-release-update']; if ( isset( $_GET['ithemes-updater-force-minor-update'] ) ) { if ( $_GET['ithemes-updater-force-minor-update'] ) { $this->options['force_minor_version_update'] = time() + 3600; $this->update_options( $this->options ); $this->flush( 'forced minor version update' ); } else { unset( $this->options['force_minor_version_update'] ); $this->update_options( $this->options ); $this->flush( 'unset forced minor version update' ); } } else if ( isset( $this->options['force_minor_version_update'] ) && ( $this->options['force_minor_version_update'] < time() ) ) { unset( $this->options['force_minor_version_update'] ); $this->update_options( $this->options ); } if ( ! empty( $_GET['ithemes-updater-force-refresh'] ) && current_user_can( 'manage_options' ) ) $this->flush( 'forced' ); else if ( empty( $this->options['expiration'] ) || ( $this->options['expiration'] <= time() ) ) $this->flush( 'expired' ); else if ( $this->is_expired( $this->options['timestamp'] ) ) $this->flush( 'got stale' ); else if ( ! empty( $this->new_packages ) ) $this->flush( 'new packages' ); } public function load() { if ( false !== $this->options ) return; $this->options = get_site_option( $this->option_name, false ); if ( ( false === $this->options ) || ! is_array( $this->options ) ) $this->options = array(); $this->options = array_merge( $this->default_options, $this->options ); if ( 0 == $this->options['timestamp'] ) $this->update(); } public function shutdown() { if ( $this->do_flush ) $this->flush(); if ( $this->options_modified ) update_site_option( $this->option_name, $this->options ); } public function queue_flush() { $this->do_flush = true; } public function flush( $reason = '' ) { $this->do_flush = false; $this->update(); } public function update() { $this->init(); require_once( $GLOBALS['ithemes_updater_path'] . '/updates.php' ); Ithemes_Updater_Updates::run_update(); } public function get_options() { $this->init(); return $this->options; } public function get_option( $var ) { $this->init(); if ( isset( $this->options[$var] ) ) return $this->options[$var]; return null; } public function update_options( $updates ) { $this->init(); $this->options = array_merge( $this->options, $updates ); $this->options_modified = true; } public function update_packages() { $this->update_options( array( 'packages' => array_keys( $this->packages ) ) ); } public function get_packages() { return $this->packages; } public function get_new_packages() { return $this->new_packages; } public function filter_update_plugins( $update_plugins ) { if ( ! is_object( $update_plugins ) ) return $update_plugins; if ( ! isset( $update_plugins->response ) || ! is_array( $update_plugins->response ) ) $update_plugins->response = array(); if ( $this->do_flush ) $this->flush(); if ( ! is_array( $this->options ) || ! isset( $this->options['update_plugins'] ) ) $this->load(); if ( isset( $this->options['update_plugins'] ) && is_array( $this->options['update_plugins'] ) ) { if ( ! $this->plugins_cleaned ) { @include_once( ABSPATH . '/wp-admin/includes/plugin.php' ); if ( is_callable( 'get_plugin_data' ) ) { foreach ( $this->options['update_plugins'] as $plugin => $update_data ) { $plugin_data = get_plugin_data( WP_PLUGIN_DIR . "/$plugin", false, false ); if ( $plugin_data['Version'] == $update_data->new_version ) { unset( $this->options['update_plugins'][$plugin] ); $this->plugins_cleaned = true; } } } if ( $this->plugins_cleaned ) { $this->options_modified = true; } $this->plugins_cleaned = true; } $update_plugins->response = array_merge( $update_plugins->response, $this->options['update_plugins'] ); } return $update_plugins; } public function filter_update_themes( $update_themes ) { if ( ! is_object( $update_themes ) ) return $update_themes; if ( ! isset( $update_themes->response ) || ! is_array( $update_themes->response ) ) $update_themes->response = array(); if ( $this->do_flush ) $this->flush(); if ( ! is_array( $this->options ) || ! isset( $this->options['update_themes'] ) ) $this->load(); if ( isset( $this->options['update_themes'] ) && is_array( $this->options['update_themes'] ) ) { if ( ! $this->themes_cleaned ) { foreach ( $this->options['update_themes'] as $theme => $update_data ) { $theme_data = wp_get_theme( $theme ); if ( $theme_data->get( 'Version' ) == $update_data['new_version'] ) { unset( $this->options['update_themes'][$theme] ); $this->themes_cleaned = true; } } if ( $this->themes_cleaned ) { $this->options_modified = true; } $this->themes_cleaned = true; } $update_themes->response = array_merge( $update_themes->response, $this->options['update_themes'] ); } return $update_themes; } public function register( $slug, $file ) { $this->packages[$slug][] = $file; } public function add_ca_patch_to_curl_opts( $handle ) { $url = curl_getinfo( $handle, CURLINFO_EFFECTIVE_URL ); if ( ! preg_match( '{^https://(api|downloads)\.ithemes\.com}', $url ) ) return; curl_setopt( $handle, CURLOPT_CAINFO, $GLOBALS['ithemes_updater_path'] . '/ca/roots.crt' ); } public function enable_ssl_ca_patch() { add_action( 'http_api_curl', array( $this, 'add_ca_patch_to_curl_opts' ) ); } public function disable_ssl_ca_patch() { remove_action( 'http_api_curl', array( $this, 'add_ca_patch_to_curl_opts' ) ); } private function is_expired( $timestamp ) { $page = empty( $_GET['page'] ) ? $GLOBALS['pagenow'] : $_GET['page']; switch ( $page ) { case 'update-core.php' : case 'ithemes-licensing' : $timeout = 60; break; case 'plugins.php' : case 'themes.php' : case 'update.php' : $timeout = 3600; break; default : $timeout = 12 * 3600; } $time = time(); $age = $time - $timestamp; $time_remaining = $timeout - $age; if ( $timestamp <= ( time() - $timeout ) ) return true; return false; } } new Ithemes_Updater_Settings();