/var/www/hkosl.com/aga/wp-content/plugins/jetpack/3rd-party/class.jetpack-modules-overrides.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?php

/**
 * Provides methods for dealing with module overrides.
 *
 * @since 5.9.0
 */
class Jetpack_Modules_Overrides {
    
/**
     * Used to cache module overrides so that we minimize how many times we appy the
     * option_jetpack_active_modules filter.
     *
     * @var null|array
     */
    
private $overrides null;

    
/**
     * Clears the $overrides member used for caching.
     *
     * Since get_overrides() can be passed a falsey value to skip caching, this is probably
     * most useful for clearing cache between tests.
     *
     * @return void
     */
    
public function clear_cache() {
        
$this->overrides null;
    }

    
/**
     * Returns true if there is a filter on the jetpack_active_modules option.
     *
     * @return bool Whether there is a filter on the jetpack_active_modules option.
     */
    
public function do_overrides_exist() {
        return (bool) ( 
has_filter'option_jetpack_active_modules' ) || has_filter'jetpack_active_modules' ) );
    }

    
/**
     * Gets the override for a given module.
     *
     * @param string  $module_slug The module's slug.
     * @param boolean $use_cache   Whether or not cached overrides should be used.
     *
     * @return bool|string False if no override for module. 'active' or 'inactive' if there is an override.
     */
    
public function get_module_override$module_slug$use_cache true ) {
        
$overrides $this->get_overrides$use_cache );

        if ( ! isset( 
$overrides$module_slug ] ) ) {
            return 
false;
        }

        return 
$overrides$module_slug ];
    }

    
/**
     * Returns an array of module overrides where the key is the module slug and the value
     * is true if the module is forced on and false if the module is forced off.
     *
     * @param bool $use_cache Whether or not cached overrides should be used.
     *
     * @return array The array of module overrides.
     */
    
public function get_overrides$use_cache true ) {
        if ( 
$use_cache && ! is_null$this->overrides ) ) {
            return 
$this->overrides;
        }

        if ( ! 
$this->do_overrides_exist() ) {
            return array();
        }

        
$available_modules Jetpack::get_available_modules();

        
/**
         * First, let's get all modules that have been forced on.
         */

        /** This filter is documented in wp-includes/option.php */
        
$filtered apply_filters'option_jetpack_active_modules', array() );

        
/** This filter is documented in class.jetpack.php */
        
$filtered apply_filters'jetpack_active_modules'$filtered );

        
$forced_on array_diff$filtered, array() );

        
/**
         * Second, let's get all modules forced off.
         */

        /** This filter is documented in wp-includes/option.php */
        
$filtered apply_filters'option_jetpack_active_modules'$available_modules );

        
/** This filter is documented in class.jetpack.php */
        
$filtered apply_filters'jetpack_active_modules'$filtered );

        
$forced_off array_diff$available_modules$filtered );

        
/**
         * Last, build the return value.
         */
        
$return_value = array();
        foreach ( 
$forced_on as $on ) {
            
$return_value$on ] = 'active';
        }

        foreach ( 
$forced_off as $off ) {
            
$return_value$off ] = 'inactive';
        }

        
$this->overrides $return_value;

        return 
$return_value;
    }

    
/**
     * A reference to an instance of this class.
     *
     * @var Jetpack_Modules_Overrides
     */
    
private static $instance null;

    
/**
     * Returns the singleton instance of Jetpack_Modules_Overrides
     *
     * @return Jetpack_Modules_Overrides
     */
    
public static function instance() {
        if ( 
is_nullself::$instance ) ) {
            
self::$instance = new Jetpack_Modules_Overrides();
        }

        return 
self::$instance;
    }

    
/**
     * Private construct to enforce singleton.
     */
    
private function __construct() {
    }
}

Jetpack_Modules_Overrides::instance();