| @@ -19,8 +19,10 @@ | ||
| 19 | 19 | { |
| 20 | 20 | private $_formID; |
| 21 | 21 | private $_wpdb; |
| 22 | 22 | |
| 23 | + public const BIT_FORMS_FILE_TYPE = ['file-up', 'advanced-file-up', 'signature']; | |
| 24 | + | |
| 23 | 25 | public function __construct($integrationID, $fromID) |
| 24 | 26 | { |
| 25 | 27 | $this->_formID = $fromID; |
| 26 | 28 | |
| @@ -49,9 +51,9 @@ | ||
| 49 | 51 | } |
| 50 | 52 | return $specialTagFieldValue; |
| 51 | 53 | } |
| 52 | 54 | |
| 53 | - private function podMappingField($integrationDetails, $podField, $formFields, $fieldValues, $entryID, $postID) | |
| 55 | + private function podMappingField($integrationDetails, $podField, $fieldValues, $entryID, $postID) | |
| 54 | 56 | { |
| 55 | 57 | $string_types = [ |
| 56 | 58 | 'text', |
| 57 | 59 | 'textarea', |
| @@ -71,42 +73,53 @@ | ||
| 71 | 73 | 'time', |
| 72 | 74 | 'datetime', |
| 73 | 75 | 'datetime-local', |
| 74 | 76 | 'url', |
| 77 | + 'currency', | |
| 75 | 78 | ]; |
| 79 | + | |
| 80 | + $fieldValues = IntegrationHandler::formattedRepeaterValue($fieldValues); | |
| 81 | + | |
| 76 | 82 | $fileUploadHandle = new WpFileHandler($this->_formID); |
| 77 | 83 | $podData = []; |
| 78 | 84 | foreach ($integrationDetails->pod_map as $fieldPair) { |
| 79 | - foreach ($podField as $pod) { | |
| 80 | - foreach ($formFields as $field) { | |
| 81 | - if (!empty($fieldPair->podFormField) && !empty($fieldPair->formField)) { | |
| 82 | - if ($fieldPair->formField === $field['key'] && in_array($pod['type'], $string_types) && !empty($fieldValues[$fieldPair->formField])) { | |
| 83 | - $podData[$fieldPair->podFormField] = $fieldValues[$fieldPair->formField]; | |
| 84 | - } elseif ($fieldPair->formField === $field['key'] && 'decision-box' === $field['type'] && 'boolean' === $pod['type']) { | |
| 85 | - if (1 === (int) $fieldValues[$fieldPair->formField] || 0 === (int) $fieldValues[$fieldPair->formField]) { | |
| 86 | - $podData[$fieldPair->podFormField] = $fieldValues[$fieldPair->formField]; | |
| 85 | + if (!empty($fieldPair->podFormField) && !empty($fieldPair->formField)) { | |
| 86 | + $pod = $podField[$fieldPair->podFormField]; | |
| 87 | + if (in_array($pod['type'], $string_types) && !empty($fieldValues[$fieldPair->formField])) { | |
| 88 | + if (1 === $pod['is_repeatable'] && is_array($fieldValues[$fieldPair->formField])) { | |
| 89 | + // $repeaterValues = call_user_func_array('array_merge', array_map('array_values', $fieldValues[$fieldPair->formField])); | |
| 90 | + $podData[$fieldPair->podFormField] = $fieldValues[$fieldPair->formField]; | |
| 91 | + } else { | |
| 92 | + $podData[$fieldPair->podFormField] = $fieldValues[$fieldPair->formField]; | |
| 93 | + } | |
| 94 | + } | |
| 95 | + // elseif (isset($field['mul'], $field) && in_array($pod['type'], $string_types) && 'file-up' !== $field['type']) { | |
| 96 | + // if (true === $field['mul'] && 'multi' === $pod['pick_format_type'] && !empty($fieldValues[$fieldPair->formField])) { | |
| 97 | + // $podData[$fieldPair->podFormField] = explode(',', $fieldValues[$fieldPair->formField]); | |
| 98 | + // } elseif (false === $field['mul'] && 'multi' === $pod['pick_format_type'] && !empty($fieldValues[$fieldPair->formField])) { | |
| 99 | + // $podData[$fieldPair->podFormField] = $fieldValues[$fieldPair->formField]; | |
| 100 | + // } | |
| 101 | + // } | |
| 102 | + elseif ('file' === $pod['type']) { | |
| 103 | + if (!empty($fieldValues[$fieldPair->formField])) { | |
| 104 | + if ('multi' === $pod['file_format_type']) { | |
| 105 | + $attachmentId = $fileUploadHandle->multiFileMoveWpMedia($entryID, $fieldValues[$fieldPair->formField], $postID); | |
| 106 | + if (!empty($attachmentId)) { | |
| 107 | + update_post_meta($postID, $fieldPair->podFormField, $attachmentId); | |
| 108 | + update_post_meta($postID, '_pods_' . $fieldPair->podFormField, wp_json_encode($attachmentId)); | |
| 87 | 109 | } |
| 88 | - } elseif ($fieldPair->formField === $field['key'] && isset($field['mul'], $field) && in_array($pod['type'], $string_types) && 'file-up' !== $field['type']) { | |
| 89 | - if (true === $field['mul'] && 'multi' === $pod['pick_format_type'] && !empty($fieldValues[$fieldPair->formField])) { | |
| 90 | - $podData[$fieldPair->podFormField] = explode(',', $fieldValues[$fieldPair->formField]); | |
| 91 | - } elseif (false === $field['mul'] && 'multi' === $pod['pick_format_type'] && !empty($fieldValues[$fieldPair->formField])) { | |
| 92 | - $podData[$fieldPair->podFormField] = $fieldValues[$fieldPair->formField]; | |
| 110 | + } elseif ('single' === $pod['file_format_type']) { | |
| 111 | + $attachmentData = []; | |
| 112 | + if (!is_array($fieldValues[$fieldPair->formField])) { | |
| 113 | + $fileArr = explode('/', $fieldValues[$fieldPair->formField]); | |
| 114 | + $attachmentData[] = $fileArr[count($fileArr) - 1]; | |
| 115 | + } else { | |
| 116 | + $attachmentData = $fieldValues[$fieldPair->formField]; | |
| 93 | 117 | } |
| 94 | - } elseif ($fieldPair->formField === $field['key'] && 'file-up' === $field['type'] && 'file' === $pod['type']) { | |
| 95 | - if (!empty($fieldValues[$fieldPair->formField])) { | |
| 96 | - if ('multi' === $pod['file_format_type']) { | |
| 97 | - $attachmentId = $fileUploadHandle->multiFileMoveWpMedia($entryID, $fieldValues[$fieldPair->formField], $postID); | |
| 98 | - if (!empty($attachmentId)) { | |
| 99 | - update_post_meta($postID, $fieldPair->podFormField, $attachmentId); | |
| 100 | - update_post_meta($postID, '_pods_' . $fieldPair->podFormField, wp_json_encode($attachmentId)); | |
| 101 | - } | |
| 102 | - } elseif ('single' === $pod['file_format_type']) { | |
| 103 | - $attachmentId = $fileUploadHandle->singleFileMoveWpMedia($entryID, $fieldValues[$fieldPair->formField], $postID); | |
| 104 | - if (!empty($attachmentId)) { | |
| 105 | - update_post_meta($postID, $fieldPair->podFormField, $attachmentId); | |
| 106 | - update_post_meta($postID, '_pods_' . $fieldPair->podFormField, wp_json_encode($attachmentId)); | |
| 107 | - } | |
| 108 | - } | |
| 118 | + $attachmentId = $fileUploadHandle->singleFileMoveWpMedia($entryID, $attachmentData, $postID); | |
| 119 | + if (!empty($attachmentId)) { | |
| 120 | + update_post_meta($postID, $fieldPair->podFormField, $attachmentId); | |
| 121 | + update_post_meta($postID, '_pods_' . $fieldPair->podFormField, wp_json_encode($attachmentId)); | |
| 109 | 122 | } |
| 110 | 123 | } |
| 111 | 124 | } |
| 112 | 125 | } |
| @@ -114,8 +127,10 @@ | ||
| 114 | 127 | } |
| 115 | 128 | return $podData; |
| 116 | 129 | } |
| 117 | 130 | |
| 131 | + // formatted field values for repeater field | |
| 132 | + | |
| 118 | 133 | private function postFieldMapping($fieldData, $post_map, $formFields, $fieldValues, $postID, $entryID) |
| 119 | 134 | { |
| 120 | 135 | $uploadFeatureImg = new WpFileHandler($this->_formID); |
| 121 | 136 | foreach ($post_map as $fieldPair) { |
| @@ -122,9 +137,9 @@ | ||
| 122 | 137 | foreach ($formFields as $field) { |
| 123 | 138 | if (!empty($fieldPair->postFormField) && !empty($fieldPair->formField)) { |
| 124 | 139 | if ($fieldPair->formField === $field['key'] && '_thumbnail_id' !== $fieldPair->postFormField) { |
| 125 | 140 | $fieldData[$fieldPair->postFormField] = $fieldValues[$fieldPair->formField]; |
| 126 | - } elseif ($fieldPair->formField === $field['key'] && 'file-up' === $field['type'] && '_thumbnail_id' === $fieldPair->postFormField && !empty($fieldValues[$field['key']])) { | |
| 141 | + } elseif ($fieldPair->formField === $field['key'] && in_array($field['type'], self::BIT_FORMS_FILE_TYPE) && '_thumbnail_id' === $fieldPair->postFormField && !empty($fieldValues[$field['key']])) { | |
| 127 | 142 | if (!empty($fieldValues[$field['key']])) { |
| 128 | 143 | $uploadFeatureImg->uploadFeatureImg($fieldValues[$field['key']], $entryID, $postID); |
| 129 | 144 | } |
| 130 | 145 | } |
| @@ -139,9 +154,9 @@ | ||
| 139 | 154 | $integrationDetails = is_string($integrationData->integration_details) ? json_decode($integrationData->integration_details) : $integrationData->integration_details; |
| 140 | 155 | $fieldData = []; |
| 141 | 156 | $taxonomy = new WpFileHandler($integrationData->form_id); |
| 142 | 157 | |
| 143 | - $formManger = new FormManager($integrationData->form_id); | |
| 158 | + $formManger = FormManager::getInstance($integrationData->form_id); | |
| 144 | 159 | $formFields = $formManger->getFields(); |
| 145 | 160 | $allFields = pods($integrationDetails->post_type); |
| 146 | 161 | $podField = []; |
| 147 | 162 | |
| @@ -146,15 +161,19 @@ | ||
| 146 | 161 | $podField = []; |
| 147 | 162 | |
| 148 | 163 | foreach ($allFields->fields as $key => $field) { |
| 149 | 164 | $podField[$key]['type'] = $field['type']; |
| 150 | - $podField[$key]['pick_format_type'] = $field['options']['pick_format_type']; | |
| 151 | - $podField[$key]['file_format_type'] = $field['options']['file_format_type']; | |
| 165 | + // $podField[$key]['pick_format_type'] = $field['options']['pick_format_type']; | |
| 166 | + // $podField[$key]['file_format_type'] = $field['options']['file_format_type']; | |
| 167 | + $podField[$key]['pick_format_type'] = $field['pick_format_type']; | |
| 168 | + $podField[$key]['file_format_type'] = $field['file_format_type']; | |
| 169 | + $podField[$key]['is_repeatable'] = (int) $field['repeatable']; | |
| 152 | 170 | } |
| 153 | 171 | |
| 154 | 172 | $fieldData['comment_status'] = isset($integrationDetails->comment_status) ? $integrationDetails->comment_status : ''; |
| 155 | 173 | $fieldData['post_status'] = isset($integrationDetails->post_status) ? $integrationDetails->post_status : ''; |
| 156 | 174 | $fieldData['post_type'] = isset($integrationDetails->post_type) ? $integrationDetails->post_type : ''; |
| 175 | + | |
| 157 | 176 | if (isset($integrationDetails->post_author) && 'logged_in_user' !== $integrationDetails->post_author) { |
| 158 | 177 | $fieldData['post_author'] = $integrationDetails->post_author; |
| 159 | 178 | } else { |
| 160 | 179 | $fieldData['post_author'] = get_current_user_id(); |
| @@ -160,10 +179,14 @@ | ||
| 160 | 179 | $fieldData['post_author'] = get_current_user_id(); |
| 161 | 180 | } |
| 162 | 181 | |
| 163 | 182 | $exist_id = $fieldData['post_type'] . '_' . $entryID; |
| 164 | - $sql = "SELECT * FROM `{$this->_wpdb->prefix}bitforms_form_entrymeta` WHERE `meta_key`='$exist_id' "; | |
| 165 | - $exist_post_id = $this->_wpdb->get_results($sql); | |
| 183 | + $exist_post_id = $this->_wpdb->get_results( | |
| 184 | + $this->_wpdb->prepare( | |
| 185 | + "SELECT * FROM `{$this->_wpdb->prefix}bitforms_form_entrymeta` WHERE `meta_key`=%s", | |
| 186 | + $exist_id | |
| 187 | + ) | |
| 188 | + ); | |
| 166 | 189 | $taxanomyData = $taxonomy->taxonomyData($formFields, $fieldValues); |
| 167 | 190 | |
| 168 | 191 | if ([] === $exist_post_id) { |
| 169 | 192 | $post_id = wp_insert_post(['post_title' => 'null', 'post_content' => 'null']); |
| @@ -179,8 +202,9 @@ | ||
| 179 | 202 | wp_set_post_terms($post_id, $taxanomy['value'], $taxanomy['term'], false); |
| 180 | 203 | } |
| 181 | 204 | } |
| 182 | 205 | |
| 206 | + // Form entry meta insert; meta_key/meta_value required to map dynamic field data to Pods integration record. | |
| 183 | 207 | $this->_wpdb->insert( |
| 184 | 208 | "{$this->_wpdb->prefix}bitforms_form_entrymeta", |
| 185 | 209 | [ |
| 186 | 210 | 'meta_key' => $fieldData['post_type'] . '_' . $entryID, |
| @@ -190,19 +214,11 @@ | ||
| 190 | 214 | ); |
| 191 | 215 | |
| 192 | 216 | $smartTagValue = $this->smartTagMappingValue($integrationDetails->pod_map); |
| 193 | 217 | $updatedPodValues = $fieldValues + $smartTagValue; |
| 194 | - | |
| 195 | - $podData = $this->podMappingField($integrationDetails, $podField, $formFields, $updatedPodValues, $entryID, $post_id); | |
| 218 | + $podData = $this->podMappingField($integrationDetails, $podField, $updatedPodValues, $entryID, $post_id); | |
| 196 | 219 | foreach ($podData as $key => $data) { |
| 197 | - if (is_array($data)) { | |
| 198 | - $count = count($data); | |
| 199 | - for ($i = 0; $i < $count; $i++) { | |
| 200 | - add_post_meta($post_id, $key, $data[$i]); | |
| 201 | - } | |
| 202 | - } else { | |
| 203 | - add_post_meta($post_id, $key, $data); | |
| 204 | - } | |
| 220 | + add_post_meta($post_id, $key, $data); | |
| 205 | 221 | } |
| 206 | 222 | } else { |
| 207 | 223 | if (!empty($taxanomyData)) { |
| 208 | 224 | foreach ($taxanomyData as $taxanomy) { |
| @@ -208,9 +224,11 @@ | ||
| 208 | 224 | foreach ($taxanomyData as $taxanomy) { |
| 209 | 225 | wp_set_post_terms($exist_post_id[0]->meta_value, $taxanomy['value'], $taxanomy['term'], false); |
| 210 | 226 | } |
| 211 | 227 | } |
| 212 | - $podData = $this->podMappingField($integrationDetails, $podField, $formFields, $fieldValues, $entryID, $exist_post_id[0]->meta_value); | |
| 228 | + | |
| 229 | + $podData = $this->podMappingField($integrationDetails, $podField, $fieldValues, $entryID, $exist_post_id[0]->meta_value); | |
| 230 | + | |
| 213 | 231 | foreach ($podData as $key => $data) { |
| 214 | 232 | if (is_array($data)) { |
| 215 | 233 | $count = count($data); |
| 216 | 234 | for ($i = 0; $i < $count; $i++) { |
| @@ -215,15 +233,14 @@ | ||
| 215 | 233 | $count = count($data); |
| 216 | 234 | for ($i = 0; $i < $count; $i++) { |
| 217 | 235 | delete_post_meta($exist_post_id[0]->meta_value, $key); |
| 218 | 236 | } |
| 219 | - for ($i = 0; $i < $count; $i++) { | |
| 220 | - add_post_meta($exist_post_id[0]->meta_value, $key, $data[$i]); | |
| 221 | - } | |
| 237 | + add_post_meta($exist_post_id[0]->meta_value, $key, $data); | |
| 222 | 238 | } else { |
| 223 | 239 | update_post_meta($exist_post_id[0]->meta_value, $key, $data); |
| 224 | 240 | } |
| 225 | 241 | } |
| 242 | + | |
| 226 | 243 | $updateData = $this->postFieldMapping($fieldData, $integrationDetails->post_map, $formFields, $fieldValues, $exist_post_id[0]->meta_value, $entryID); |
| 227 | 244 | $updateData['ID'] = $exist_post_id[0]->meta_value; |
| 228 | 245 | wp_update_post($updateData, true); |
| 229 | 246 | } |