summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/vendor/jetpack-autoloader/class-autoloader-handler.php')
-rw-r--r--plugins/jetpack/vendor/jetpack-autoloader/class-autoloader-handler.php147
1 files changed, 147 insertions, 0 deletions
diff --git a/plugins/jetpack/vendor/jetpack-autoloader/class-autoloader-handler.php b/plugins/jetpack/vendor/jetpack-autoloader/class-autoloader-handler.php
new file mode 100644
index 00000000..652e98e9
--- /dev/null
+++ b/plugins/jetpack/vendor/jetpack-autoloader/class-autoloader-handler.php
@@ -0,0 +1,147 @@
+<?php
+/**
+ * This file was automatically generated by automattic/jetpack-autoloader.
+ *
+ * @package automattic/jetpack-autoloader
+ */
+
+namespace Automattic\Jetpack\Autoloader\jpf11009ded9fc4592b6a05b61ce272b3c_jetpackⓥ10_5;
+
+ // phpcs:ignore
+
+use Automattic\Jetpack\Autoloader\AutoloadGenerator;
+
+/**
+ * This class selects the package version for the autoloader.
+ */
+class Autoloader_Handler {
+
+ /**
+ * The PHP_Autoloader instance.
+ *
+ * @var PHP_Autoloader
+ */
+ private $php_autoloader;
+
+ /**
+ * The Hook_Manager instance.
+ *
+ * @var Hook_Manager
+ */
+ private $hook_manager;
+
+ /**
+ * The Manifest_Reader instance.
+ *
+ * @var Manifest_Reader
+ */
+ private $manifest_reader;
+
+ /**
+ * The Version_Selector instance.
+ *
+ * @var Version_Selector
+ */
+ private $version_selector;
+
+ /**
+ * The constructor.
+ *
+ * @param PHP_Autoloader $php_autoloader The PHP_Autoloader instance.
+ * @param Hook_Manager $hook_manager The Hook_Manager instance.
+ * @param Manifest_Reader $manifest_reader The Manifest_Reader instance.
+ * @param Version_Selector $version_selector The Version_Selector instance.
+ */
+ public function __construct( $php_autoloader, $hook_manager, $manifest_reader, $version_selector ) {
+ $this->php_autoloader = $php_autoloader;
+ $this->hook_manager = $hook_manager;
+ $this->manifest_reader = $manifest_reader;
+ $this->version_selector = $version_selector;
+ }
+
+ /**
+ * Checks to see whether or not an autoloader is currently in the process of initializing.
+ *
+ * @return bool
+ */
+ public function is_initializing() {
+ // If no version has been set it means that no autoloader has started initializing yet.
+ global $jetpack_autoloader_latest_version;
+ if ( ! isset( $jetpack_autoloader_latest_version ) ) {
+ return false;
+ }
+
+ // When the version is set but the classmap is not it ALWAYS means that this is the
+ // latest autoloader and is being included by an older one.
+ global $jetpack_packages_classmap;
+ if ( empty( $jetpack_packages_classmap ) ) {
+ return true;
+ }
+
+ // Version 2.4.0 added a new global and altered the reset semantics. We need to check
+ // the other global as well since it may also point at initialization.
+ // Note: We don't need to check for the class first because every autoloader that
+ // will set the latest version global requires this class in the classmap.
+ $replacing_version = $jetpack_packages_classmap[ AutoloadGenerator::class ]['version'];
+ if ( $this->version_selector->is_dev_version( $replacing_version ) || version_compare( $replacing_version, '2.4.0.0', '>=' ) ) {
+ global $jetpack_autoloader_loader;
+ if ( ! isset( $jetpack_autoloader_loader ) ) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Activates an autoloader using the given plugins and activates it.
+ *
+ * @param string[] $plugins The plugins to initialize the autoloader for.
+ */
+ public function activate_autoloader( $plugins ) {
+ global $jetpack_packages_psr4;
+ $jetpack_packages_psr4 = array();
+ $this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_psr4.php', $jetpack_packages_psr4 );
+
+ global $jetpack_packages_classmap;
+ $jetpack_packages_classmap = array();
+ $this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_classmap.php', $jetpack_packages_classmap );
+
+ global $jetpack_packages_filemap;
+ $jetpack_packages_filemap = array();
+ $this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_filemap.php', $jetpack_packages_filemap );
+
+ $loader = new Version_Loader(
+ $this->version_selector,
+ $jetpack_packages_classmap,
+ $jetpack_packages_psr4,
+ $jetpack_packages_filemap
+ );
+
+ $this->php_autoloader->register_autoloader( $loader );
+
+ // Now that the autoloader is active we can load the filemap.
+ $loader->load_filemap();
+ }
+
+ /**
+ * Resets the active autoloader and all related global state.
+ */
+ public function reset_autoloader() {
+ $this->php_autoloader->unregister_autoloader();
+ $this->hook_manager->reset();
+
+ // Clear all of the autoloader globals so that older autoloaders don't do anything strange.
+ global $jetpack_autoloader_latest_version;
+ $jetpack_autoloader_latest_version = null;
+
+ global $jetpack_packages_classmap;
+ $jetpack_packages_classmap = array(); // Must be array to avoid exceptions in old autoloaders!
+
+ global $jetpack_packages_psr4;
+ $jetpack_packages_psr4 = array(); // Must be array to avoid exceptions in old autoloaders!
+
+ global $jetpack_packages_filemap;
+ $jetpack_packages_filemap = array(); // Must be array to avoid exceptions in old autoloaders!
+ }
+}