PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.8-beta
Jetpack – WP Security, Backup, Speed, & Growth v15.8-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 / class.jetpack-heartbeat.php
jetpack Last commit date
3rd-party 2 months ago _inc 4 weeks ago css 4 weeks ago extensions 4 weeks ago images 1 month ago jetpack_vendor 4 weeks ago json-endpoints 4 weeks ago modules 4 weeks ago sal 4 weeks ago src 4 weeks ago vendor 4 weeks ago views 1 month ago CHANGELOG.md 4 weeks ago LICENSE.txt 5 months ago SECURITY.md 2 years ago class-jetpack-connection-status.php 2 years ago class-jetpack-gallery-settings.php 6 months ago class-jetpack-newsletter-dashboard-widget.php 6 months ago class-jetpack-pre-connection-jitms.php 2 years ago class-jetpack-stats-dashboard-widget.php 3 months ago class-jetpack-xmlrpc-methods.php 6 months ago class.frame-nonce-preview.php 6 months ago class.jetpack-admin.php 1 month ago class.jetpack-autoupdate.php 6 months ago class.jetpack-cli.php 5 months ago class.jetpack-client-server.php 2 years ago class.jetpack-gutenberg.php 2 months ago class.jetpack-heartbeat.php 3 months ago class.jetpack-modules-list-table.php 6 months ago class.jetpack-network-sites-list-table.php 6 months ago class.jetpack-network.php 1 month ago class.jetpack-plan.php 2 years ago class.jetpack-post-images.php 2 months ago class.jetpack-twitter-cards.php 3 months ago class.jetpack-user-agent.php 2 years ago class.jetpack.php 4 weeks ago class.json-api-endpoints.php 1 month ago class.json-api.php 5 months ago class.photon.php 3 years ago composer.json 4 weeks ago enhanced-open-graph.php 3 months ago functions.compat.php 3 months ago functions.cookies.php 2 years ago functions.global.php 1 month ago functions.is-mobile.php 2 years ago functions.opengraph.php 2 months ago functions.photon.php 2 years ago jetpack.php 4 weeks ago json-api-config.php 3 years ago json-endpoints.php 2 years ago load-jetpack.php 2 months ago locales.php 6 months ago readme.txt 4 weeks ago unauth-file-upload.php 6 months ago uninstall.php 6 months ago wpml-config.xml 3 years ago
class.jetpack-heartbeat.php
145 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Jetpack Heartbeat.
4 *
5 * @package automattic/jetpack
6 */
7
8 use Automattic\Jetpack\Connection\Manager;
9 use Automattic\Jetpack\Heartbeat;
10
11 /**
12 * Jetpack Heartbeat.
13 */
14 class Jetpack_Heartbeat {
15
16 /**
17 * Holds the singleton instance of this class
18 *
19 * @since 2.3.3
20 * @var Jetpack_Heartbeat
21 */
22 private static $instance = false;
23
24 /**
25 * Holds the singleton instance of the proxied class
26 *
27 * @since 8.9.0
28 * @var Automattic\Jetpack\Heartbeat
29 */
30 private static $proxied_instance = false;
31
32 /**
33 * Singleton
34 *
35 * @since 2.3.3
36 * @static
37 * @return Jetpack_Heartbeat
38 */
39 public static function init() {
40 if ( ! self::$instance ) {
41 self::$instance = new Jetpack_Heartbeat();
42 self::$proxied_instance = Heartbeat::init();
43 }
44
45 return self::$instance;
46 }
47
48 /**
49 * Constructor for singleton
50 *
51 * @since 2.3.3
52 */
53 private function __construct() {
54 add_filter( 'jetpack_heartbeat_stats_array', array( $this, 'add_stats_to_heartbeat' ) );
55 }
56
57 /**
58 * Generates heartbeat stats data.
59 *
60 * @param string $prefix Prefix to add before stats identifier.
61 *
62 * @return array The stats array.
63 */
64 public static function generate_stats_array( $prefix = '' ) {
65 $return = array();
66
67 $return[ "{$prefix}version" ] = JETPACK__VERSION;
68 $return[ "{$prefix}wp-version" ] = get_bloginfo( 'version' );
69 $return[ "{$prefix}php-version" ] = PHP_VERSION;
70 $return[ "{$prefix}branch" ] = (float) JETPACK__VERSION;
71 $return[ "{$prefix}wp-branch" ] = (float) get_bloginfo( 'version' );
72 $return[ "{$prefix}php-branch" ] = (float) PHP_VERSION;
73 $return[ "{$prefix}public" ] = Jetpack_Options::get_option( 'public' );
74 $return[ "{$prefix}ssl" ] = Jetpack::permit_ssl();
75 $return[ "{$prefix}is-https" ] = is_ssl() ? 'https' : 'http';
76 $return[ "{$prefix}language" ] = get_bloginfo( 'language' );
77 $return[ "{$prefix}charset" ] = get_bloginfo( 'charset' );
78 $return[ "{$prefix}is-multisite" ] = is_multisite() ? 'multisite' : 'singlesite';
79 $return[ "{$prefix}plugins" ] = implode( ',', Jetpack::get_active_plugins() );
80 if ( function_exists( 'get_mu_plugins' ) ) {
81 $return[ "{$prefix}mu-plugins" ] = implode( ',', array_keys( get_mu_plugins() ) );
82 }
83 $return[ "{$prefix}manage-enabled" ] = true;
84
85 if ( function_exists( 'get_space_used' ) ) { // Only available in multisite.
86 $space_used = get_space_used();
87 } else {
88 // This is the same as `get_space_used`, except it does not apply the short-circuit filter.
89 $upload_dir = wp_upload_dir();
90 $space_used = get_dirsize( $upload_dir['basedir'] ) / MB_IN_BYTES;
91 }
92
93 $return[ "{$prefix}space-used" ] = $space_used;
94
95 $xmlrpc_errors = Jetpack_Options::get_option( 'xmlrpc_errors', array() );
96 if ( $xmlrpc_errors ) {
97 $return[ "{$prefix}xmlrpc-errors" ] = implode( ',', array_keys( $xmlrpc_errors ) );
98 Jetpack_Options::delete_option( 'xmlrpc_errors' );
99 }
100
101 // Missing the connection owner?
102 $connection_manager = new Manager();
103 $return[ "{$prefix}missing-owner" ] = $connection_manager->is_missing_connection_owner();
104
105 // is-multi-network can have three values, `single-site`, `single-network`, and `multi-network`.
106 $return[ "{$prefix}is-multi-network" ] = 'single-site';
107 if ( is_multisite() ) {
108 $return[ "{$prefix}is-multi-network" ] = Jetpack::is_multi_network() ? 'multi-network' : 'single-network';
109 }
110
111 if ( ! empty( $_SERVER['SERVER_ADDR'] ) || ! empty( $_SERVER['LOCAL_ADDR'] ) ) {
112 $ip = ! empty( $_SERVER['SERVER_ADDR'] ) ? wp_unslash( $_SERVER['SERVER_ADDR'] ) : wp_unslash( $_SERVER['LOCAL_ADDR'] ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized -- Sanitized just below.
113 $ip_arr = array_map( 'intval', explode( '.', $ip ) );
114 if ( 4 === count( $ip_arr ) ) {
115 $return[ "{$prefix}ip-2-octets" ] = implode( '.', array_slice( $ip_arr, 0, 2 ) );
116 }
117 }
118
119 foreach ( Jetpack::get_available_modules() as $slug ) {
120 $return[ "{$prefix}module-{$slug}" ] = Jetpack::is_module_active( $slug ) ? 'on' : 'off';
121 }
122
123 return $return;
124 }
125
126 /**
127 * Add Jetpack Stats array to Heartbeat if Jetpack is connected
128 *
129 * @since 8.9.0
130 *
131 * @param array $stats Jetpack Heartbeat stats.
132 * @return array $stats
133 */
134 public function add_stats_to_heartbeat( $stats ) {
135
136 if ( ! Jetpack::is_connection_ready() ) {
137 return $stats;
138 }
139
140 $jetpack_stats = self::generate_stats_array();
141
142 return array_merge( $stats, $jetpack_stats );
143 }
144 }
145