PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.2.0
GiveWP – Donation Plugin and Fundraising Platform v4.2.0
4.16.4 4.16.3 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 / API / REST / V3 / Routes / Donors / RegisterDonorRoutes.php
give / src / API / REST / V3 / Routes / Donors Last commit date
ValueObjects 1 year ago RegisterDonorRoutes.php 1 year ago
RegisterDonorRoutes.php
203 lines
1 <?php
2
3 namespace Give\API\REST\V3\Routes\Donors;
4
5 use Give\API\REST\V3\Routes\Donors\ValueObjects\DonorAnonymousMode;
6 use Give\API\REST\V3\Routes\Donors\ValueObjects\DonorRoute;
7 use Give\Donors\Controllers\DonorRequestController;
8 use WP_Error;
9 use WP_REST_Request;
10 use WP_REST_Server;
11
12 /**
13 * @since 4.0.0
14 */
15 class RegisterDonorRoutes
16 {
17 /**
18 * @var DonorRequestController
19 */
20 protected $donorRequestController;
21
22 /**
23 * @since 4.0.0
24 */
25 public function __construct(DonorRequestController $donorRequestController)
26 {
27 $this->donorRequestController = $donorRequestController;
28 }
29
30 /**
31 * @since 4.0.0
32 */
33 public function __invoke()
34 {
35 $this->registerGetDonor();
36 $this->registerGetDonors();
37 }
38
39 /**
40 * Get Donor route
41 *
42 * @since 4.0.0
43 */
44 public function registerGetDonor()
45 {
46 register_rest_route(
47 DonorRoute::NAMESPACE,
48 DonorRoute::DONOR,
49 [
50 [
51 'methods' => WP_REST_Server::READABLE,
52 'callback' => function (WP_REST_Request $request) {
53 return $this->donorRequestController->getDonor($request);
54 },
55 'permission_callback' => function (WP_REST_Request $request) {
56 return $this->permissionsCheck($request);
57 },
58 ],
59 'args' => [
60 'id' => [
61 'type' => 'integer',
62 'required' => true,
63 ],
64 'includeSensitiveData' => [
65 'type' => 'boolean',
66 'default' => false,
67 ],
68 'anonymousDonors' => [
69 'type' => 'string',
70 'default' => 'exclude',
71 'enum' => [
72 'exclude',
73 'include',
74 'redact',
75 ],
76 ],
77 ],
78 ]
79 );
80 }
81
82 /**
83 * Get Donors route
84 *
85 * @since 4.0.0
86 */
87 public function registerGetDonors()
88 {
89 register_rest_route(
90 DonorRoute::NAMESPACE,
91 DonorRoute::DONORS,
92 [
93 [
94 'methods' => WP_REST_Server::READABLE,
95 'callback' => function (WP_REST_Request $request) {
96 return $this->donorRequestController->getDonors($request);
97 },
98 'permission_callback' => function (WP_REST_Request $request) {
99 return $this->permissionsCheck($request);
100 },
101 ],
102 'args' => [
103 'page' => [
104 'type' => 'integer',
105 'default' => 1,
106 'minimum' => 1,
107 ],
108 'per_page' => [
109 'type' => 'integer',
110 'default' => 30,
111 'minimum' => 1,
112 'maximum' => 100,
113 ],
114 'sort' => [
115 'type' => 'string',
116 'default' => 'id',
117 'enum' => [
118 'id',
119 'createdAt',
120 'name',
121 'firstName',
122 'lastName',
123 'totalAmountDonated',
124 'totalNumberOfDonations',
125 ],
126 ],
127 'direction' => [
128 'type' => 'string',
129 'default' => 'DESC',
130 'enum' => ['ASC', 'DESC'],
131 ],
132 'mode' => [
133 'type' => 'string',
134 'default' => 'live',
135 'enum' => ['live', 'test'],
136 ],
137 'onlyWithDonations' => [
138 'type' => 'boolean',
139 'default' => true,
140 ],
141 'campaignId' => [
142 'type' => 'integer',
143 'default' => 0,
144 ],
145 'includeSensitiveData' => [
146 'type' => 'boolean',
147 'default' => false,
148 ],
149 'anonymousDonors' => [
150 'type' => 'string',
151 'default' => 'exclude',
152 'enum' => [
153 'exclude',
154 'include',
155 'redact',
156 ],
157 ],
158 ],
159 ]
160 );
161 }
162
163 /**
164 * @since 4.0.0
165 */
166 public function permissionsCheck(WP_REST_Request $request)
167 {
168 $isAdmin = current_user_can('manage_options');
169
170 $includeSensitiveData = $request->get_param('includeSensitiveData');
171 if ( ! $isAdmin && $includeSensitiveData) {
172 return new WP_Error(
173 'rest_forbidden',
174 esc_html__('You do not have permission to include sensitive data.', 'give'),
175 ['status' => $this->authorizationStatusCode()]
176 );
177 }
178
179 $donorAnonymousMode = new DonorAnonymousMode($request->get_param('anonymousDonors'));
180 if ( ! $isAdmin && $donorAnonymousMode->isIncluded()) {
181 return new WP_Error(
182 'rest_forbidden',
183 esc_html__('You do not have permission to include anonymous donors.', 'give'),
184 ['status' => $this->authorizationStatusCode()]
185 );
186 }
187
188 return true;
189 }
190
191 /**
192 * @since 4.0.0
193 */
194 public function authorizationStatusCode(): int
195 {
196 if (is_user_logged_in()) {
197 return 403;
198 }
199
200 return 401;
201 }
202 }
203