PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0.1
Jetpack – WP Security, Backup, Speed, & Growth v16.0.1
16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / jetpack_vendor / automattic / jetpack-sync / src / class-modules.php
jetpack / jetpack_vendor / automattic / jetpack-sync / src Last commit date
modules 3 weeks ago replicastore 3 months ago sync-queue 5 months ago class-actions.php 1 month ago class-activity-log-event.php 3 weeks ago class-data-settings.php 1 month ago class-dedicated-sender.php 7 months ago class-default-filter-settings.php 4 years ago class-defaults.php 2 days ago class-functions.php 1 month ago class-health.php 4 months ago class-json-deflate-array-codec.php 7 months ago class-listener.php 1 month ago class-lock.php 4 years ago class-main.php 2 months ago class-modules.php 1 year ago class-package-version.php 2 days ago class-queue-buffer.php 4 years ago class-queue.php 1 month ago class-replicastore.php 1 month ago class-rest-endpoints.php 4 months ago class-rest-sender.php 1 month ago class-sender.php 1 month ago class-server.php 4 months ago class-settings.php 3 months ago class-simple-codec.php 7 months ago class-users.php 3 months ago class-utils.php 4 years ago interface-codec.php 4 years ago interface-replicastore.php 1 month ago
class-modules.php
166 lines
1 <?php
2 /**
3 * Simple wrapper that allows enumerating cached static instances
4 * of sync modules.
5 *
6 * @package automattic/jetpack-sync
7 */
8
9 namespace Automattic\Jetpack\Sync;
10
11 use Automattic\Jetpack\Sync\Modules\Module;
12
13 /**
14 * A class to handle loading of sync modules.
15 */
16 class Modules {
17
18 /**
19 * Lists classnames of sync modules we load by default.
20 *
21 * @access public
22 *
23 * @var array
24 */
25 const DEFAULT_SYNC_MODULES = array(
26 'Automattic\\Jetpack\\Sync\\Modules\\Constants',
27 'Automattic\\Jetpack\\Sync\\Modules\\Callables',
28 'Automattic\\Jetpack\\Sync\\Modules\\Network_Options',
29 'Automattic\\Jetpack\\Sync\\Modules\\Options',
30 'Automattic\\Jetpack\\Sync\\Modules\\Terms',
31 'Automattic\\Jetpack\\Sync\\Modules\\Menus',
32 'Automattic\\Jetpack\\Sync\\Modules\\Themes',
33 'Automattic\\Jetpack\\Sync\\Modules\\Users',
34 'Automattic\\Jetpack\\Sync\\Modules\\Import',
35 'Automattic\\Jetpack\\Sync\\Modules\\Posts',
36 'Automattic\\Jetpack\\Sync\\Modules\\Protect',
37 'Automattic\\Jetpack\\Sync\\Modules\\Comments',
38 'Automattic\\Jetpack\\Sync\\Modules\\Updates',
39 'Automattic\\Jetpack\\Sync\\Modules\\Attachments',
40 'Automattic\\Jetpack\\Sync\\Modules\\Meta',
41 'Automattic\\Jetpack\\Sync\\Modules\\Plugins',
42 'Automattic\\Jetpack\\Sync\\Modules\\Stats',
43 'Automattic\\Jetpack\\Sync\\Modules\\Full_Sync_Immediately',
44 'Automattic\\Jetpack\\Sync\\Modules\\Term_Relationships',
45 );
46
47 /**
48 * Keeps track of initialized sync modules.
49 *
50 * @access private
51 * @static
52 *
53 * @var null|array
54 */
55 private static $initialized_modules = null;
56
57 /**
58 * Gets a list of initialized modules.
59 *
60 * @access public
61 * @static
62 *
63 * @return Module[]
64 */
65 public static function get_modules() {
66 if ( null === self::$initialized_modules ) {
67 self::$initialized_modules = self::initialize_modules();
68 }
69
70 return self::$initialized_modules;
71 }
72
73 /**
74 * Sets defaults for all initialized modules.
75 *
76 * @access public
77 * @static
78 */
79 public static function set_defaults() {
80 foreach ( self::get_modules() as $module ) {
81 $module->set_defaults();
82 }
83 }
84
85 /**
86 * Gets the name of an initialized module. Returns false if given module has not been initialized.
87 *
88 * @access public
89 * @static
90 *
91 * @param string $module_name A module name.
92 *
93 * @return bool|\Automattic\Jetpack\Sync\Modules\Module
94 */
95 public static function get_module( $module_name ) {
96 // @todo Better type hinting for Phan if https://github.com/phan/phan/issues/3842 gets fixed. Then clean up the `@phan-var` on all the callers.
97
98 foreach ( self::get_modules() as $module ) {
99 if ( $module->name() === $module_name ) {
100 return $module;
101 }
102 }
103
104 return false;
105 }
106
107 /**
108 * Loads and sets defaults for all declared modules.
109 *
110 * @access public
111 * @static
112 *
113 * @return array
114 */
115 public static function initialize_modules() {
116
117 /**
118 * Filters the list of class names of sync modules.
119 * If you add to this list, make sure any classes implement the
120 * Jetpack_Sync_Module interface.
121 *
122 * @since 1.6.3
123 * @since-jetpack 4.2.0
124 */
125 $modules = apply_filters( 'jetpack_sync_modules', self::DEFAULT_SYNC_MODULES );
126
127 $modules = array_unique( $modules );
128
129 $modules = array_map( array( __CLASS__, 'load_module' ), $modules );
130 return array_map( array( __CLASS__, 'set_module_defaults' ), $modules );
131 }
132
133 /**
134 * Returns an instance of the given module class.
135 *
136 * @access public
137 * @static
138 *
139 * @param string $module_class The classname of a Jetpack sync module.
140 *
141 * @return \Automattic\Jetpack\Sync\Modules\Module
142 */
143 public static function load_module( $module_class ) {
144 return new $module_class();
145 }
146
147 /**
148 * Sets defaults for the given instance of a Jetpack sync module.
149 *
150 * @access public
151 * @static
152 *
153 * @param \Automattic\Jetpack\Sync\Modules\Module $module Instance of a Jetpack sync module.
154 *
155 * @return \Automattic\Jetpack\Sync\Modules\Module
156 */
157 public static function set_module_defaults( $module ) {
158 $module->set_defaults();
159 if ( method_exists( $module, 'set_late_default' ) ) {
160 // @phan-suppress-next-line PhanUndeclaredMethodInCallable -- https://github.com/phan/phan/issues/1204
161 add_action( 'init', array( $module, 'set_late_default' ), 90 );
162 }
163 return $module;
164 }
165 }
166