PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.2
Jetpack – WP Security, Backup, Speed, & Growth v16.2
16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 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 All 506 releases
jetpack / jetpack_vendor / automattic / jetpack-jitm / src / class-rest-api-endpoints.php

class-rest-api-endpoints.php in Jetpack – WP Security, Backup, Speed, & Growth 16.2, at jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php

104 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * JITM's REST API Endpoints
4 *
5 * @package automattic/jetpack-jitm
6 */
7
8 namespace Automattic\Jetpack\JITMS;
9
10 use Automattic\Jetpack\Connection\REST_Connector;
11 use WP_Error;
12 use WP_REST_Request;
13 use WP_REST_Server;
14
15 if ( ! defined( 'ABSPATH' ) ) {
16 exit( 0 );
17 }
18
19 /**
20 * Register the JITM's REST API Endpoints and their callbacks.
21 */
22 class Rest_Api_Endpoints {
23
24 /**
25 * Declare the JITM's REST API endpoints.
26 */
27 public static function register_endpoints() {
28
29 register_rest_route(
30 'jetpack/v4',
31 '/jitm',
32 array(
33 'methods' => WP_REST_Server::READABLE,
34 'callback' => __CLASS__ . '::get_jitm_message',
35 'permission_callback' => '__return_true',
36 )
37 );
38
39 register_rest_route(
40 'jetpack/v4',
41 '/jitm',
42 array(
43 'methods' => WP_REST_Server::CREATABLE,
44 'callback' => __CLASS__ . '::delete_jitm_message',
45 'permission_callback' => __CLASS__ . '::delete_jitm_message_permission_callback',
46 )
47 );
48 }
49
50 /**
51 * Asks for a jitm, unless they've been disabled, in which case it returns an empty array
52 *
53 * @param WP_REST_Request $request The request object.
54 *
55 * @return array An array of jitms
56 */
57 public static function get_jitm_message( $request ) {
58 $jitm = JITM::get_instance();
59
60 if ( ! $jitm->jitms_enabled() ) {
61 return array();
62 }
63
64 $query_string = $request['query'] ?? '';
65 $query_array = array();
66 if ( ! empty( $query_string ) ) {
67 parse_str( $query_string, $query_array );
68 $query_array = urldecode_deep( $query_array );
69 }
70
71 return $jitm->get_messages( $request['message_path'], $query_array, 'true' === $request['full_jp_logo_exists'] );
72 }
73
74 /**
75 * Dismisses a jitm.
76 *
77 * @param WP_REST_Request $request The request object.
78 *
79 * @return bool Always True
80 */
81 public static function delete_jitm_message( $request ) {
82 $jitm = JITM::get_instance();
83
84 if ( ! $jitm->jitms_enabled() ) {
85 return true;
86 }
87
88 return $jitm->dismiss( $request['id'], $request['feature_class'] );
89 }
90
91 /**
92 * Verify that the user can dismiss JITM messages.
93 *
94 * @return bool|WP_Error True if user is able to dismiss JITM messages.
95 */
96 public static function delete_jitm_message_permission_callback() {
97 if ( current_user_can( 'read' ) ) {
98 return true;
99 }
100
101 return new WP_Error( 'invalid_user_permission_jetpack_delete_jitm_message', REST_Connector::get_user_permissions_error_msg(), array( 'status' => rest_authorization_required_code() ) );
102 }
103 }
104