PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 2.17.6
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v2.17.6
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
← All changes | includes/API/Controller/EntryController.php +38 -657 1.32.17.6 View file →
@@ -1,675 +1,56 @@
1 1 <?php
2 2
3 3 namespace BitCode\BitForm\API\Controller;
4 4
5 +use BitCode\BitForm\Core\Database\FormModel;
5 6 use WP_Error;
6 7 use WP_REST_Controller;
7 -use BitCode\BitForm\Core\Util\IpTool;
8 -use BitCode\BitForm\Core\Util\FileHandler;
9 -use BitCode\BitForm\Core\Database\ApiModel;
10 -use BitCode\BitForm\Core\Database\FormModel;
11 -use BitCode\BitForm\Admin\Form\AdminFormManager;
12 -use BitCode\BitForm\Core\Database\FormEntryModel;
13 -use BitCode\BitForm\Core\Database\FormEntryLogModel;
14 -use BitCode\BitForm\Core\WorkFlow\WorkFlowRunHelper;
15 -use BitCode\BitForm\Core\Database\FormEntryMetaModel;
16 -use BitCode\BitForm\Core\Form\Validator\FormFieldValidator;
8 +use WP_REST_Request;
17 9
18 10 class EntryController extends WP_REST_Controller
19 11 {
20 - protected static $form;
21 - protected $formModel;
22 - protected $form_id;
23 - private $_has_upload;
24 - private $_field_label;
25 - private $_fields;
12 + protected static $form;
13 + protected $formModel;
14 + protected $form_id;
26 15
27 - function __construct()
28 - {
29 - $this->formModel = new FormModel();
30 - }
16 + public function __construct()
17 + {
18 + $this->formModel = new FormModel();
19 + }
31 20
32 - public function googleAuth()
33 - {
34 - $state = $_GET['state'];
35 - $code = urlencode($_GET['code']);
36 - // echo $code;
37 - if (wp_redirect($state . '&code=' . $code, 302)) {
38 - exit;
39 - }
21 + public function googleAuth()
22 + {
23 + $state = $_GET['state'];
24 + $code = urlencode($_GET['code']);
25 + // echo $code;
26 + if (wp_redirect($state . '&code=' . $code, 302)) {
27 + exit;
40 28 }
29 + }
41 30
42 - public function form_content($formID)
43 - {
44 - $form = $this->formModel->get(
45 - [
46 - "id",
47 - "form_content",
48 - "form_name",
49 - 'created_at',
50 - 'views',
51 - 'entries',
52 - 'status'
53 - ],
54 - array(
55 - 'id' => $formID
56 - )
57 - );
58 - return $form;
31 + public function oneDriveAuth()
32 + {
33 + $state = $_GET['state'];
34 + $code = urlencode($_GET['code']);
35 + // echo $code;
36 + if (wp_redirect($state . '&code=' . $code, 302)) {
37 + exit;
59 38 }
39 + }
60 40
61 - public function get_forms()
62 - {
63 - $db = new ApiModel();
64 - $forms = $db->getForm();
65 - if (count($forms) > 0) {
66 - return rest_ensure_response(['forms' => $forms, 'status' => 200, 'code' => 4000, 'success' => true]);
67 - } else {
68 - return rest_ensure_response(['forms' => [], 'status' => 200, 'code' => 3910, 'message' => 'No forms available.', 'success' => true]);
69 - }
41 + public function authRedirect(WP_REST_Request $request)
42 + {
43 + $state = $request->get_param('state');
44 + $parsed_url = wp_parse_url(get_site_url());
45 + $site_url = $parsed_url['scheme'] . '://' . $parsed_url['host'];
46 + $site_url .= empty($parsed_url['port']) ? null : ':' . $parsed_url['port'];
47 + if (false === strpos($state, $site_url)) {
48 + return new WP_Error('404');
70 49 }
71 -
72 - public function get_fields($request)
73 - {
74 - if (!empty($request['form_id'])) {
75 - $formManager = new AdminFormManager($request['form_id']);
76 - if (!$formManager->isExist()) {
77 - $error = ['message' => 'No Form with ID "<form_id>".', 'code' => '3200'];
78 - wp_send_json_error($error, 404);
79 - }
80 - $db = new ApiModel();
81 - $fields = $db->getField($request['form_id']);
82 - $workFlows = $db->getWorkFlow($request['form_id']);
83 - $fieldsKey = $formManager->getFieldsKey();
84 - $unset_types = ['razorpay', 'paypal', 'recaptcha'];
85 - if (!empty($fields)) {
86 - $filedsData = json_decode($fields[0]->form_content);
87 - foreach ($filedsData->fields as $key => $field) {
88 - if (in_array($field->typ, $unset_types)) {
89 - unset($filedsData->fields->$key);
90 - unset($fieldsKey[$key]);
91 - }
92 - }
93 - $data = ['fields' => $filedsData->fields, 'fieldkeys' => $fieldsKey, 'workflows' => $workFlows, 'workflow_key_name' => 'workflow'];
94 - return rest_ensure_response(['fields' => $data, 'status' => 200, 'code' => 4000, 'success' => true]);
95 - } else {
96 - return rest_ensure_response(['fields' => [], 'status' => 200, 'code' => 3920, 'message' => 'No fields available', 'success' => true]);
97 - }
98 - }
50 + $params = $request->get_params();
51 + unset($params['rest_route'], $params['state']);
52 + if (wp_redirect($state . '&' . http_build_query($params), 302)) {
53 + exit;
99 54 }
100 -
101 - private function fieldSanitize($form_fields, $data,$fieldKey)
102 - {
103 - $submitted_data = [];
104 - $message = [];
105 - foreach($_POST as $key => $da) {
106 - if(!in_array($key,$fieldKey)){
107 - $message[$key] = "No field named ".$key." found.";
108 - }
109 - }
110 - if ($message != []) {
111 - $data = ['message' => $message, 'code' => 3710];
112 - wp_send_json_success($data, 200);
113 - }
114 -
115 - foreach ($form_fields as $key => $field) {
116 - if (array_key_exists($field['key'], $data) && $field['type'] != 'file-up') {
117 - $submitted_data[$field['key']] = sanitize_text_field($data[$field['key']]);
118 - } else if (!array_key_exists($field['key'], $data) && $field['type'] != 'file-up') {
119 - $submitted_data[$field['key']] = '';
120 - }
121 - }
122 - return $submitted_data;
123 - }
124 -
125 - private function fieldTypeValidation($form_fields, $data)
126 - {
127 - $message = [];
128 - $string_types = array("text", "textarea", "radio", "color", "email","decision-box");
129 - foreach ($form_fields as $key => $field) {
130 - if (isset($data[$field['key']])) {
131 - if ($field['type'] == 'file-up' && gettype($data[$field['key']]) != 'array') {
132 - $message[$field['key']] = "Data type mismatch. Value for the " . $field['key'] . " field must be of type FILE";
133 - } else if (in_array($field['type'], $string_types) && gettype($data[$field['key']]) != 'string') {
134 - $message[$field['key']] = "Data type mismatch. Value for the " . $field['key'] . " field must be of type STRING";
135 - } else if ($field['type'] == 'check' && gettype($data[$field['key']]) != 'array') {
136 - $message[$field['key']] = "Data type mismatch. Value for the " . $field['key'] . " field must be of type Array";
137 - }
138 - }
139 - }
140 - if ($message != []) {
141 - $data = ['message' => $message, 'code' => 3120];
142 - wp_send_json_success($data, 200);
143 - }
144 - return $message;
145 - }
146 - public function entry_store($request)
147 - {
148 - $formID = $request['form_id'];
149 - $formManager = new AdminFormManager($request['form_id']);
150 - if (!$formManager->isExist()) {
151 - $data = ['message' => 'No Form with ID "<form_id>"', 'code' => '3200'];
152 - wp_send_json_error($data, 400);
153 - }
154 - $formEntryModel = new FormEntryModel();
155 - $ipTool = new IpTool();
156 - $user_details = $ipTool->getUserDetail();
157 - $entryMeta = new FormEntryMetaModel();
158 - $form_fields = $this->getFields($formID);
159 - $fieldsKey = $formManager->getFieldsKey();
160 - $this->fieldTypeValidation($form_fields, $_POST);
161 - $submitted_data = $this->fieldSanitize($form_fields, $_POST,$fieldsKey );
162 - $formFieldValidator = new FormFieldValidator($form_fields, $submitted_data, $_FILES);
163 - $validateField = $formFieldValidator->validate('create', $formID);
164 - if (!$validateField) {
165 - $errorMessage = count($formFieldValidator->getMessage()) > 0 ?
166 - $formFieldValidator->getMessage() : __("Internal error occured!!!", 'bitform');
167 - $error = ['errors' => $errorMessage, 'code' => 3070];
168 - wp_send_json_error($error, 422);
169 - }
170 - $entry_id = $formEntryModel->insert(
171 - array(
172 - 'form_id' => $formID,
173 - 'user_id' => $user_details['id'],
174 - 'user_ip' => $user_details['ip'],
175 - 'user_device' => $user_details['device'],
176 - 'referer' => $user_details['page'],
177 - 'status' => 0,
178 - 'created_at' => $user_details['time']
179 - )
180 - );
181 - $submitted_fields = $this->getFormContentWithValue($submitted_data, $formID)->fields;
182 - $formManageer = new AdminFormManager($formID);
183 - $file_fields = $formManageer->getUploadFields($formID);
184 - $fileHandler = new FileHandler;
185 - $workFlowRunHelper = new WorkFlowRunHelper($formID);
186 - if (isset($_POST['workflow'])) {
187 - $workFlowIds = is_array($_POST['workflow']) ? implode(",", $_POST['workflow']) : $_POST['workflow'];
188 - $workFlowreturnedOnSubmit = $workFlowRunHelper->executeOnSubmit(
189 - 'create',
190 - $submitted_fields,
191 - $submitted_data,
192 - $entry_id,
193 - null,
194 - $workFlowIds
195 - );
196 - unset($workFlowreturnedOnSubmit['data']);
197 - }
198 - if (!empty($workFlowreturnedOnSubmit['fields'])) {
199 - $submitted_data = $workFlowreturnedOnSubmit['fields'];
200 - unset($workFlowreturnedOnSubmit['fields']);
201 - }
202 - unset($submitted_data['workflow']);
203 - foreach ($_FILES as $file_name => $file_details) {
204 - if ($file_fields && in_array($file_name, $file_fields)) {
205 - $filePath = $fileHandler->moveUploadedFiles($file_details, $formID, $entry_id);
206 - if (!empty($filePath)) {
207 - $submitted_data[$file_name] = $filePath;
208 - }
209 - }
210 - }
211 - foreach ($submitted_data as $key => $value) {
212 - $entryMeta->insert(
213 - array(
214 - 'bitforms_form_entry_id' => $entry_id,
215 - 'meta_key' => $key,
216 - 'meta_value' => is_string($submitted_data[$key]) ?
217 - $submitted_data[$key] :
218 - wp_json_encode($submitted_data[$key])
219 - )
220 - );
221 - }
222 - return rest_ensure_response(['status' => 200, 'code' => 4000, 'message' => 'Data Added Successfully!!', 'success' => true]);
223 - }
224 -
225 - public function getFormContentWithValue($defaultValues, $formID)
226 - {
227 - $form_content = \json_decode($this->form_content($formID)[0]->form_content);
228 - if (!is_array($defaultValues)) {
229 - return $form_content;
230 - }
231 - foreach ($form_content->fields as $fieldKey => $fieldDetails) {
232 - // $field_name = empty($fieldDetails->lbl) ? null : \preg_replace('/[\`\~\!\@\#\$\'\.\s\?\+\-\*\&\|\/\\!]/', '_', $fieldDetails->lbl);
233 - if ((isset($fieldDetails->mul) || $fieldDetails->typ === 'check') && isset($defaultValues[$fieldKey])) {
234 - if (is_array($defaultValues[$fieldKey])) {
235 - $fieldDetails->val =
236 - wp_json_encode(
237 - array_map('sanitize_text_field', $defaultValues[$fieldKey])
238 - );
239 - } else {
240 - $fieldDetails->val = sanitize_text_field($defaultValues[$fieldKey]);
241 - }
242 - } elseif (isset($defaultValues[$fieldKey])) {
243 - $fieldDetails->val = is_string($defaultValues[$fieldKey]) ?
244 - sanitize_text_field($defaultValues[$fieldKey]) :
245 - sanitize_text_field($defaultValues[$fieldKey][count($defaultValues[$fieldKey]) - 1]);
246 - }
247 - }
248 - return $form_content;
249 - }
250 -
251 - public function getFields($formID)
252 - {
253 - if (!is_null($this->_fields)) {
254 - return $this->_fields;
255 - }
256 - $form_content = \json_decode($this->form_content($formID)[0]->form_content);
257 - $layout = $form_content->layout;
258 - $fields = $form_content->fields;
259 - $field_details = array();
260 - foreach ($fields as $key => $field) {
261 - if ($field->typ === 'recaptcha') {
262 - continue;
263 - }
264 - $field_type = $field->typ;
265 - $field_details[$key]['label'] = empty($field->lbl) ? null : $field->lbl;
266 - $field_details[$key]['type'] = $field_type;
267 - $field_details[$key]['key'] = $key;
268 - if (isset($field->mul)) {
269 - $field_details[$key]['mul'] = $field->mul;
270 - }
271 - if ($field_type === 'file-up' && isset($field->exts)) {
272 - $field_details[$key]['valid']['type'] = $field->exts;
273 - }
274 - if (isset($field->valid) && !is_null($field->valid)) {
275 - if (isset($field->valid->req)) {
276 - $field_details[$key]['valid']['req'] = $field->valid->req;
277 - }
278 - if (isset($field->valid->reqMsg)) {
279 - $field_details[$key]['valid']['reqMsg'] = $field->valid->reqMsg;
280 - }
281 - if (isset($field->valid->typMsg)) {
282 - $field_details[$key]['valid']['typMsg'] = $field->valid->typMsg;
283 - }
284 - }
285 - }
286 - $unset_types = ['razorpay', 'paypal', 'recaptcha'];
287 -
288 - foreach ($field_details as $key => $field) {
289 - if (in_array($field['type'], $unset_types)) {
290 - unset($field_details[$key]);
291 - }
292 - }
293 - $this->_fields = $field_details;
294 - return $field_details;
295 - }
296 -
297 - public function entry_update($request)
298 - {
299 - $formEntryModel = new FormEntryModel();
300 - $entryID = $request['entry_id'];
301 - if($_SERVER['REQUEST_METHOD']=='PUT'){
302 - $requestData = $request->get_params();
303 - unset($requestData['entry_id']);
304 - }else{
305 - $requestData = $_POST;
306 - }
307 - $apiModel = new ApiModel();
308 - $forms = $apiModel->getFormId($entryID);
309 - if ($forms === []) {
310 - $data = ['message' => 'No record with ID "<entry_id>".', 'code' => '3100'];
311 - wp_send_json_error($data, 404);
312 - }
313 - $formID = $forms[0]->form_id;
314 - $formEntryLogModel = new FormEntryLogModel();
315 - $apiModel = new ApiModel();
316 - $formOldData = $apiModel->get_form_value($entryID);
317 - $key = null;
318 - $entryMeta = new FormEntryMetaModel();
319 - $ipTool = new IpTool();
320 - $user_details = $ipTool->getUserDetail();
321 - $form_fields = $this->getFields($formID);
322 - $field_map = [];
323 - foreach ($formOldData as $index => $data) {
324 - foreach ($form_fields as $field_key => $field) {
325 - if ($data->meta_key == $field['key']) {
326 - $field_map[$field_key] = $field['key'];
327 - }
328 - }
329 - }
330 - $this->fieldTypeValidation($form_fields, $requestData);
331 - $formManageer = new AdminFormManager($formID);
332 - $fieldsKey = $formManageer->getFieldsKey();
333 - $updatedValue = $this->fieldSanitize($form_fields, $requestData,$fieldsKey);
334 - $formFieldValidator = new FormFieldValidator($form_fields, $requestData, $_FILES);
335 - $validateField = $formFieldValidator->validate('edit', $formID);
336 - if (!$validateField) {
337 - $errorMessage = count($formFieldValidator->getMessage()) > 0 ?
338 - $formFieldValidator->getMessage() : __("Internal error occured !!!", 'bitform');
339 - $error = ['errors' => $errorMessage, 'code' => 3070];
340 - wp_send_json_error($error, 422);
341 - }
342 - $formEntry = $formEntryModel->update(
343 - array(
344 - "user_id" => $user_details['id'],
345 - "user_ip" => $user_details['ip'],
346 - "user_device" => $user_details['device'],
347 - "status" => 0,
348 - "updated_at" => $user_details['time']
349 - ),
350 - array(
351 - 'form_id' => $formID,
352 - 'id' => $entryID
353 - )
354 - );
355 - $log_id = null;
356 - if ($formEntry) {
357 - $log_id = $formEntryLogModel->form_log_insert(
358 - array(
359 - "user_id" => $user_details['id'],
360 - "action_type" => "update",
361 - "log_type" => "entry",
362 - "ip" => $user_details['ip'],
363 - "form_entry_id" => $entryID,
364 - "form_id" => $formID,
365 - "created_at" => $user_details['time'],
366 - )
367 - );
368 - }
369 - if (is_wp_error($formEntry) || !$formEntry) {
370 - $data = ['message' => 'No record with ID "<entry_id>', 'code' => '3100'];
371 - wp_send_json_error($data, 404);
372 - }
373 - $file_fields = $this->getUploadFields($formID);
374 - if (count($file_fields) > 0) {
375 - $fileHandler = new FileHandler();
376 - foreach ($file_fields as $file_name) {
377 - if (!empty($_FILES[$file_name]['name'])) {
378 - $meta_value = $fileHandler->moveUploadedFiles($_FILES[$file_name], $formID, $entryID);
379 - if (!empty($meta_value)) {
380 - $updatedValue[$file_name] = wp_json_encode($meta_value);
381 - }
382 - }
383 - }
384 - }
385 - unset($updatedValue['_ajax_nonce']);
386 - unset($_REQUEST['g-recaptcha-response']);
387 - $workFlowRunHelper = new WorkFlowRunHelper($formID);
388 - if (isset($requestData['workflow'])) {
389 - $workFlowIds = is_array($requestData['workflow']) ? implode(",", $requestData['workflow']) : $requestData['workflow'];
390 - $workFlowreturnedOnSubmit = $workFlowRunHelper->executeOnSubmit(
391 - 'edit',
392 - $this->getFormContentWithValue($updatedValue, $formID)->fields,
393 - $updatedValue,
394 - $entryID,
395 - $log_id,
396 - $workFlowIds
397 - );
398 - if (!empty($workFlowreturnedOnSubmit['fields'])) {
399 - $updatedValue = $workFlowreturnedOnSubmit['fields'];
400 - unset($workFlowreturnedOnSubmit['fields']);
401 - }
402 - }
403 - $formEntryMetaUpdateStatus = $entryMeta->update(
404 - $updatedValue,
405 - array(
406 - 'bitforms_form_entry_id' => $entryID
407 - )
408 - );
409 - if (is_wp_error($formEntryMetaUpdateStatus) || isset($newFileInsertStatus) && is_wp_error($newFileInsertStatus)) {
410 - return $formEntryMetaUpdateStatus;
411 - }
412 - $updatedValue = array_merge($formEntryMetaUpdateStatus, array('entry_id' => $entryID));
413 - if (empty($workFlowreturnedOnSubmit['message'])) {
414 - $workFlowreturnedOnSubmit['message'] = __('Entry Updated Successfully', 'bitform');
415 - }
416 - $workFlowreturnedOnSubmit['updatedData'] = $updatedValue;
417 - $counter = 0;
418 - for ($i = 0; $i < count($formOldData); $i++) {
419 - if (array_key_exists($formOldData[$i]->meta_key . '_old', $updatedValue)) {
420 - unset($updatedValue[$formOldData[$i]->meta_key . '_old']);
421 - }
422 - if (in_array($formOldData[$i]->meta_key, $file_fields)) {
423 - if (
424 - empty($_FILES[$formOldData[$i]->meta_key]['name'])
425 - || (is_array($_FILES[$formOldData[$i]->meta_key]['name'])
426 - && count($_FILES[$formOldData[$i]->meta_key]['name']) === 1
427 - && empty($_FILES[$formOldData[$i]->meta_key]['name'][0]))
428 - ) {
429 - unset($updatedValue[$formOldData[$i]->meta_key]);
430 - continue;
431 - }
432 - if (is_array($_FILES[$formOldData[$i]->meta_key]['name']) && !in_array($_FILES[$formOldData[$i]->meta_key]['name'], json_decode($formOldData[$i]->meta_value))) {
433 - $key[$i] = '${' . $formOldData[$i]->meta_key . '} file was Updated To ' . json_encode($_FILES[$formOldData[$i]->meta_key]['name']);
434 - } elseif (!is_array($_FILES[$formOldData[$i]->meta_key]['name']) && !in_array($_FILES[$formOldData[$i]->meta_key]['name'], json_decode($formOldData[$i]->meta_value))) {
435 - $key[$i] = '${' . $formOldData[$i]->meta_key . '} file was Updated To ' . $_FILES[$formOldData[$i]->meta_key]['name'];
436 - }
437 - unset($updatedValue[$formOldData[$i]->meta_key]);
438 - } else {
439 - if(isset($updatedValue[$formOldData[$i]->meta_key])){
440 - if (is_array($updatedValue[$formOldData[$i]->meta_key])) {
441 - if (json_decode($formOldData[$i]->meta_value) !== $updatedValue[$formOldData[$i]->meta_key]) {
442 - $key[$i] = '${' . $formOldData[$i]->meta_key . '} was Updated From ' . implode(',', json_decode($formOldData[$i]->meta_value)) . ' To ' . implode(",", $updatedValue[$formOldData[$i]->meta_key]);
443 - }
444 - } elseif (is_string($updatedValue[$formOldData[$i]->meta_key]) && !empty($updatedValue[$formOldData[$i]->meta_key])) {
445 - if ($formOldData[$i]->meta_value !== $updatedValue[$formOldData[$i]->meta_key]) {
446 - $key[$i] = '${' . $formOldData[$i]->meta_key . '} was Updated' . ($formOldData[$i]->meta_value ? ' From ' . $formOldData[$i]->meta_value : '') . ' To ' . $updatedValue[$formOldData[$i]->meta_key];
447 - }
448 - }
449 - }
450 -
451 - }
452 - $counter++;
453 - }
454 - $newField = array_keys(array_diff_key($formEntryMetaUpdateStatus, $field_map));
455 - for ($i = 0; $i < count($newField); $i++) {
456 - if (is_array($updatedValue[$newField[$i]])) {
457 - if (!empty($updatedValue[$newField[$i]])) {
458 - $key[$counter + $i] = '${' . $newField[$i] . '} Updated To ' . implode(",", $updatedValue[$newField[$i]]);
459 - }
460 - } elseif (is_string($newField[$i])) {
461 - if (!empty($updatedValue[$newField[$i]])) {
462 - $key[$counter + $i] = '${' . $newField[$i] . '} Updated To ' . $updatedValue[$newField[$i]];
463 - }
464 - }
465 - }
466 - if ($key !== null) {
467 - $logUpdate = implode("b::f", (array) $key);
468 - $apiModel->logUpdate($logUpdate, $log_id);
469 - }
470 - return rest_ensure_response(['status' => 200, 'code' => 4000, 'message' => 'Data Updated Successfully', 'success' => true]);
471 - }
472 -
473 - public function getUploadFields($formID)
474 - {
475 - if (!is_null($this->_has_upload)) {
476 - return $this->_has_upload;
477 - }
478 - $upload_fields = array();
479 - $form_field_details = $this->getFields($formID);
480 - foreach ($form_field_details as $field_name => $__field_detail) {
481 - if (isset($__field_detail['type']) && $__field_detail['type'] === 'file-up') {
482 - $upload_fields[] = $field_name;
483 - }
484 - }
485 - $this->_has_upload = $upload_fields;
486 - return $upload_fields;
487 - }
488 -
489 - public function entry_delete($request)
490 - {
491 - $entries['entry_id'] = $request['entry_id'];
492 - $apiModel = new ApiModel();
493 - $forms = $apiModel->getFormId($entries['entry_id']);
494 - if ($forms === []) {
495 - $data = ['message' => 'No record with ID "<entry_id>".', 'code' => '3100'];
496 - wp_send_json_error($data, 404);
497 - }
498 - $formID = $forms[0]->form_id;
499 - $formManager = new AdminFormManager($formID);
500 - if (!$formManager->isExist()) {
501 - $data = ['message' => 'No form found. Please check and try again', 'code' => '3130'];
502 - wp_send_json_error($data, 404);
503 - }
504 - $workFlowRunHelper = new WorkFlowRunHelper($formID);
505 - $workFlowreturnedOnDelete = $workFlowRunHelper->executeOnDelete(
506 - $formManager,
507 - $formID,
508 - $entries
509 - );
510 - if (isset($workFlowreturnedOnDelete['entries'])) {
511 - if (count($workFlowreturnedOnDelete['entries']) === 0) {
512 - return ["message" => __('Entry Deletetion prevented by workflow', 'bitform')];
513 - } elseif (count($workFlowreturnedOnDelete['entries']) === count($entries)) {
514 - $message = __('Entry Deleted successfully', 'bitform');
515 - } else {
516 - $result['prevented'] = array_diff($entries, $workFlowreturnedOnDelete['entries']);
517 - $entries = $workFlowreturnedOnDelete['entries'];
518 - $message = __('Entry Deleted successfully, Some prevented by workflow', 'bitform');
519 - }
520 - } else {
521 - $message = __('Entry Deleted successfully', 'bitform');
522 - }
523 - global $wpdb;
524 - $prefix = $wpdb->prefix;
525 - $formEntryModel = new FormEntryModel();
526 - $delete_status = $formEntryModel->bulkDelete(
527 - array(
528 - "`{$prefix}bitforms_form_entries`.`id`" => $entries,
529 - "`{$prefix}bitforms_form_entries`.`form_id`" => $formID,
530 - )
531 - );
532 - if (file_exists(BITFORMS_UPLOAD_DIR . DIRECTORY_SEPARATOR . $formID)) {
533 - $fileHandler = new FileHandler();
534 - foreach ($entries as $enrtyKey => $entryID) {
535 - $fileEntries = BITFORMS_UPLOAD_DIR . DIRECTORY_SEPARATOR . $formID . DIRECTORY_SEPARATOR . $entryID;
536 - if (file_exists($fileEntries)) {
537 - $fileHandler->rmrf($fileEntries);
538 - }
539 - }
540 - }
541 - $count = $formEntryModel->count(
542 - array(
543 - 'form_id' => $formID,
544 - )
545 - );
546 - $formManager->resetSubmissionCount(intval($count[0]->count));
547 - if (is_wp_error($delete_status)) {
548 - return new WP_Error('entry_not_exists', __("Form entry deletion failed", "bitform"));
549 - }
550 - $result['message'] = $message;
551 - return rest_ensure_response(['status' => 200, 'code' => 4000, 'message' => $message, 'success' => true]);
552 - }
553 - public function entry_view($request)
554 - {
555 - $entryID = $request['entry_id'];
556 - $apiModel = new ApiModel();
557 - $forms = $apiModel->getFormId($entryID);
558 - if ($forms === []) {
559 - $data = ['message' => 'No record with ID "<entry_id>".', 'code' => '3100'];
560 - wp_send_json_error($data, 404);
561 - }
562 - $formID = $forms[0]->form_id;
563 - $formManager = new AdminFormManager($formID);
564 - if (!$formManager->isExist()) {
565 - $data = ['message' => 'No form was found. Please check and try again', 'code' => 3130];
566 - wp_send_json_error($data, 404);
567 - }
568 - $formEntryModel = new FormEntryModel();
569 - $entryMeta = new FormEntryMetaModel();
570 -
571 - $formEntry = $formEntryModel->get(
572 - "*",
573 - array(
574 - 'form_id' => $formID,
575 - 'id' => $entryID,
576 - )
577 - );
578 - if (!$formEntry) {
579 - $data = ['message' => 'No Entry with ID"', 'code' => 3100];
580 - wp_send_json_error($data, 404);
581 - }
582 - $formEntryMeta = $entryMeta->get(
583 - array(
584 - 'meta_key',
585 - 'meta_value',
586 - ),
587 - array(
588 - 'bitforms_form_entry_id' => $entryID,
589 - )
590 - );
591 - $entries = array();
592 - foreach ($formEntryMeta as $key => $value) {
593 - $entries[$value->meta_key] = $value->meta_value;
594 - }
595 - $formContent = $formManager->getFormContent();
596 - $fieldsKey = $formManager->getFieldsKey();
597 - $form_fields = $formContent->fields;
598 - foreach ($form_fields as $key => $value) {
599 - // $field_name = preg_replace('/[\`\~\!\@\#\$\'\.\s\?\+\-\*\&\|\/\\!]/', '_', $value->lbl);
600 - if (isset($entries[$key])) {
601 - $form_fields->{$key}->val = $entries[$key];
602 - $form_fields->{$key}->name = $key;
603 - }
604 - }
605 - $workFlowRunHelper = new WorkFlowRunHelper($formID);
606 - $workFlowreturnedOnLoad = $workFlowRunHelper->executeOnLoad(
607 - 'edit',
608 - $form_fields
609 - );
610 - $workFlowreturnedOnUserInput = $workFlowRunHelper->executeOnUserInput(
611 - 'edit',
612 - $form_fields
613 - );
614 - // var_dump($workFlowreturned);
615 - if (!empty($workFlowreturnedOnLoad['fields'])) {
616 - $form_fields = $workFlowreturnedOnLoad['fields'];
617 - }
618 - $formData = array(
619 - 'fields' => $form_fields,
620 - 'fieldsKey' => $fieldsKey,
621 - );
622 - return rest_ensure_response(['data' => $formData, 'status' => 200, 'success' => true]);
623 - }
624 - public function getEntryResponse($request)
625 - {
626 - $formId = wp_unslash($request['id']);
627 - $limit = !empty($request['per_page']) ? wp_unslash($request['per_page']) : 200;
628 - if ($limit > 200) {
629 - $data = ['message' => 'A maximum of 200 records can be fetched per request', 'code' => 3970];
630 - wp_send_json_success($data, 200);
631 - }
632 - $offset = !empty($request['page']) ? wp_unslash($request['page']) : null;
633 - $formManager = new AdminFormManager($formId);
634 - if (!$formManager->isExist()) {
635 - $data = ['message' => 'No form was found. Please check and try again', 'code' => 3130];
636 - wp_send_json_error($data, 404);
637 - }
638 - $formEntry = new FormEntryModel();
639 - $entries = $formEntry->get(
640 - 'id',
641 - array(
642 - 'form_id' => $formId,
643 - ),
644 - null,
645 - null,
646 - 'created_at',
647 - 'DESC'
648 - );
649 - if (is_wp_error($entries)) {
650 - if ($entries->get_code() === 'result_empty') {
651 - return rest_ensure_response(['data' => [], 'status' => 200, 'message' => 'form is empty', 'success' => true]);
652 - }
653 - return $entries;
654 - }
655 - $formFields = $formManager->getFieldLabel();
656 - $entryMeta = new FormEntryMetaModel();
657 - $formEntries = $entryMeta->getEntryMeta($formFields, $entries, $limit, $offset);
658 - foreach ($formFields as $field) {
659 - foreach ($formEntries['entries'] as $entry) {
660 - if (isset($field['key'], $entry) && $field['type'] == 'file-up') {
661 - $key = $field['key'];
662 - if (is_array(json_decode($entry->$key))) {
663 - $fileData = array();
664 - foreach (json_decode($entry->$key) as $file) {
665 - $path = "bitforms/bitforms-file/?formID=$formId&entryID=$entry->entry_id&fileID=$file";
666 - $fileData[] = site_url($path, null);
667 - }
668 - $entry->$key = wp_json_encode($fileData, JSON_UNESCAPED_SLASHES);
669 - }
670 - }
671 - }
672 - }
673 - return rest_ensure_response(['data' => $formEntries, 'status' => 200, 'success' => true]);
674 - }
55 + }
675 56 }