PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.14.2
GiveWP – Donation Plugin and Fundraising Platform v3.14.2
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 / DataTransferObjects / ValidationRouteData.php
give / src / DonationForms / DataTransferObjects Last commit date
AuthenticationData.php 2 years ago DonateControllerData.php 2 years ago DonateFormRouteData.php 1 year ago DonateRouteData.php 2 years ago DonationConfirmationReceiptViewRouteData.php 2 years ago DonationFormGoalData.php 2 years ago DonationFormPreviewRouteData.php 2 years ago DonationFormQueryData.php 2 years ago DonationFormViewRouteData.php 2 years ago LegacyPurchaseFormData.php 2 years ago UserData.php 2 years ago ValidationRouteData.php 2 years ago
ValidationRouteData.php
111 lines
1 <?php
2
3 namespace Give\DonationForms\DataTransferObjects;
4
5 use Give\DonationForms\Exceptions\DonationFormFieldErrorsException;
6 use Give\DonationForms\Models\DonationForm;
7 use Give\Framework\FieldsAPI\Actions\CreateValidatorFromFormFields;
8 use Give\Framework\Http\Response\Types\JsonResponse;
9 use Give\Framework\Support\Contracts\Arrayable;
10 use WP_Error;
11
12 /**
13 * @since 3.0.0
14 */
15 class ValidationRouteData implements Arrayable
16 {
17 /**
18 * @var array
19 */
20 private $requestData;
21 /**
22 * @var int
23 */
24 public $formId;
25
26 /**
27 * Convert data from request into DTO
28 *
29 * @since 3.0.0
30 */
31 public static function fromRequest(array $requestData): self
32 {
33 $self = new self();
34 $self->formId = (int)$requestData['formId'];
35 $self->requestData = $requestData;
36
37 return $self;
38 }
39
40 /**
41 * This method loops over the form schema to
42 * compares the request against the individual fields,
43 * their types and validation rules.
44 *
45 * @since 3.0.0
46 *
47 * @throws DonationFormFieldErrorsException
48 */
49 public function validate(): JsonResponse
50 {
51 $request = $this->getRequestData();
52
53 /** @var DonationForm $form */
54 $form = DonationForm::find($this->formId);
55
56 if (!$form) {
57 $this->throwDonationFormFieldErrorsException(['formId' => 'Invalid Form ID, Form not found']);
58 }
59
60 $formFields = array_filter($form->schema()->getFields(), static function ($field) use ($request) {
61 return array_key_exists($field->getName(), $request);
62 });
63
64 $validator = (new CreateValidatorFromFormFields())($formFields, $request);
65
66 if ($validator->fails()) {
67 $this->throwDonationFormFieldErrorsException($validator->errors());
68 }
69
70 return new JsonResponse(['valid' => true]);
71 }
72
73 /**
74 * @since 3.0.0
75 */
76 public function getRequestData(): array
77 {
78 return $this->requestData;
79 }
80
81 /**
82 * This loops over an array of errors in the specific FieldAPI format,
83 * and converts them into a WP_Error object that is attached to the
84 * exception and delivered back to the client via JSON.
85 *
86 * @since 3.0.0
87 *
88 * @param array<string, string> $errors
89 *
90 * @throws DonationFormFieldErrorsException
91 */
92 private function throwDonationFormFieldErrorsException(array $errors)
93 {
94 $wpError = new WP_Error();
95
96 foreach ($errors as $id => $error) {
97 $wpError->add($id, $error);
98 }
99
100 throw new DonationFormFieldErrorsException($wpError);
101 }
102
103 /**
104 * @since 3.0.0
105 */
106 public function toArray(): array
107 {
108 return get_object_vars($this);
109 }
110 }
111