PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 3.2.0
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v3.2.0
V-3.3.0 3.2.2 3.2.1 3.2.0 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 V3.0.3 V3.0.2 -3.0.1 V_3.0.0 1.1.1 1.1.8 1.2 1.3 1.4 1.4.18 1.5.2 1.9 2.0 2.10.0 2.10.1 2.10.2 All 137 releases
bit-form / includes / Core / Integration / Acf / AcfHelper.php

AcfHelper.php in Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder 3.2.0, at includes/Core/Integration/Acf/AcfHelper.php

133 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace BitCode\BitForm\Core\Integration\Acf;
4
5 use BitCode\BitForm\Core\Util\WpFileHandler;
6
7 class AcfHelper
8 {
9 public static function acfFieldMapping($acfMapField, $fieldValues)
10 {
11 $selectedTypes = ['checkbox', 'select', 'user', 'post_object'];
12 $acfFieldMappedData = [];
13
14 foreach ($acfMapField as $fieldPair) {
15 $fieldName = $fieldPair->formField;
16
17 $acfFieldKeys = explode('.', $fieldPair->acfField);
18
19 $fieldValue = '';
20
21 if ('custom' === $fieldName && isset($fieldPair->customValue)) {
22 $fieldValue = $fieldPair->customValue;
23 } elseif (isset($fieldValues[$fieldName])) {
24 $fieldValue = $fieldValues[$fieldName];
25 }
26
27 if (count($acfFieldKeys) > 1) {
28 $acfFieldId = $acfFieldKeys[0];
29 $subFieldId = $acfFieldKeys[1];
30 } else {
31 $acfFieldId = $acfFieldKeys[0];
32 }
33
34 $acfFieldInfo = get_field_object($acfFieldId);
35
36 if (!$acfFieldInfo) {
37 continue;
38 }
39
40 if ('repeater' === $acfFieldInfo['type'] && isset($subFieldId)) {
41 $acfFieldMappedData = self::setRepeaterFields($fieldName, $acfFieldInfo, $fieldValues, $subFieldId, $acfFieldMappedData);
42 } elseif (in_array($acfFieldInfo['type'], $selectedTypes)) {
43 $acfFieldMappedData[$acfFieldId] = !is_array($fieldValue) ? explode(',', $fieldValue) : $fieldValue;
44 } else {
45 $acfFieldMappedData[$acfFieldId] = $fieldValue;
46 }
47 }
48
49 return $acfFieldMappedData;
50 }
51
52 private static function setRepeaterFields($fieldName, $acfFieldInfo, $fieldValues, $subFieldId, $acfFieldMappedData)
53 {
54 $formFieldKeys = explode('.', $fieldName);
55
56 if (2 !== count($formFieldKeys)) {
57 return $acfFieldMappedData;
58 }
59
60 $formParentFieldKey = $formFieldKeys[0];
61 $formChildFieldKey = $formFieldKeys[1];
62
63 $acfParentFieldKey = $acfFieldInfo['key'];
64
65 $formRepeaterValues = $fieldValues[$formParentFieldKey];
66
67 if (!isset($acfFieldMappedData[$acfParentFieldKey])) {
68 $acfFieldMappedData[$acfParentFieldKey] = [];
69 }
70
71 foreach ($formRepeaterValues as $repeaterIndex => $values) {
72 $fieldValue = $values[$formChildFieldKey];
73
74 if (!isset($acfFieldMappedData[$acfParentFieldKey][$repeaterIndex])) {
75 $acfFieldMappedData[$acfParentFieldKey][$repeaterIndex] = [];
76 }
77
78 $acfFieldMappedData[$acfParentFieldKey][$repeaterIndex][$subFieldId] = $fieldValue;
79 }
80
81 return $acfFieldMappedData;
82 }
83
84 public static function acfFileMapping($acfMapField, $fieldValues, $entryID, $postId, $formId)
85 {
86 $fileTypes = ['file', 'image'];
87
88 $fileUploadHandle = new WpFileHandler($formId);
89
90 foreach ($acfMapField as $fieldPair) {
91 if (property_exists($fieldPair, 'acfFileUpload') && property_exists($fieldPair, 'formField')) {
92 $acfFieldId = $fieldPair->acfFileUpload;
93
94 $acfFieldInfo = get_field_object($acfFieldId);
95
96 $formField = $fieldPair->formField;
97
98 if (!$acfFieldInfo || empty($fieldValues[$formField])) {
99 continue;
100 }
101
102 if (in_array($acfFieldInfo['type'], $fileTypes)) {
103 $attachMentId = $fileUploadHandle->singleFileMoveWpMedia($entryID, $fieldValues[$formField], $postId);
104
105 if (!empty($attachMentId)) {
106 $exists = metadata_exists('post', $postId, '_' . $acfFieldInfo['name']);
107
108 if (false === $exists) {
109 update_post_meta($postId, '_' . $acfFieldInfo['name'], $acfFieldInfo['key']);
110 update_post_meta($postId, $acfFieldInfo['name'], wp_json_encode($attachMentId));
111 } else {
112 update_post_meta($postId, $acfFieldInfo['name'], wp_json_encode($attachMentId));
113 }
114 }
115 } elseif ('gallery' === $acfFieldInfo['type']) {
116 $attachMentId = $fileUploadHandle->multiFileMoveWpMedia($entryID, $fieldValues[$formField], $postId);
117
118 $exists = metadata_exists('post', $postId, '_' . $acfFieldInfo['name']);
119
120 if (!empty($attachMentId)) {
121 if (false === $exists) {
122 update_post_meta($postId, '_' . $acfFieldInfo['name'], $acfFieldInfo['key']);
123 update_post_meta($postId, $acfFieldInfo['name'], $attachMentId);
124 } else {
125 update_post_meta($postId, $acfFieldInfo['name'], $attachMentId);
126 }
127 }
128 }
129 }
130 }
131 }
132 }
133