PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 2.0
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v2.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 / WorkFlow / Actions.php

Actions.php in Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder 2.0, at includes/Core/WorkFlow/Actions.php

169 lines 6.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 ?><?php
4
5 namespace BitCode\BitForm\Core\WorkFlow;
6
7 use BitCode\BitForm\Core\Integration\IntegrationHandler;
8 use BitCode\BitForm\Core\Messages\SuccessMessageHandler;
9
10 final class Actions {
11 private static $_formID;
12
13 public function __construct($formId) {
14 static::$_formID = $formId;
15 }
16
17 public function setValue($actionDetail, $fieldData, $fields) {
18 if (!empty($actionDetail->val)) {
19 $actionValue = '';
20 $fieldType = $fields->{$fieldData[$actionDetail->field]['key']}->typ;
21 $evalMathExpr = preg_match('/month|date/', $fieldType);
22 $fields->{$fieldData[$actionDetail->field]['key']}->val = '';
23 $actionValue = Helper::replaceFieldWithValue($actionDetail->val, $fieldData, !(bool)$evalMathExpr);
24 $fields->{$fieldData[$actionDetail->field]['key']}->val = $actionValue;
25 $fieldData[$actionDetail->field]['value'] = $actionValue;
26 }
27 return [$fields, $fieldData];
28 }
29
30 public function show($fields, $fieldData, $actionDetail) {
31 $fields->{$fieldData[$actionDetail->field]['key']}->valid->hide = false;
32 if ('hidden' === $fields->{$fieldData[$actionDetail->field]['key']}->typ) {
33 $fields->{$fieldData[$actionDetail->field]['key']}->typ = 'text';
34 }
35 }
36
37 public function setFieldProperty($actions, $fieldData, $fields) {
38 if (empty($actions)) {
39 return $fields;
40 }
41 foreach ($actions as $actionDetail) {
42 if (!empty($actionDetail->action) && !empty($actionDetail->field)) {
43 switch ($actionDetail->action) {
44 case 'value':
45 $data = $this->setValue($actionDetail, $fieldData, $fields);
46 $fields = $data[0];
47 $fieldData = $data[1];
48 break;
49 case 'hide':
50 $fields->{$fieldData[$actionDetail->field]['key']}->valid->hide = true;
51 break;
52 case 'disable':
53 $fields->{$fieldData[$actionDetail->field]['key']}->valid->disabled = true;
54 break;
55 case 'show':
56 $this->show($fields, $fieldData, $actionDetail);
57 break;
58 case 'enable':
59 $fields->{$fieldData[$actionDetail->field]['key']}->valid->disabled = false;
60 break;
61 case 'readonly':
62 $fields->{$fieldData[$actionDetail->field]['key']}->valid->readonly = true;
63 break;
64 case 'required':
65 $fields->{$fieldData[$actionDetail->field]['key']}->valid->required = true;
66 break;
67 case 'limit':
68 $fields->{$fieldData[$actionDetail->field]['key']}->valid->limit = true;
69 break;
70 case 'min':
71 $fields->{$fieldData[$actionDetail->field]['key']}->valid->min = true;
72 break;
73 case 'max':
74 $fields->{$fieldData[$actionDetail->field]['key']}->valid->max = true;
75 break;
76 }
77 }
78 }
79 return [$fields, $fieldData];
80 }
81
82 public function setOnSubmitSetFieldValue($actions, $fieldValue) {
83 if (empty($actions)) {
84 return $fieldValue;
85 }
86 foreach ($actions as $actionDetail) {
87 if (!empty($actionDetail->action) && !empty($actionDetail->field)) {
88 switch ($actionDetail->action) {
89 case 'value':
90 if (!empty($actionDetail->val)) {
91 $fieldValue[$actionDetail->field] = '';
92 $actionValue = Helper::replaceFieldWithValue($actionDetail->val, $fieldValue);
93 $fieldValue[$actionDetail->field] = $actionValue;
94 }
95 break;
96 }
97 }
98 }
99 return $fieldValue;
100 }
101
102 public function setOnFormSuccess($data, $actions, $fieldValue) {
103 if (empty($actions)) {
104 return $data;
105 }
106
107 foreach ($actions as $successActionDetail) {
108 $id = $successActionDetail->details->id;
109 if (!empty($id)) {
110 switch ($successActionDetail->type) {
111 case 'successMsg':
112 $data['workFlowReturnable'] = $this->confirmationMessage($data['workFlowReturnable'], $id, $fieldValue);
113 break;
114 case 'redirectPage':
115 $data['workFlowReturnable'] = $this->redirectPage($data['workFlowReturnable'], $id, $fieldValue);
116 break;
117 case 'webHooks':
118 if (!$data['isWebHookQueued']) {
119 $data['isWebHookQueued'] = true;
120 }
121 $data['integrationsToExc'][] = $id;
122 break;
123 case 'mailNotify':
124 $data['mailData'][] = $successActionDetail->details;
125 break;
126 case 'dblOptin':
127 $data['dblOptin'][] = $successActionDetail->details;
128 break;
129 case 'integ':
130 $data['integrationsToExc'][] = $id;
131 break;
132 default:
133 break;
134 }
135 }
136 }
137 return $data;
138 }
139
140 public function confirmationMessage($workFlowReturnable, $successActionDetailId, $fieldValue) {
141 $id = json_decode($successActionDetailId)->id;
142 $messageHandler = new SuccessMessageHandler(static::$_formID);
143 $message = $messageHandler->getAMessage($id);
144 if (!is_wp_error($message) && !empty($message)) {
145 $workFlowReturnable['message'] = Helper::replaceFieldWithValue($message[0]->message_content, $fieldValue);
146 $workFlowReturnable['msg_id'] = $message[0]->id;
147 $msgConfig = json_decode($message[0]->message_config);
148 if ($msgConfig->autoHide) {
149 $workFlowReturnable['msg_duration'] = abs(floatval($msgConfig->duration) * 1000);
150 }
151 }
152 return $workFlowReturnable;
153 }
154
155 public function redirectPage($workFlowReturnable, $successActionDetailId, $fieldValue) {
156 $id = json_decode($successActionDetailId)->id;
157 $integrationHandler = new IntegrationHandler(static::$_formID);
158 $redirectPage = $integrationHandler->getAIntegration($id, 'form', 'redirectPage');
159 if (!is_wp_error($redirectPage) && !empty($redirectPage)) {
160 $url = json_decode($redirectPage[0]->integration_details)->url;
161 if (!empty($url)) {
162 $url = Helper::replaceFieldWithValue($url, $fieldValue);
163 }
164 $workFlowReturnable['redirectPage'] = empty($url) ? false : esc_url_raw($url);
165 }
166 return $workFlowReturnable;
167 }
168 }
169