PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.9-a.1
Jetpack – WP Security, Backup, Speed, & Growth v15.9-a.1
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 / modules / monitor.php
jetpack / modules Last commit date
canonical-urls 2 months ago carousel 4 weeks ago comment-likes 6 months ago comments 4 weeks ago custom-post-types 3 months ago external-media 6 months ago google-fonts 4 months ago gravatar 5 years ago infinite-scroll 4 weeks ago likes 5 months ago markdown 6 months ago memberships 1 month ago photon-cdn 1 month ago plugin-search 4 weeks ago post-by-email 6 months ago related-posts 3 months ago scan 2 months ago seo-tools 2 months ago sharedaddy 4 weeks ago shortcodes 3 weeks ago simple-payments 6 months ago site-icon 6 months ago sitemaps 6 months ago stats 5 months ago subscriptions 4 weeks ago theme-tools 3 months ago tiled-gallery 6 months ago verification-tools 6 months ago videopress 2 months ago widget-visibility 6 months ago widgets 4 weeks ago woocommerce-analytics 1 month ago wordads 1 month ago wpcom-tos 5 months ago account-protection.php 1 month ago blaze.php 6 months ago blocks.php 6 months ago canonical-urls.php 3 months ago carousel.php 6 months ago comment-likes.php 6 months ago comments.php 2 months ago contact-form.php 6 months ago copy-post.php 4 months ago custom-content-types.php 1 month ago google-fonts.php 1 month ago gravatar-hovercards.php 1 month ago infinite-scroll.php 6 months ago json-api.php 6 months ago latex.php 6 months ago likes.php 4 weeks ago markdown.php 6 months ago module-extras.php 6 months ago module-headings.php 1 month ago module-info.php 3 months ago monitor.php 6 months ago notes.php 5 months ago photon-cdn.php 6 months ago photon.php 6 months ago plugin-search.php 4 weeks ago post-by-email.php 1 month ago post-list.php 6 months ago protect.php 1 month ago publicize.php 6 months ago related-posts.php 1 month ago search.php 6 months ago seo-tools.php 6 months ago sharedaddy.php 3 months ago shortcodes.php 6 months ago shortlinks.php 6 months ago simple-payments.php 6 months ago sitemaps.php 6 months ago sso.php 6 months ago stats.php 5 months ago subscriptions.php 4 weeks ago theme-tools.php 6 months ago tiled-gallery.php 6 months ago vaultpress.php 6 months ago verification-tools.php 1 month ago videopress.php 6 months ago waf.php 6 months ago widget-visibility.php 6 months ago widgets.php 6 months ago woocommerce-analytics.php 6 months ago wordads.php 6 months ago wpcom-reader.php 3 months ago wpgroho.js 1 year ago
monitor.php
141 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2 /**
3 * Module Name: Downtime Monitor
4 * Module Description: Get instant alerts if your site goes down and know when it’s back online.
5 * Sort Order: 28
6 * Recommendation Order: 10
7 * First Introduced: 2.6
8 * Requires Connection: Yes
9 * Requires User Connection: Yes
10 * Auto Activate: No
11 * Module Tags: Recommended
12 * Feature: Security
13 * Additional Search Queries: monitor, uptime, downtime, monitoring, maintenance, maintenance mode, offline, site is down, site down, down, repair, error
14 *
15 * @package automattic/jetpack
16 */
17
18 use Automattic\Jetpack\Connection\Manager as Connection_Manager;
19
20 if ( ! defined( 'ABSPATH' ) ) {
21 exit( 0 );
22 }
23
24 /**
25 * Class Jetpack_Monitor
26 *
27 * @phan-constructor-used-for-side-effects
28 */
29 class Jetpack_Monitor {
30
31 /**
32 * Name of the module.
33 *
34 * @var string Name of module.
35 */
36 public $module = 'monitor';
37
38 /**
39 * Constructor.
40 */
41 public function __construct() {
42 add_action( 'jetpack_modules_loaded', array( $this, 'jetpack_modules_loaded' ) );
43 add_action( 'jetpack_activate_module_monitor', array( $this, 'activate_module' ) );
44 }
45
46 /**
47 * Runs upon module activation.
48 *
49 * @return void
50 */
51 public function activate_module() {
52 if ( ( new Connection_Manager( 'jetpack' ) )->is_user_connected() ) {
53 self::update_option_receive_jetpack_monitor_notification( true );
54 }
55 }
56
57 /**
58 * Runs on the jetpack_modules_loaded hook to enable configuation.
59 *
60 * @return void
61 */
62 public function jetpack_modules_loaded() {
63 Jetpack::enable_module_configurable( $this->module );
64 }
65
66 /**
67 * Whether to receive the notifications.
68 *
69 * @param bool $value `true` to enable notifications, `false` to disable them.
70 *
71 * @return bool
72 */
73 public function update_option_receive_jetpack_monitor_notification( $value ) {
74 $xml = new Jetpack_IXR_Client(
75 array(
76 'user_id' => get_current_user_id(),
77 )
78 );
79 $xml->query( 'jetpack.monitor.setNotifications', (bool) $value );
80
81 if ( $xml->isError() ) {
82 wp_die( sprintf( '%s: %s', esc_html( $xml->getErrorCode() ), esc_html( $xml->getErrorMessage() ) ) );
83 }
84
85 // To be used only in Jetpack_Core_Json_Api_Endpoints::get_remote_value.
86 update_option( 'monitor_receive_notifications', (bool) $value );
87
88 return true;
89 }
90
91 /**
92 * Checks the status of notifications for current Jetpack site user.
93 *
94 * @since 2.8
95 * @since 4.1.0 New parameter $die_on_error.
96 *
97 * @param bool $die_on_error Whether to issue a wp_die when an error occurs or return a WP_Error object.
98 *
99 * @return boolean|WP_Error
100 */
101 public static function user_receives_notifications( $die_on_error = true ) {
102 $xml = new Jetpack_IXR_Client(
103 array(
104 'user_id' => get_current_user_id(),
105 )
106 );
107 $xml->query( 'jetpack.monitor.isUserInNotifications' );
108
109 if ( $xml->isError() ) {
110 if ( $die_on_error ) {
111 wp_die( sprintf( '%s: %s', esc_html( $xml->getErrorCode() ), esc_html( $xml->getErrorMessage() ) ), 400 );
112 } else {
113 return new WP_Error( $xml->getErrorCode(), $xml->getErrorMessage(), array( 'status' => 400 ) );
114 }
115 }
116 return $xml->getResponse();
117 }
118
119 /**
120 * Returns date of the last downtime.
121 *
122 * @since 4.0.0
123 * @return string date in YYYY-MM-DD HH:mm:ss format
124 */
125 public function monitor_get_last_downtime() {
126 $xml = new Jetpack_IXR_Client();
127
128 $xml->query( 'jetpack.monitor.getLastDowntime' );
129
130 if ( $xml->isError() ) {
131 return new WP_Error( 'monitor-downtime', $xml->getErrorMessage() );
132 }
133
134 set_transient( 'monitor_last_downtime', $xml->getResponse(), 10 * MINUTE_IN_SECONDS );
135
136 return $xml->getResponse();
137 }
138 }
139
140 new Jetpack_Monitor();
141