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