PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.0-beta
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 / src / class-jetpack-modules-overrides.php
jetpack / src Last commit date
abilities 1 month ago class-deprecate.php 7 months ago class-jetpack-crm-data.php 2 years ago class-jetpack-modules-overrides.php 7 months ago class-jetpack-script-data.php 4 months ago class-tracking.php 1 year ago
class-jetpack-modules-overrides.php
147 lines
1 <?php
2 /**
3 * Special cases for overriding modules.
4 *
5 * @package automattic/jetpack
6 */
7
8 /**
9 * Provides methods for dealing with module overrides.
10 *
11 * @since 5.9.0
12 */
13 class Jetpack_Modules_Overrides {
14 /**
15 * Used to cache module overrides so that we minimize how many times we apply the
16 * option_jetpack_active_modules filter.
17 *
18 * @var null|array
19 */
20 private $overrides = null;
21
22 /**
23 * Clears the $overrides member used for caching.
24 *
25 * Since get_overrides() can be passed a falsey value to skip caching, this is probably
26 * most useful for clearing cache between tests.
27 *
28 * @return void
29 */
30 public function clear_cache() {
31 $this->overrides = null;
32 }
33
34 /**
35 * Returns true if there is a filter on the jetpack_active_modules option.
36 *
37 * @return bool Whether there is a filter on the jetpack_active_modules option.
38 */
39 public function do_overrides_exist() {
40 return ( has_filter( 'option_jetpack_active_modules' ) || has_filter( 'jetpack_active_modules' ) );
41 }
42
43 /**
44 * Gets the override for a given module.
45 *
46 * @param string $module_slug The module's slug.
47 * @param boolean $use_cache Whether or not cached overrides should be used.
48 *
49 * @return bool|string False if no override for module. 'active' or 'inactive' if there is an override.
50 */
51 public function get_module_override( $module_slug, $use_cache = true ) {
52 $overrides = $this->get_overrides( $use_cache );
53
54 if ( ! isset( $overrides[ $module_slug ] ) ) {
55 return false;
56 }
57
58 return $overrides[ $module_slug ];
59 }
60
61 /**
62 * Returns an array of module overrides where the key is the module slug and the value
63 * is true if the module is forced on and false if the module is forced off.
64 *
65 * @param bool $use_cache Whether or not cached overrides should be used.
66 *
67 * @return array The array of module overrides.
68 */
69 public function get_overrides( $use_cache = true ) {
70 if ( $use_cache && $this->overrides !== null ) {
71 return $this->overrides;
72 }
73
74 if ( ! $this->do_overrides_exist() ) {
75 return array();
76 }
77
78 $available_modules = Jetpack::get_available_modules();
79
80 /**
81 * First, let's get all modules that have been forced on.
82 */
83
84 /** This filter is documented in wp-includes/option.php */
85 $filtered = apply_filters( 'option_jetpack_active_modules', array() );
86
87 /** This filter is documented in class.jetpack.php */
88 $filtered = apply_filters( 'jetpack_active_modules', $filtered );
89
90 $forced_on = array_diff( $filtered, array() );
91
92 /**
93 * Second, let's get all modules forced off.
94 */
95
96 /** This filter is documented in wp-includes/option.php */
97 $filtered = apply_filters( 'option_jetpack_active_modules', $available_modules );
98
99 /** This filter is documented in class.jetpack.php */
100 $filtered = apply_filters( 'jetpack_active_modules', $filtered );
101
102 $forced_off = array_diff( $available_modules, $filtered );
103
104 /**
105 * Last, build the return value.
106 */
107 $return_value = array();
108 foreach ( $forced_on as $on ) {
109 $return_value[ $on ] = 'active';
110 }
111
112 foreach ( $forced_off as $off ) {
113 $return_value[ $off ] = 'inactive';
114 }
115
116 $this->overrides = $return_value;
117
118 return $return_value;
119 }
120
121 /**
122 * A reference to an instance of this class.
123 *
124 * @var Jetpack_Modules_Overrides
125 */
126 private static $instance = null;
127
128 /**
129 * Returns the singleton instance of Jetpack_Modules_Overrides
130 *
131 * @return Jetpack_Modules_Overrides
132 */
133 public static function instance() {
134 if ( self::$instance === null ) {
135 self::$instance = new Jetpack_Modules_Overrides();
136 }
137
138 return self::$instance;
139 }
140
141 /**
142 * Private construct to enforce singleton.
143 */
144 private function __construct() {
145 }
146 }
147