Completed
Push — update/show-recurring-payments... ( 106a5e...b030b6 )
by
unknown
415:44 queued 407:29
created

Autoloader_Handler::update_autoloader_chain()   B

Complexity

Conditions 6
Paths 5

Size

Total Lines 28

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
nc 5
nop 0
dl 0
loc 28
rs 8.8497
c 0
b 0
f 0
1
<?php
2
/* HEADER */ // phpcs:ignore
3
4
/**
5
 * This class selects the package version for the autoloader.
6
 */
7
class Autoloader_Handler {
8
9
	/**
10
	 * The Hook_Manager instance.
11
	 *
12
	 * @var Hook_Manager
13
	 */
14
	private $hook_manager;
15
16
	/**
17
	 * The Manifest_Reader instance.
18
	 *
19
	 * @var Manifest_Reader
20
	 */
21
	private $manifest_reader;
22
23
	/**
24
	 * The Version_Selector instance.
25
	 *
26
	 * @var Version_Selector
27
	 */
28
	private $version_selector;
29
30
	/**
31
	 * The constructor.
32
	 *
33
	 * @param Hook_Manager     $hook_manager The Hook_Manager instance.
34
	 * @param Manifest_Reader  $manifest_reader The Manifest_Reader instance.
35
	 * @param Version_Selector $version_selector The Version_Selector instance.
36
	 */
37
	public function __construct( $hook_manager, $manifest_reader, $version_selector ) {
38
		$this->hook_manager     = $hook_manager;
39
		$this->manifest_reader  = $manifest_reader;
40
		$this->version_selector = $version_selector;
41
	}
42
43
	/**
44
	 * Creates an autoloader using the given plugins and activates it.
45
	 *
46
	 * @param string[] $plugins The plugins to initialize the autoloader for.
47
	 */
48
	public function create_autoloader( $plugins ) {
49
		global $jetpack_packages_psr4;
50
		$jetpack_packages_psr4 = array();
51
		$this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_psr4.php', $jetpack_packages_psr4 );
52
53
		global $jetpack_packages_classmap;
54
		$jetpack_packages_classmap = array();
55
		$this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_classmap.php', $jetpack_packages_classmap );
56
57
		global $jetpack_packages_filemap;
58
		$jetpack_packages_filemap = array();
59
		$this->manifest_reader->read_manifests( $plugins, 'vendor/composer/jetpack_autoload_filemap.php', $jetpack_packages_filemap );
60
61
		$loader = new Version_Loader(
62
			$this->version_selector,
63
			$jetpack_packages_classmap,
64
			$jetpack_packages_psr4,
65
			$jetpack_packages_filemap
66
		);
67
68
		// Activate the autoloader.
69
		Autoloader::activate( $loader );
70
	}
71
72
	/**
73
	 * Resets the active autoloader and all related global state.
74
	 */
75
	public function reset_autoloader() {
76
		global $jetpack_autoloader_loader;
77
		global $jetpack_autoloader_latest_version;
78
79
		$this->hook_manager->reset();
80
		$jetpack_autoloader_loader         = null;
81
		$jetpack_autoloader_latest_version = null;
82
	}
83
}
84