PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 8.6.2
Jetpack – WP Security, Backup, Speed, & Growth v8.6.2
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 / class.jetpack-heartbeat.php
jetpack Last commit date
3rd-party 6 years ago _inc 6 years ago bin 6 years ago css 6 years ago extensions 6 years ago images 6 years ago json-endpoints 6 years ago languages 6 years ago modules 5 years ago sal 6 years ago src 6 years ago vendor 6 years ago views 6 years ago .svnignore 12 years ago CODE-OF-CONDUCT.md 9 years ago changelog.txt 6 years ago class-jetpack-wizard-banner.php 6 years ago class.frame-nonce-preview.php 6 years ago class.jetpack-admin.php 6 years ago class.jetpack-affiliate.php 6 years ago class.jetpack-autoupdate.php 6 years ago class.jetpack-bbpress-json-api.compat.php 6 years ago class.jetpack-cli.php 6 years ago class.jetpack-client-server.php 6 years ago class.jetpack-connection-banner.php 6 years ago class.jetpack-data.php 6 years ago class.jetpack-debugger.php 7 years ago class.jetpack-error.php 10 years ago class.jetpack-gutenberg.php 6 years ago class.jetpack-heartbeat.php 6 years ago class.jetpack-idc.php 6 years ago class.jetpack-ixr-client.php 6 years ago class.jetpack-modules-list-table.php 6 years ago class.jetpack-network-sites-list-table.php 6 years ago class.jetpack-network.php 6 years ago class.jetpack-plan.php 6 years ago class.jetpack-post-images.php 6 years ago class.jetpack-twitter-cards.php 6 years ago class.jetpack-user-agent.php 6 years ago class.jetpack-xmlrpc-server.php 6 years ago class.jetpack.php 6 years ago class.json-api-endpoints.php 6 years ago class.json-api.php 6 years ago class.photon.php 6 years ago composer.json 6 years ago functions.compat.php 6 years ago functions.cookies.php 6 years ago functions.gallery.php 6 years ago functions.global.php 6 years ago functions.opengraph.php 6 years ago functions.photon.php 6 years ago jest.config.js 6 years ago jetpack.php 5 years ago json-api-config.php 10 years ago json-endpoints.php 7 years ago load-jetpack.php 6 years ago locales.php 7 years ago readme.txt 5 years ago require-lib.php 6 years ago uninstall.php 6 years ago wpml-config.xml 10 years ago
class.jetpack-heartbeat.php
189 lines
1 <?php
2
3 use Automattic\Jetpack\Connection\Manager;
4
5 class Jetpack_Heartbeat {
6
7 /**
8 * Holds the singleton instance of this class
9 *
10 * @since 2.3.3
11 * @var Jetpack_Heartbeat
12 */
13 private static $instance = false;
14
15 private $cron_name = 'jetpack_v2_heartbeat';
16
17 /**
18 * Singleton
19 *
20 * @since 2.3.3
21 * @static
22 * @return Jetpack_Heartbeat
23 */
24 public static function init() {
25 if ( ! self::$instance ) {
26 self::$instance = new Jetpack_Heartbeat();
27 }
28
29 return self::$instance;
30 }
31
32 /**
33 * Constructor for singleton
34 *
35 * @since 2.3.3
36 * @return Jetpack_Heartbeat
37 */
38 private function __construct() {
39 if ( ! Jetpack::is_active() ) {
40 return;
41 }
42
43 // Schedule the task
44 add_action( $this->cron_name, array( $this, 'cron_exec' ) );
45
46 if ( ! wp_next_scheduled( $this->cron_name ) ) {
47 // Deal with the old pre-3.0 weekly one.
48 if ( $timestamp = wp_next_scheduled( 'jetpack_heartbeat' ) ) {
49 wp_unschedule_event( $timestamp, 'jetpack_heartbeat' );
50 }
51
52 wp_schedule_event( time(), 'daily', $this->cron_name );
53 }
54
55 add_filter( 'jetpack_xmlrpc_methods', array( __CLASS__, 'jetpack_xmlrpc_methods' ) );
56 }
57
58 /**
59 * Method that gets executed on the wp-cron call
60 *
61 * @since 2.3.3
62 * @global string $wp_version
63 */
64 public function cron_exec() {
65
66 $jetpack = Jetpack::init();
67
68 /*
69 * This should run daily. Figuring in for variances in
70 * WP_CRON, don't let it run more than every 23 hours at most.
71 *
72 * i.e. if it ran less than 23 hours ago, fail out.
73 */
74 $last = (int) Jetpack_Options::get_option( 'last_heartbeat' );
75 if ( $last && ( $last + DAY_IN_SECONDS - HOUR_IN_SECONDS > time() ) ) {
76 return;
77 }
78
79 /*
80 * Check for an identity crisis
81 *
82 * If one exists:
83 * - Bump stat for ID crisis
84 * - Email site admin about potential ID crisis
85 */
86
87 // Coming Soon!
88
89 foreach ( self::generate_stats_array( 'v2-' ) as $key => $value ) {
90 $jetpack->stat( $key, $value );
91 }
92
93 Jetpack_Options::update_option( 'last_heartbeat', time() );
94
95 $jetpack->do_stats( 'server_side' );
96
97 /**
98 * Fires when we synchronize all registered options on heartbeat.
99 *
100 * @since 3.3.0
101 */
102 do_action( 'jetpack_heartbeat' );
103 }
104
105 /**
106 * Generates heartbeat stats data.
107 *
108 * @param string $prefix Prefix to add before stats identifier.
109 *
110 * @return array The stats array.
111 */
112 public static function generate_stats_array( $prefix = '' ) {
113 $return = array();
114
115 $return[ "{$prefix}version" ] = JETPACK__VERSION;
116 $return[ "{$prefix}wp-version" ] = get_bloginfo( 'version' );
117 $return[ "{$prefix}php-version" ] = PHP_VERSION;
118 $return[ "{$prefix}branch" ] = floatval( JETPACK__VERSION );
119 $return[ "{$prefix}wp-branch" ] = floatval( get_bloginfo( 'version' ) );
120 $return[ "{$prefix}php-branch" ] = floatval( PHP_VERSION );
121 $return[ "{$prefix}public" ] = Jetpack_Options::get_option( 'public' );
122 $return[ "{$prefix}ssl" ] = Jetpack::permit_ssl();
123 $return[ "{$prefix}is-https" ] = is_ssl() ? 'https' : 'http';
124 $return[ "{$prefix}language" ] = get_bloginfo( 'language' );
125 $return[ "{$prefix}charset" ] = get_bloginfo( 'charset' );
126 $return[ "{$prefix}is-multisite" ] = is_multisite() ? 'multisite' : 'singlesite';
127 $return[ "{$prefix}identitycrisis" ] = Jetpack::check_identity_crisis() ? 'yes' : 'no';
128 $return[ "{$prefix}plugins" ] = implode( ',', Jetpack::get_active_plugins() );
129 if ( function_exists( 'get_mu_plugins' ) ) {
130 $return[ "{$prefix}mu-plugins" ] = implode( ',', array_keys( get_mu_plugins() ) );
131 }
132 $return[ "{$prefix}manage-enabled" ] = true;
133
134 $xmlrpc_errors = Jetpack_Options::get_option( 'xmlrpc_errors', array() );
135 if ( $xmlrpc_errors ) {
136 $return[ "{$prefix}xmlrpc-errors" ] = implode( ',', array_keys( $xmlrpc_errors ) );
137 Jetpack_Options::delete_option( 'xmlrpc_errors' );
138 }
139
140 // Missing the connection owner?
141 $connection_manager = new Manager();
142 $return[ "{$prefix}missing-owner" ] = $connection_manager->is_missing_connection_owner();
143
144 // is-multi-network can have three values, `single-site`, `single-network`, and `multi-network`.
145 $return[ "{$prefix}is-multi-network" ] = 'single-site';
146 if ( is_multisite() ) {
147 $return[ "{$prefix}is-multi-network" ] = Jetpack::is_multi_network() ? 'multi-network' : 'single-network';
148 }
149
150 if ( ! empty( $_SERVER['SERVER_ADDR'] ) || ! empty( $_SERVER['LOCAL_ADDR'] ) ) {
151 $ip = ! empty( $_SERVER['SERVER_ADDR'] ) ? $_SERVER['SERVER_ADDR'] : $_SERVER['LOCAL_ADDR'];
152 $ip_arr = array_map( 'intval', explode( '.', $ip ) );
153 if ( 4 === count( $ip_arr ) ) {
154 $return[ "{$prefix}ip-2-octets" ] = implode( '.', array_slice( $ip_arr, 0, 2 ) );
155 }
156 }
157
158 foreach ( Jetpack::get_available_modules() as $slug ) {
159 $return[ "{$prefix}module-{$slug}" ] = Jetpack::is_module_active( $slug ) ? 'on' : 'off';
160 }
161
162 return $return;
163 }
164
165 public static function jetpack_xmlrpc_methods( $methods ) {
166 $methods['jetpack.getHeartbeatData'] = array( __CLASS__, 'xmlrpc_data_response' );
167 return $methods;
168 }
169
170 public static function xmlrpc_data_response( $params = array() ) {
171 // The WordPress XML-RPC server sets a default param of array()
172 // if no argument is passed on the request and the method handlers get this array in $params.
173 // generate_stats_array() needs a string as first argument.
174 $params = empty( $params ) ? '' : $params;
175 return self::generate_stats_array( $params );
176 }
177
178 public function deactivate() {
179 // Deal with the old pre-3.0 weekly one.
180 if ( $timestamp = wp_next_scheduled( 'jetpack_heartbeat' ) ) {
181 wp_unschedule_event( $timestamp, 'jetpack_heartbeat' );
182 }
183
184 $timestamp = wp_next_scheduled( $this->cron_name );
185 wp_unschedule_event( $timestamp, $this->cron_name );
186 }
187
188 }
189