PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.3-beta
16.3 16.3-beta 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 All 508 releases
← All changes | jetpack_vendor/automattic/jetpack-jitm/src/class-rest-api-endpoints.php +103 -0 16.2-beta → 16.3-beta View file →
@@ -1,0 +1,103 @@
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 +}