PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.2-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.2-a.1
16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 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 / modules / class-network-options.php
jetpack / jetpack_vendor / automattic / jetpack-sync / src / modules Last commit date
class-attachments.php 8 months ago class-callables.php 1 month ago class-comments.php 2 months ago class-constants.php 8 months ago class-full-sync-immediately.php 3 months ago class-full-sync.php 2 months ago class-import.php 8 months ago class-menus.php 2 months ago class-meta.php 2 months ago class-module.php 5 months ago class-network-options.php 8 months ago class-options.php 2 months ago class-plugins.php 2 months ago class-posts.php 2 months ago class-protect.php 8 months ago class-search.php 2 months ago class-stats.php 6 months ago class-term-relationships.php 8 months ago class-terms.php 2 months ago class-themes.php 2 months ago class-updates.php 8 months ago class-users.php 1 month ago class-woocommerce-hpos-orders.php 1 month ago class-woocommerce-products.php 8 months ago class-woocommerce.php 1 month ago class-wp-super-cache.php 8 months ago
class-network-options.php
262 lines
1 <?php
2 /**
3 * Network Options sync module.
4 *
5 * @package automattic/jetpack-sync
6 */
7
8 namespace Automattic\Jetpack\Sync\Modules;
9
10 use Automattic\Jetpack\Sync\Defaults;
11
12 if ( ! defined( 'ABSPATH' ) ) {
13 exit( 0 );
14 }
15
16 /**
17 * Class to handle sync for network options.
18 */
19 class Network_Options extends Module {
20 /**
21 * Whitelist for network options we want to sync.
22 *
23 * @access private
24 *
25 * @var array
26 */
27 private $network_options_whitelist;
28
29 /**
30 * Sync module name.
31 *
32 * @access public
33 *
34 * @return string
35 */
36 public function name() {
37 return 'network_options';
38 }
39
40 /**
41 * Initialize network options action listeners.
42 *
43 * @access public
44 *
45 * @param callable $callable Action handler callable.
46 */
47 public function init_listeners( $callable ) {
48 // Multi site network options.
49 add_action( 'add_site_option', $callable, 10, 2 );
50 add_action( 'update_site_option', $callable, 10, 3 );
51 add_action( 'delete_site_option', $callable, 10, 1 );
52
53 $whitelist_network_option_handler = array( $this, 'whitelist_network_options' );
54 add_filter( 'jetpack_sync_before_enqueue_delete_site_option', $whitelist_network_option_handler );
55 add_filter( 'jetpack_sync_before_enqueue_add_site_option', $whitelist_network_option_handler );
56 add_filter( 'jetpack_sync_before_enqueue_update_site_option', $whitelist_network_option_handler );
57 }
58
59 /**
60 * Initialize network options action listeners for full sync.
61 *
62 * @access public
63 *
64 * @param callable $callable Action handler callable.
65 */
66 public function init_full_sync_listeners( $callable ) {
67 add_action( 'jetpack_full_sync_network_options', $callable );
68 }
69
70 /**
71 * Initialize the module in the sender.
72 *
73 * @access public
74 */
75 public function init_before_send() {
76 // Full sync.
77 add_filter(
78 'jetpack_sync_before_send_jetpack_full_sync_network_options',
79 array(
80 $this,
81 'expand_network_options',
82 )
83 );
84 }
85
86 /**
87 * Set module defaults.
88 * Define the network options whitelist based on the default one.
89 *
90 * @access public
91 */
92 public function set_defaults() {
93 $this->network_options_whitelist = Defaults::$default_network_options_whitelist;
94 }
95
96 /**
97 * Enqueue the network options actions for full sync.
98 *
99 * @access public
100 *
101 * @param array $config Full sync configuration for this sync module.
102 * @param int $max_items_to_enqueue Maximum number of items to enqueue.
103 * @param boolean $state True if full sync has finished enqueueing this module, false otherwise.
104 * @return array Number of actions enqueued, and next module state.
105 */
106 public function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
107 /**
108 * Tells the client to sync all options to the server
109 *
110 * @since 1.6.3
111 * @since-jetpack 4.2.0
112 *
113 * @param boolean Whether to expand options (should always be true)
114 */
115 do_action( 'jetpack_full_sync_network_options', true );
116
117 // The number of actions enqueued, and next module state (true == done).
118 return array( 1, true );
119 }
120
121 /**
122 * Send the network options actions for full sync.
123 *
124 * @access public
125 *
126 * @param array $config Full sync configuration for this sync module.
127 * @param array $status This module Full Sync status.
128 * @param int $send_until The timestamp until the current request can send.
129 * @param int $started The timestamp when the full sync started.
130 *
131 * @return array This module Full Sync status.
132 */
133 public function send_full_sync_actions( $config, $status, $send_until, $started ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
134 // we call this instead of do_action when sending immediately.
135 $result = $this->send_action( 'jetpack_full_sync_network_options', array( true ) );
136
137 if ( is_wp_error( $result ) ) {
138 $status['error'] = true;
139 return $status;
140 }
141 $status['finished'] = true;
142 $status['sent'] = $status['total'];
143 return $status;
144 }
145
146 /**
147 * Retrieve an estimated number of actions that will be enqueued.
148 *
149 * @access public
150 *
151 * @param array $config Full sync configuration for this sync module.
152 * @return int Number of items yet to be enqueued.
153 */
154 public function estimate_full_sync_actions( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
155 return 1;
156 }
157
158 /**
159 * Retrieve the actions that will be sent for this module during a full sync.
160 *
161 * @access public
162 *
163 * @return array Full sync actions of this module.
164 */
165 public function get_full_sync_actions() {
166 return array( 'jetpack_full_sync_network_options' );
167 }
168
169 /**
170 * Retrieve all network options as per the current network options whitelist.
171 *
172 * @access public
173 *
174 * @return array All network options.
175 */
176 public function get_all_network_options() {
177 $options = array();
178 foreach ( $this->network_options_whitelist as $option ) {
179 $options[ $option ] = get_site_option( $option );
180 }
181
182 return $options;
183 }
184
185 /**
186 * Set the network options whitelist.
187 *
188 * @access public
189 *
190 * @param array $options The new network options whitelist.
191 */
192 public function set_network_options_whitelist( $options ) {
193 $this->network_options_whitelist = $options;
194 }
195
196 /**
197 * Get the network options whitelist.
198 *
199 * @access public
200 *
201 * @return array The network options whitelist.
202 */
203 public function get_network_options_whitelist() {
204 return $this->network_options_whitelist;
205 }
206
207 /**
208 * Reject non-whitelisted network options.
209 *
210 * @access public
211 *
212 * @param array $args The hook parameters.
213 * @return array|false $args The hook parameters, false if not a whitelisted network option.
214 */
215 public function whitelist_network_options( $args ) {
216 if ( ! $this->is_whitelisted_network_option( $args[0] ) ) {
217 return false;
218 }
219
220 return $args;
221 }
222
223 /**
224 * Whether the option is a whitelisted network option.
225 *
226 * @access public
227 *
228 * @param string $option Option name.
229 * @return boolean True if this is a whitelisted network option.
230 */
231 public function is_whitelisted_network_option( $option ) {
232 return in_array( $option, $this->network_options_whitelist, true );
233 }
234
235 /**
236 * Expand the network options within a hook before they are serialized and sent to the server.
237 *
238 * @access public
239 *
240 * @param array $args The hook parameters.
241 * @return array $args The hook parameters.
242 */
243 public function expand_network_options( $args ) {
244 if ( $args[0] ) {
245 return $this->get_all_network_options();
246 }
247
248 return $args;
249 }
250
251 /**
252 * Return Total number of objects.
253 *
254 * @param array $config Full Sync config.
255 *
256 * @return int total
257 */
258 public function total( $config ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable
259 return count( (array) $this->network_options_whitelist );
260 }
261 }
262