HEX
Server: Apache/2.4.65 (Debian)
System: Linux web6 5.10.0-36-amd64 #1 SMP Debian 5.10.244-1 (2025-09-29) x86_64
User: innocamp (1028)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/hcp/public_html/wp-content/themes/jupiterx/lib/api/compatibility/class.php
<?php
/**
 * This class handles the Compatibility component.
 *
 * @package JupiterX\Framework\API\Compatibility
 *
 * @since 1.0.0
 */

/**
 * The Compatibility component.
 *
 * @since   1.0.0
 * @ignore
 * @access  private
 *
 * @package JupiterX\Framework\API\Compatibility
 */
final class _JupiterX_Compatibility {

	/**
	 * Versions update functions.
	 *
	 * @var array
	 */
	private $updates = [
		'1.0.2'  => 'jupiterx_update_v102',
		'1.3.0'  => 'jupiterx_update_v130',
		'1.11.0' => 'jupiterx_update_v1110',
		'1.22.1' => 'jupiterx_update_v1221',
		'2.0.9'  => 'jupiterx_update_v209',
		'3.0.0'  => 'jupiterx_update_v300',
	];

	/**
	 * Current Jupiter version saved from database.
	 *
	 * @var string
	 */
	private $current_version = '';

	/**
	 * Class constructor.
	 *
	 * @since 1.0.0
	 *
	 * @return void
	 */
	public function __construct() {
		add_action( 'jupiterx_before_theme_version_update', [ $this, 'before_theme_version_update' ] );

		$this->version_check();

		$this->update_current_version();
	}

	/**
	 * Run version compare.
	 *
	 * @since 1.0.0
	 *
	 * @return void
	 */
	public function version_check() {
		$this->current_version = jupiterx_get_option( 'theme_current_version', null );

		// Short circuit.
		if ( version_compare( JUPITERX_VERSION, $this->current_version, '==' ) ) {
			return;
		}

		// Get version from deprecated option storage.
		if ( is_null( $this->current_version ) ) {
			$prev_version = get_option( 'jupiterx_theme_version', null );

			if ( $prev_version ) {
				$this->current_version = $prev_version;
				delete_option( 'jupiterx_theme_version' );
			} elseif ( get_option( 'jupiterx_theme_current_version' ) ) {
				// Since version 1.5.0, the compatibility updater class had a bug that stop updating the `jupiterx_theme_version` option.
				// This would be a starting point for our updater to run functions it needs when user starts updating their theme greater
				// than 1.7.0 version. This code block will only run when the user installed the theme on version >= 1.5.0 and <= 1.7.0.
				$this->current_version = '1.5.0';
				delete_option( 'jupiterx_theme_current_version' );
			}
		}

		// Empty value considered as a fresh installed theme.
		if ( is_null( $this->current_version ) || empty( $this->current_version ) ) {
			$this->update_version();
			return;
		}

		if ( version_compare( JUPITERX_VERSION, $this->current_version, '>' ) ) {
			$this->run_updates();
		}
	}

	/**
	 * Clear plugin related transients or caches when new theme is installed.
	 *
	 * @since 1.18.0
	 *
	 * @return void
	 */
	public function before_theme_version_update() {
		$this->clear_plugins_transients();
	}

	/**
	 * Keep current theme version upto date.
	 *
	 * @since 1.20.0
	 * @access public
	 *
	 * @return void
	 */
	public function update_current_version() {
		if ( jupiterx_get_option( 'theme_current_version' ) === JUPITERX_VERSION ) {
			return;
		}

		jupiterx_update_option( 'theme_current_version', JUPITERX_VERSION );

		$this->clear_plugins_transients();
	}

	/**
	 * Update version from the database.
	 *
	 * @since 1.0.0
	 *
	 * @return void
	 */
	private function update_version() {
		do_action( 'jupiterx_before_theme_version_update' );

		jupiterx_update_option( 'theme_version', JUPITERX_VERSION );
	}

	/**
	 * Run updates.
	 *
	 * @since 1.0.0
	 *
	 * @return void
	 */
	private function run_updates() {
		// Run updates.
		foreach ( $this->updates as $version => $function ) {
			if ( version_compare( $version, $this->current_version, '>' ) ) {
				call_user_func( $function );
			}
		}

		// Safe to update version.
		$this->update_version();
	}

	/**
	 * Clear all the plugins related transients.
	 *
	 * @since 1.20.0
	 * @access private
	 *
	 * @return void
	 */
	private function clear_plugins_transients() {
		delete_site_transient( 'update_plugins' );
		delete_site_transient( 'jupiterx_managed_plugins' );
		delete_transient( 'jupiterx_tgmpa_plugins' );
	}
}

new _JupiterX_Compatibility();