PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.9-a.7
Jetpack – WP Security, Backup, Speed, & Growth v15.9-a.7
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 2 days ago css 2 weeks ago extensions 2 days ago images 1 month ago jetpack_vendor 2 days ago json-endpoints 1 week ago modules 2 days ago sal 1 week ago src 2 days ago vendor 2 days ago views 1 month ago CHANGELOG.md 2 days ago LICENSE.txt 5 months ago SECURITY.md 2 days 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 2 days ago class.jetpack-autoupdate.php 6 months ago class.jetpack-cli.php 2 days 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 2 days ago class.json-api-endpoints.php 1 week ago class.json-api.php 2 weeks ago class.photon.php 3 years ago composer.json 2 days ago enhanced-open-graph.php 1 week ago functions.compat.php 3 months ago functions.cookies.php 2 years ago functions.global.php 2 days ago functions.is-mobile.php 2 years ago functions.opengraph.php 2 months ago functions.photon.php 2 years ago jetpack.php 2 days 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 2 days 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