File "Package.php"
Full Path: /home/vantageo/public_html/cache/cache/cache/cache/cache/.wp-cli/wp-content/plugins/woocommerce/packages/woocommerce-admin/src/Composer/Package.php
File size: 3.61 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Returns information about the package and handles init.
*/
/**
* This namespace isn't compatible with the PSR-4
* which ensures that the copy in the standalone plugin will not be autoloaded.
*/
namespace Automattic\WooCommerce\Admin\Composer;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\Notes\DeactivatePlugin;
use Automattic\WooCommerce\Admin\FeaturePlugin;
/**
* Main package class.
*/
class Package {
/**
* Version.
*
* @var string
*/
const VERSION = '2.3.1';
/**
* Package active.
*
* @var bool
*/
private static $package_active = false;
/**
* Active version
*
* @var bool
*/
private static $active_version = null;
/**
* Init the package.
*
* Only initialize for WP 5.3 or greater.
*/
public static function init() {
// Avoid double initialization when the feature plugin is in use.
if ( defined( 'WC_ADMIN_VERSION_NUMBER' ) ) {
self::$active_version = WC_ADMIN_VERSION_NUMBER;
// Check version after WooCommerce is initialized.
add_action( 'woocommerce_init', array( __CLASS__, 'check_outdated_wca_plugin' ) );
// Register a deactivation hook for the feature plugin.
register_deactivation_hook( WC_ADMIN_PLUGIN_FILE, array( __CLASS__, 'on_deactivation' ) );
return;
}
$feature_plugin_instance = FeaturePlugin::instance();
$satisfied_dependencies = is_callable( array( $feature_plugin_instance, 'has_satisfied_dependencies' ) ) && $feature_plugin_instance->has_satisfied_dependencies();
if ( ! $satisfied_dependencies ) {
return;
}
// Indicate to the feature plugin that the core package exists.
if ( ! defined( 'WC_ADMIN_PACKAGE_EXISTS' ) ) {
define( 'WC_ADMIN_PACKAGE_EXISTS', true );
}
self::$package_active = true;
self::$active_version = self::VERSION;
$feature_plugin_instance->init();
// Unhook the custom Action Scheduler data store class in active older versions of WC Admin.
remove_filter( 'action_scheduler_store_class', array( $feature_plugin_instance, 'replace_actionscheduler_store_class' ) );
}
/**
* Return the version of the package.
*
* @return string
*/
public static function get_version() {
return self::VERSION;
}
/**
* Return the active version of WC Admin.
*
* @return string
*/
public static function get_active_version() {
return self::$active_version;
}
/**
* Return whether the package is active.
*
* @return bool
*/
public static function is_package_active() {
return self::$package_active;
}
/**
* Return the path to the package.
*
* @return string
*/
public static function get_path() {
return dirname( __DIR__ );
}
/**
* Add deactivation hook for versions of the plugin that don't have the deactivation note.
*/
public static function on_deactivation() {
if ( ! self::is_notes_initialized() ) {
return;
}
$update_version = new DeactivatePlugin();
$update_version::delete_note();
}
/**
* Checks if embedded WCA version is newer than standalone WCA
* and adds/removes DeactivatePlugin note as necessary.
*/
public static function check_outdated_wca_plugin() {
if ( ! self::is_notes_initialized() ) {
return;
}
$update_version = new DeactivatePlugin();
if ( version_compare( WC_ADMIN_VERSION_NUMBER, self::VERSION, '<' ) ) {
if ( method_exists( $update_version, 'possibly_add_note' ) ) {
$update_version::possibly_add_note();
}
} else {
$update_version::delete_note();
}
}
/**
* Checks if notes have been initialized.
*/
private static function is_notes_initialized() {
try {
\WC_Data_Store::load( 'admin-note' );
} catch ( \Exception $e ) {
return false;
}
return true;
}
}