PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 6.9.2
Jetpack – WP Security, Backup, Speed, & Growth v6.9.2
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 All 500 releases
jetpack / sync / class.jetpack-sync-module-constants.php
class.jetpack-sync-module-constants.php
126 lines 3.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 require_once dirname( __FILE__ ) . '/class.jetpack-sync-defaults.php';
4
5 class Jetpack_Sync_Module_Constants extends Jetpack_Sync_Module {
6 const CONSTANTS_CHECKSUM_OPTION_NAME = 'jetpack_constants_sync_checksum';
7 const CONSTANTS_AWAIT_TRANSIENT_NAME = 'jetpack_sync_constants_await';
8
9 public function name() {
10 return 'constants';
11 }
12
13 public function init_listeners( $callable ) {
14 add_action( 'jetpack_sync_constant', $callable, 10, 2 );
15 }
16
17 public function init_full_sync_listeners( $callable ) {
18 add_action( 'jetpack_full_sync_constants', $callable );
19 }
20
21 public function init_before_send() {
22 add_action( 'jetpack_sync_before_send_queue_sync', array( $this, 'maybe_sync_constants' ) );
23
24 // full sync
25 add_filter( 'jetpack_sync_before_send_jetpack_full_sync_constants', array( $this, 'expand_constants' ) );
26 }
27
28 public function reset_data() {
29 delete_option( self::CONSTANTS_CHECKSUM_OPTION_NAME );
30 delete_transient( self::CONSTANTS_AWAIT_TRANSIENT_NAME );
31 }
32
33 function set_constants_whitelist( $constants ) {
34 $this->constants_whitelist = $constants;
35 }
36
37 function get_constants_whitelist() {
38 return Jetpack_Sync_Defaults::get_constants_whitelist();
39 }
40
41 function enqueue_full_sync_actions( $config, $max_items_to_enqueue, $state ) {
42 /**
43 * Tells the client to sync all constants to the server
44 *
45 * @since 4.2.0
46 *
47 * @param boolean Whether to expand constants (should always be true)
48 */
49 do_action( 'jetpack_full_sync_constants', true );
50
51 // The number of actions enqueued, and next module state (true == done)
52 return array( 1, true );
53 }
54
55 function estimate_full_sync_actions( $config ) {
56 return 1;
57 }
58
59 function get_full_sync_actions() {
60 return array( 'jetpack_full_sync_constants' );
61 }
62
63 function maybe_sync_constants() {
64 if ( get_transient( self::CONSTANTS_AWAIT_TRANSIENT_NAME ) ) {
65 return;
66 }
67
68 set_transient( self::CONSTANTS_AWAIT_TRANSIENT_NAME, microtime( true ), Jetpack_Sync_Defaults::$default_sync_constants_wait_time );
69
70 $constants = $this->get_all_constants();
71 if ( empty( $constants ) ) {
72 return;
73 }
74
75 $constants_checksums = (array) get_option( self::CONSTANTS_CHECKSUM_OPTION_NAME, array() );
76
77 foreach ( $constants as $name => $value ) {
78 $checksum = $this->get_check_sum( $value );
79 // explicitly not using Identical comparison as get_option returns a string
80 if ( ! $this->still_valid_checksum( $constants_checksums, $name, $checksum ) && ! is_null( $value ) ) {
81 /**
82 * Tells the client to sync a constant to the server
83 *
84 * @since 4.2.0
85 *
86 * @param string The name of the constant
87 * @param mixed The value of the constant
88 */
89 do_action( 'jetpack_sync_constant', $name, $value );
90 $constants_checksums[ $name ] = $checksum;
91 } else {
92 $constants_checksums[ $name ] = $checksum;
93 }
94 }
95 update_option( self::CONSTANTS_CHECKSUM_OPTION_NAME, $constants_checksums );
96 }
97
98 // public so that we don't have to store an option for each constant
99 function get_all_constants() {
100 $constants_whitelist = $this->get_constants_whitelist();
101 return array_combine(
102 $constants_whitelist,
103 array_map( array( $this, 'get_constant' ), $constants_whitelist )
104 );
105 }
106
107 private function get_constant( $constant ) {
108 return ( defined( $constant ) ) ?
109 constant( $constant )
110 : null;
111 }
112
113 public function expand_constants( $args ) {
114 if ( $args[0] ) {
115 $constants = $this->get_all_constants();
116 $constants_checksums = array();
117 foreach ( $constants as $name => $value ) {
118 $constants_checksums[ $name ] = $this->get_check_sum( $value );
119 }
120 update_option( self::CONSTANTS_CHECKSUM_OPTION_NAME, $constants_checksums );
121 return $constants;
122 }
123 return $args;
124 }
125 }
126