PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 7.5.1
Jetpack – WP Security, Backup, Speed, & Growth v7.5.1
12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 14.4.2 All 500 releases
jetpack / modules / monitor.php
monitor.php
148 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Module Name: Monitor
4 * Module Description: Jetpack’s downtime monitoring will continuously watch your site, and alert you the moment that downtime is detected.
5 * Sort Order: 28
6 * Recommendation Order: 10
7 * First Introduced: 2.6
8 * Requires Connection: Yes
9 * Auto Activate: No
10 * Module Tags: Recommended
11 * Feature: Security
12 * Additional Search Queries: monitor, uptime, downtime, monitoring, maintenance, maintenance mode, offline, site is down, site down, down, repair, error
13 */
14
15 class Jetpack_Monitor {
16
17 public $module = 'monitor';
18
19 function __construct() {
20 add_action( 'jetpack_modules_loaded', array( $this, 'jetpack_modules_loaded' ) );
21 add_action( 'jetpack_activate_module_monitor', array( $this, 'activate_module' ) );
22 }
23
24 public function activate_module() {
25 if ( Jetpack::is_user_connected() ) {
26 self::update_option_receive_jetpack_monitor_notification( true );
27 }
28 }
29
30 public function jetpack_modules_loaded() {
31 Jetpack::enable_module_configurable( $this->module );
32 }
33
34 public function is_active() {
35 Jetpack::load_xml_rpc_client();
36 $xml = new Jetpack_IXR_Client( array(
37 'user_id' => get_current_user_id()
38 ) );
39 $xml->query( 'jetpack.monitor.isActive' );
40 if ( $xml->isError() ) {
41 wp_die( sprintf( '%s: %s', $xml->getErrorCode(), $xml->getErrorMessage() ) );
42 }
43 return $xml->getResponse();
44 }
45
46 public function update_option_receive_jetpack_monitor_notification( $value ) {
47 Jetpack::load_xml_rpc_client();
48 $xml = new Jetpack_IXR_Client( array(
49 'user_id' => get_current_user_id()
50 ) );
51 $xml->query( 'jetpack.monitor.setNotifications', (bool) $value );
52
53 if ( $xml->isError() ) {
54 wp_die( sprintf( '%s: %s', $xml->getErrorCode(), $xml->getErrorMessage() ) );
55 }
56
57 // To be used only in Jetpack_Core_Json_Api_Endpoints::get_remote_value.
58 update_option( 'monitor_receive_notifications', (bool) $value );
59
60 return true;
61 }
62
63 /**
64 * Checks the status of notifications for current Jetpack site user.
65 *
66 * @since 2.8
67 * @since 4.1.0 New parameter $die_on_error.
68 *
69 * @param bool $die_on_error Whether to issue a wp_die when an error occurs or return a WP_Error object.
70 *
71 * @return boolean|WP_Error
72 */
73 static function user_receives_notifications( $die_on_error = true ) {
74 Jetpack::load_xml_rpc_client();
75 $xml = new Jetpack_IXR_Client( array(
76 'user_id' => get_current_user_id()
77 ) );
78 $xml->query( 'jetpack.monitor.isUserInNotifications' );
79
80 if ( $xml->isError() ) {
81 if ( $die_on_error ) {
82 wp_die( sprintf( '%s: %s', $xml->getErrorCode(), $xml->getErrorMessage() ) );
83 } else {
84 return new WP_Error( $xml->getErrorCode(), $xml->getErrorMessage(), array( 'status' => 400 ) );
85 }
86 }
87 return $xml->getResponse();
88 }
89
90 public function activate_monitor() {
91 Jetpack::load_xml_rpc_client();
92 $xml = new Jetpack_IXR_Client( array(
93 'user_id' => get_current_user_id()
94 ) );
95
96 $xml->query( 'jetpack.monitor.activate' );
97
98 if ( $xml->isError() ) {
99 wp_die( sprintf( '%s: %s', $xml->getErrorCode(), $xml->getErrorMessage() ) );
100 }
101 return true;
102 }
103
104 public function deactivate_monitor() {
105 Jetpack::load_xml_rpc_client();
106 $xml = new Jetpack_IXR_Client( array(
107 'user_id' => get_current_user_id()
108 ) );
109
110 $xml->query( 'jetpack.monitor.deactivate' );
111
112 if ( $xml->isError() ) {
113 wp_die( sprintf( '%s: %s', $xml->getErrorCode(), $xml->getErrorMessage() ) );
114 }
115 return true;
116 }
117
118 /*
119 * Returns date of the last downtime.
120 *
121 * @since 4.0.0
122 * @return date in YYYY-MM-DD HH:mm:ss format
123 */
124 public function monitor_get_last_downtime() {
125 // if ( $last_down = get_transient( 'monitor_last_downtime' ) ) {
126 // return $last_down;
127 // }
128
129 Jetpack::load_xml_rpc_client();
130 $xml = new Jetpack_IXR_Client( array(
131 'user_id' => get_current_user_id()
132 ) );
133
134 $xml->query( 'jetpack.monitor.getLastDowntime' );
135
136 if ( $xml->isError() ) {
137 return new WP_Error( 'monitor-downtime', $xml->getErrorMessage() );
138 }
139
140 set_transient( 'monitor_last_downtime', $xml->getResponse(), 10 * MINUTE_IN_SECONDS );
141
142 return $xml->getResponse();
143 }
144
145 }
146
147 new Jetpack_Monitor;
148