PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.9-a.5
Jetpack – WP Security, Backup, Speed, & Growth v15.9-a.5
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 1 week ago _inc 1 week ago css 2 weeks ago extensions 1 week ago images 1 month ago jetpack_vendor 1 week ago json-endpoints 1 week ago modules 1 week ago sal 1 week ago src 1 week ago vendor 1 week ago views 1 month ago CHANGELOG.md 1 week 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 1 week 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 1 week ago class.jetpack-client-server.php 2 years ago class.jetpack-gutenberg.php 1 week 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 1 week ago class.json-api-endpoints.php 1 week ago class.json-api.php 2 weeks ago class.photon.php 3 years ago composer.json 1 week ago enhanced-open-graph.php 1 week 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 1 week ago json-api-config.php 3 years ago json-endpoints.php 2 years ago load-jetpack.php 1 week ago locales.php 6 months ago readme.txt 1 week 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