Completed
Push — update/default-sync-modules-ma... ( b069a5 )
by
unknown
199:56 queued 192:10
created

Modules   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 107
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 107
rs 10
c 0
b 0
f 0
wmc 13
lcom 2
cbo 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A get_modules() 0 7 2
A set_defaults() 0 5 2
A get_module() 0 9 3
A initialize_modules() 0 16 1
A load_module() 0 3 1
A map_legacy_modules() 0 6 2
A set_module_defaults() 0 7 2
1
<?php
2
3
/**
4
 * simple wrapper that allows enumerating cached static instances
5
 * of sync modules
6
 */
7
8
namespace Automattic\Jetpack\Sync;
9
10
class Modules {
11
12
	private static $default_sync_modules = array(
13
		'Jetpack_Sync_Modules_Constants',
14
		'Jetpack_Sync_Modules_Callables',
15
		'Jetpack_Sync_Modules_Network_Options',
16
		'Jetpack_Sync_Modules_Options',
17
		'Jetpack_Sync_Modules_Terms',
18
		'Jetpack_Sync_Modules_Menus',
19
		'Jetpack_Sync_Modules_Themes',
20
		'Jetpack_Sync_Modules_Users',
21
		'Jetpack_Sync_Modules_Import',
22
		'Jetpack_Sync_Modules_Posts',
23
		'Jetpack_Sync_Modules_Protect',
24
		'Jetpack_Sync_Modules_Comments',
25
		'Jetpack_Sync_Modules_Updates',
26
		'Jetpack_Sync_Modules_Attachments',
27
		'Jetpack_Sync_Modules_Meta',
28
		'Jetpack_Sync_Modules_Plugins',
29
		'Jetpack_Sync_Modules_Stats',
30
		'Jetpack_Sync_Modules_Full_Sync',
31
	);
32
33
	private static $legacy_sync_modules_map = array(
34
		'Jetpack_Sync_Modules_Constants'       => 'Automattic\\Jetpack\\Sync\\Modules\\Constants',
35
		'Jetpack_Sync_Modules_Callables'       => 'Automattic\\Jetpack\\Sync\\Modules\\Callables',
36
		'Jetpack_Sync_Modules_Network_Options' => 'Automattic\\Jetpack\\Sync\\Modules\\Network_Options',
37
		'Jetpack_Sync_Modules_Options'         => 'Automattic\\Jetpack\\Sync\\Modules\\Options',
38
		'Jetpack_Sync_Modules_Terms'           => 'Automattic\\Jetpack\\Sync\\Modules\\Terms',
39
		'Jetpack_Sync_Modules_Menus'           => 'Automattic\\Jetpack\\Sync\\Modules\\Menus',
40
		'Jetpack_Sync_Modules_Themes'          => 'Automattic\\Jetpack\\Sync\\Modules\\Themes',
41
		'Jetpack_Sync_Modules_Users'           => 'Automattic\\Jetpack\\Sync\\Modules\\Users',
42
		'Jetpack_Sync_Modules_Import'          => 'Automattic\\Jetpack\\Sync\\Modules\\Import',
43
		'Jetpack_Sync_Modules_Posts'           => 'Automattic\\Jetpack\\Sync\\Modules\\Posts',
44
		'Jetpack_Sync_Modules_Protect'         => 'Automattic\\Jetpack\\Sync\\Modules\\Protect',
45
		'Jetpack_Sync_Modules_Comments'        => 'Automattic\\Jetpack\\Sync\\Modules\\Comments',
46
		'Jetpack_Sync_Modules_Updates'         => 'Automattic\\Jetpack\\Sync\\Modules\\Updates',
47
		'Jetpack_Sync_Modules_Attachments'     => 'Automattic\\Jetpack\\Sync\\Modules\\Attachments',
48
		'Jetpack_Sync_Modules_Meta'            => 'Automattic\\Jetpack\\Sync\\Modules\\Meta',
49
		'Jetpack_Sync_Modules_Plugins'         => 'Automattic\\Jetpack\\Sync\\Modules\\Plugins',
50
		'Jetpack_Sync_Modules_Stats'           => 'Automattic\\Jetpack\\Sync\\Modules\\Stats',
51
		'Jetpack_Sync_Modules_Full_Sync'       => 'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync',
52
	);
53
54
	private static $initialized_modules = null;
55
56
	public static function get_modules() {
57
		if ( null === self::$initialized_modules ) {
58
			self::$initialized_modules = self::initialize_modules();
59
		}
60
61
		return self::$initialized_modules;
62
	}
63
64
	public static function set_defaults() {
65
		foreach ( self::get_modules() as $module ) {
66
			$module->set_defaults();
67
		}
68
	}
69
70
	public static function get_module( $module_name ) {
71
		foreach ( self::get_modules() as $module ) {
72
			if ( $module->name() === $module_name ) {
73
				return $module;
74
			}
75
		}
76
77
		return false;
78
	}
79
80
	static function initialize_modules() {
81
		/**
82
		 * Filters the list of class names of sync modules.
83
		 * If you add to this list, make sure any classes implement the
84
		 * Jetpack_Sync_Module interface.
85
		 *
86
		 * @since 4.2.0
87
		 */
88
		$modules = apply_filters( 'jetpack_sync_modules', self::$default_sync_modules );
89
90
		$modules = array_map( array( 'Automattic\\Jetpack\\Sync\\Modules', 'map_legacy_modules' ), $modules );
91
92
		$modules = array_map( array( 'Automattic\\Jetpack\\Sync\\Modules', 'load_module' ), $modules );
93
94
		return array_map( array( 'Automattic\\Jetpack\\Sync\\Modules', 'set_module_defaults' ), $modules );
95
	}
96
97
	static function load_module( $module_class ) {
98
		return new $module_class();
99
	}
100
101
	static function map_legacy_modules( $module_class ) {
102
		if ( isset( self::$legacy_sync_modules_map[ $module_class ] ) ) {
103
			return self::$legacy_sync_modules_map[ $module_class ];
104
		}
105
		return $module_class;
106
	}
107
108
	static function set_module_defaults( $module ) {
109
		$module->set_defaults();
110
		if ( method_exists( $module, 'set_late_default' ) ) {
111
			add_action( 'init', array( $module, 'set_late_default' ), 90 );
112
		}
113
		return $module;
114
	}
115
116
}
117