PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.27.2
GiveWP – Donation Plugin and Fundraising Platform v2.27.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 / Form / LegacyConsumer / Commands / SetupFieldPersistence.php
give / src / Form / LegacyConsumer / Commands Last commit date
DeprecateOldTemplateHook.php 4 years ago HookCommandInterface.php 4 years ago SetupFieldConfirmation.php 3 years ago SetupFieldEmailTag.php 4 years ago SetupFieldPersistence.php 4 years ago SetupFieldReceipt.php 3 years ago SetupFieldValidation.php 4 years ago SetupNewTemplateHook.php 4 years ago
SetupFieldPersistence.php
110 lines
1 <?php
2
3 namespace Give\Form\LegacyConsumer\Commands;
4
5 use Give\Form\LegacyConsumer\Actions\UploadFilesAction;
6 use Give\Framework\FieldsAPI\Concenrs\StoreAsMeta;
7 use Give\Framework\FieldsAPI\Field;
8 use Give\Framework\FieldsAPI\File;
9 use Give\Framework\FieldsAPI\Group;
10 use Give\Framework\FieldsAPI\Text;
11 use Give\Framework\FieldsAPI\Types;
12
13 /**
14 * Persist custom field values as donation meta.
15 *
16 * @since 2.10.2
17 */
18 class SetupFieldPersistence implements HookCommandInterface
19 {
20
21 /** @var int */
22 private $donationId;
23 /** @var array */
24 private $donationData;
25
26 /**
27 * @since 2.10.2
28 *
29 * @param int $donationId
30 * @param array $donationData
31 */
32 public function __construct($donationId, $donationData)
33 {
34 $this->donationId = $donationId;
35 $this->donationData = $donationData;
36 }
37
38 /**
39 * @since 2.10.2
40 *
41 * @param string $hook
42 *
43 * @void
44 */
45 public function __invoke($hook)
46 {
47 $collection = Group::make($hook);
48 do_action("give_fields_$hook", $collection, $this->donationData['give_form_id']);
49 $collection->walkFields([$this, 'process']);
50 }
51
52 /**
53 * Process the given field.
54 *
55 * @since 2.10.2
56 * @since 2.14.0 Handle File field type and custom field type separately. Use add meta function to persist field value.
57 *
58 * @param Field $field
59 *
60 * @return void
61 */
62 public function process(Field $field)
63 {
64 if ($field->getType() === Types::FILE) {
65 /** @var File $field */
66 if (isset($_FILES[$field->getName()])) {
67 $fileUploader = new UploadFilesAction($field);
68 $fileIds = $fileUploader();
69
70 foreach ($fileIds as $fileId) {
71 if ($field->shouldStoreAsDonorMeta()) {
72 $donorID = give_get_payment_meta($this->donationId, '_give_payment_donor_id');
73 Give()->donor_meta->add_meta($donorID, $field->getName(), $fileId);
74 } else {
75 // Store as Donation Meta - default behavior.
76 give()->payment_meta->add_meta($this->donationId, $field->getName(), $fileId);
77 }
78 }
79 }
80 } elseif (in_array($field->getType(), Types::all(), true)) {
81 if (isset($_POST[$field->getName()])) {
82 $data = give_clean($_POST[$field->getName()]);
83 $value = is_array($data) ?
84 implode('| ', array_values(array_filter($data))) :
85 $data;
86
87 /** @var Text $field */
88 if ($field->shouldStoreAsDonorMeta()) {
89 $donorID = give_get_payment_meta($this->donationId, '_give_payment_donor_id');
90 Give()->donor_meta->add_meta($donorID, $field->getName(), $value);
91 } else {
92 // Store as Donation Meta - default behavior.
93 give()->payment_meta->add_meta($this->donationId, $field->getName(), $value);
94 }
95 }
96 } else {
97 /**
98 * Use this action to save custom field which does not exist in fields API.
99 *
100 * @since 2.14.0
101 *
102 * @param Field $field
103 * @param int $donationId
104 * @param array $donationData
105 */
106 do_action('give_fields_api_save_field', $field, $this->donationId, $this->donationData);
107 }
108 }
109 }
110