PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 / DonationForms / Routes / ValidationRoute.php
give / src / DonationForms / Routes Last commit date
Permissions 5 months ago AuthenticationRoute.php 2 years ago DonateRoute.php 1 year ago DonateRouteSignature.php 2 years ago DonationFormsEntityRoute.php 9 months ago ValidationRoute.php 1 year ago
ValidationRoute.php
88 lines
1 <?php
2
3 namespace Give\DonationForms\Routes;
4
5
6 use Exception;
7 use Give\DonationForms\DataTransferObjects\DonateRouteData;
8 use Give\DonationForms\DataTransferObjects\ValidationRouteData;
9 use Give\DonationForms\Exceptions\DonationFormFieldErrorsException;
10 use Give\DonationForms\Exceptions\DonationFormForbidden;
11 use Give\DonationForms\ValueObjects\DonationFormErrorTypes;
12 use Give\Framework\PaymentGateways\Traits\HandleHttpResponses;
13 use Give\Log\Log;
14 use WP_Error;
15
16 /**
17 * @since 3.0.0
18 */
19 class ValidationRoute
20 {
21 use HandleHttpResponses;
22
23 /**
24 * @since 3.22.0 added additional catch statements for forbidden and unknown errors
25 * @since 3.0.0
26 */
27 public function __invoke(array $request): bool
28 {
29 // create DTO from GET request
30 $routeData = DonateRouteData::fromRequest(give_clean($_GET));
31
32 // validate signature
33 $routeData->validateSignature();
34
35 // create DTO from POST request
36 $formData = ValidationRouteData::fromRequest($request);
37
38 try {
39 $response = $formData->validate();
40
41 $this->handleResponse($response);
42 } catch (DonationFormFieldErrorsException $exception) {
43 $type = DonationFormErrorTypes::VALIDATION;
44 $this->logError($type, $exception->getMessage(), $formData);
45 $this->sendJsonError($type, $exception->getError());
46 } catch (DonationFormForbidden $exception) {
47 wp_die($exception->getMessage(), 403);
48 } catch (Exception $exception) {
49 $type = DonationFormErrorTypes::UNKNOWN;
50 $this->logError($type, $exception->getMessage(), $formData);
51 $this->sendJsonError($type, new WP_Error($type, $exception->getMessage()));
52 }
53
54 exit;
55 }
56
57 /**
58 * @since 3.0.0
59 */
60 private function logError(
61 string $type,
62 string $exceptionMessage,
63 ValidationRouteData $formData
64 ) {
65 Log::error(
66 "Donation Route Error: $type",
67 [
68 'error_type' => $type,
69 'exceptionMessage' => $exceptionMessage,
70 'formData' => $formData->toArray(),
71 ]
72 );
73 }
74
75 /**
76 * @param string $type
77 * @param array|string|WP_Error $errors
78 * @return void
79 */
80 protected function sendJsonError(string $type, WP_Error $errors)
81 {
82 wp_send_json_error([
83 'type' => $type,
84 'errors' => $errors,
85 ]);
86 }
87 }
88