Completed
Push — try/statically-access-asset-to... ( e50fad...74c9e7 )
by
unknown
126:59 queued 118:11
created

Modules   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 77
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 77
rs 10
c 0
b 0
f 0
wmc 11
lcom 1
cbo 0

6 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 14 1
A load_module() 0 3 1
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
		'Automattic\\Jetpack\\Sync\\Modules\\Constants',
14
		'Automattic\\Jetpack\\Sync\\Modules\\Callables',
15
		'Automattic\\Jetpack\\Sync\\Modules\\Network_Options',
16
		'Automattic\\Jetpack\\Sync\\Modules\\Options',
17
		'Automattic\\Jetpack\\Sync\\Modules\\Terms',
18
		'Automattic\\Jetpack\\Sync\\Modules\\Menus',
19
		'Automattic\\Jetpack\\Sync\\Modules\\Themes',
20
		'Automattic\\Jetpack\\Sync\\Modules\\Users',
21
		'Automattic\\Jetpack\\Sync\\Modules\\Import',
22
		'Automattic\\Jetpack\\Sync\\Modules\\Posts',
23
		'Jetpack_Sync_Module_Protect',
24
		'Automattic\\Jetpack\\Sync\\Modules\\Comments',
25
		'Automattic\\Jetpack\\Sync\\Modules\\Updates',
26
		'Automattic\\Jetpack\\Sync\\Modules\\Attachments',
27
		'Automattic\\Jetpack\\Sync\\Modules\\Meta',
28
		'Automattic\\Jetpack\\Sync\\Modules\\Plugins',
29
		'Automattic\\Jetpack\\Sync\\Modules\\Stats',
30
		'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync',
31
	);
32
33
	private static $initialized_modules = null;
34
35
	public static function get_modules() {
36
		if ( null === self::$initialized_modules ) {
37
			self::$initialized_modules = self::initialize_modules();
38
		}
39
40
		return self::$initialized_modules;
41
	}
42
43
	public static function set_defaults() {
44
		foreach ( self::get_modules() as $module ) {
45
			$module->set_defaults();
46
		}
47
	}
48
49
	public static function get_module( $module_name ) {
50
		foreach ( self::get_modules() as $module ) {
51
			if ( $module->name() === $module_name ) {
52
				return $module;
53
			}
54
		}
55
56
		return false;
57
	}
58
59
	static function initialize_modules() {
60
		/**
61
		 * Filters the list of class names of sync modules.
62
		 * If you add to this list, make sure any classes implement the
63
		 * Jetpack_Sync_Module interface.
64
		 *
65
		 * @since 4.2.0
66
		 */
67
		$modules = apply_filters( 'jetpack_sync_modules', self::$default_sync_modules );
68
69
		$modules = array_map( array( 'Automattic\\Jetpack\\Sync\\Modules', 'load_module' ), $modules );
70
71
		return array_map( array( 'Automattic\\Jetpack\\Sync\\Modules', 'set_module_defaults' ), $modules );
72
	}
73
74
	static function load_module( $module_name ) {
75
		return new $module_name();
76
	}
77
78
	static function set_module_defaults( $module ) {
79
		$module->set_defaults();
80
		if ( method_exists( $module, 'set_late_default' ) ) {
81
			add_action( 'init', array( $module, 'set_late_default' ), 90 );
82
		}
83
		return $module;
84
	}
85
86
}
87