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