PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Promotions / InPluginUpsells / Endpoints / ProductRecommendationsRoute.php
give / src / Promotions / InPluginUpsells / Endpoints Last commit date
HideSaleBannerRoute.php 2 years ago ProductRecommendationsRoute.php 3 years ago
ProductRecommendationsRoute.php
100 lines
1 <?php
2
3 namespace Give\Promotions\InPluginUpsells\Endpoints;
4
5 use Give\API\RestRoute;
6 use WP_Error;
7 use WP_REST_Request;
8 use WP_REST_Response;
9
10
11 class ProductRecommendationsRoute implements RestRoute
12 {
13 /**
14 * @var string
15 */
16 protected $endpoint = 'admin/recommended-options';
17
18 /**
19 * @inheritDoc
20 *
21 * @since 2.27.1
22 */
23 public function registerRoute()
24 {
25 register_rest_route(
26 'give-api/v2',
27 $this->endpoint,
28 [
29 [
30 'methods' => ['POST'],
31 'callback' => [$this, 'handleRequest'],
32 'permission_callback' => [$this, 'permissionsCheck'],
33 'args' => [
34 'option' => [
35 'type' => 'string',
36 'required' => true,
37 'enum' => [
38 'givewp_donations_recurring_recommendation_dismissed',
39 'givewp_donations_fee_recovery_recommendation_dismissed',
40 'givewp_donations_designated_funds_recommendation_dismissed',
41 'givewp_reports_recurring_recommendation_dismissed',
42 'givewp_reports_fee_recovery_recommendation_dismissed',
43 'givewp_donors_fee_recovery_recommendation_dismissed',
44 'givewp_form_editor_donation_options_recurring_recommendation',
45 'givewp_payment_gateway_fee_recovery_recommendation',
46 ],
47 ],
48 ],
49 ],
50 ]
51 );
52 }
53
54 /**
55 * @since 2.27.1
56 */
57 public function permissionsCheck()
58 {
59 if ( ! current_user_can('manage_options')) {
60 return new WP_Error(
61 'rest_forbidden',
62 esc_html__('You don\'t have permission to dismiss options. Only users with the "manage_options" capability can perform this action.',
63 'give'),
64 ['status' => $this->authorizationStatusCode()]
65 );
66 }
67
68 return true;
69 }
70
71 /**
72 * Sets up the proper HTTP status code for authorization.
73 * @since 2.27.1
74 *
75 * @return int
76 */
77 public function authorizationStatusCode()
78 {
79 if (is_user_logged_in()) {
80 return 403;
81 }
82
83 return 401;
84 }
85
86 /**
87 * @since 2.27.1
88 *
89 * @param WP_REST_Request $request
90 *
91 * @return WP_REST_Response
92 */
93 public function handleRequest(WP_REST_Request $request)
94 {
95 update_option($request->get_param('option'), time());
96
97 return new WP_REST_Response(['option_updated' => $request->get_param('option')]);
98 }
99 }
100