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