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

233 lines 8.5 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 use BitCode\BitForm\Core\Util\Utilities;
10
11 final class Actions
12 {
13 private static $_formID;
14
15 public function __construct($formId)
16 {
17 static::$_formID = $formId;
18 }
19
20 public function setValue($actionDetail, $fieldData, $fields)
21 {
22 if (!empty($actionDetail->val)) {
23 $actionValue = '';
24 $fieldType = $fields->{$fieldData[$actionDetail->field]['key']}->typ;
25 $evalMathExpr = preg_match('/month|date/', $fieldType);
26 $fields->{$fieldData[$actionDetail->field]['key']}->val = '';
27 $actionValue = Helper::replaceFieldWithValue($actionDetail->val, $fieldData, !(bool)$evalMathExpr);
28 $fields->{$fieldData[$actionDetail->field]['key']}->val = $actionValue;
29 $fieldData[$actionDetail->field]['value'] = $actionValue;
30 }
31 return [$fields, $fieldData];
32 }
33
34 public function getActionValue($actionDetail, $fieldData, $fields)
35 {
36 $actionValue = '';
37 if (!empty($actionDetail->val)) {
38 $fieldType = $fields->{$fieldData[$actionDetail->field]['key']}->typ;
39 $evalMathExpr = preg_match('/month|date/', $fieldType);
40 $fields->{$fieldData[$actionDetail->field]['key']}->val = '';
41 $actionValue = Helper::replaceFieldWithValue($actionDetail->val, $fieldData, !(bool)$evalMathExpr);
42 }
43 return $actionValue;
44 }
45
46 public function getActiveListIndex($actionDetail, $fieldData, $fields)
47 {
48 $activeList = $this->getActionValue($actionDetail, $fieldData, $fields);
49 $optionsList = $fields->{$fieldData[$actionDetail->field]['key']}->optionsList;
50 $activeListIndex = 0;
51 foreach ($optionsList as $key => $optionObj) {
52 $valueArr = (array) $optionObj;
53 $listName = array_keys($valueArr)[0];
54 if ($listName === $activeList) {
55 $activeListIndex = $key;
56 break;
57 }
58 }
59
60 return $activeListIndex;
61 }
62
63 public function show($fields, $fieldData, $actionDetail)
64 {
65 $fields->{$fieldData[$actionDetail->field]['key']}->valid->hide = false;
66 if ('hidden' === $fields->{$fieldData[$actionDetail->field]['key']}->typ) {
67 $fields->{$fieldData[$actionDetail->field]['key']}->typ = 'text';
68 }
69 }
70
71 public function setFieldProperty($actions, $fieldData, $fields)
72 {
73 if (empty($actions)) {
74 return [$fields, $fieldData];
75 }
76 foreach ($actions as $actionDetail) {
77 if (!empty($actionDetail->action) && !empty($actionDetail->field) && !empty($fields->{$fieldData[$actionDetail->field]['key']})) {
78 switch ($actionDetail->action) {
79 case 'value':
80 $data = $this->setValue($actionDetail, $fieldData, $fields);
81 $fields = $data[0];
82 $fieldData = $data[1];
83 break;
84 case 'hide':
85 $fields->{$fieldData[$actionDetail->field]['key']}->valid->hide = true;
86 break;
87 case 'disable':
88 $fields->{$fieldData[$actionDetail->field]['key']}->valid->disabled = true;
89 break;
90 case 'show':
91 $this->show($fields, $fieldData, $actionDetail);
92 break;
93 case 'enable':
94 $fields->{$fieldData[$actionDetail->field]['key']}->valid->disabled = false;
95 break;
96 case 'readonly':
97 $fields->{$fieldData[$actionDetail->field]['key']}->valid->readonly = true;
98 break;
99 case 'writeable':
100 $fields->{$fieldData[$actionDetail->field]['key']}->valid->readonly = false;
101 break;
102 case 'required':
103 $fields->{$fieldData[$actionDetail->field]['key']}->valid->required = true;
104 break;
105 case 'limit':
106 $fields->{$fieldData[$actionDetail->field]['key']}->valid->limit = true;
107 break;
108 case 'min':
109 $fields->{$fieldData[$actionDetail->field]['key']}->valid->min = true;
110 break;
111 case 'max':
112 $fields->{$fieldData[$actionDetail->field]['key']}->valid->max = true;
113 break;
114 case 'activelist':
115 $fields->{$fieldData[$actionDetail->field]['key']}->config->activeList = $this->getActiveListIndex($actionDetail, $fieldData, $fields);
116 break;
117 case 'lbl':
118 case 'ct':
119 $fields->{$fieldData[$actionDetail->field]['key']}->lbl = $this->getActionValue($actionDetail, $fieldData, $fields);
120 break;
121 case 'sub-titl':
122 $fields->{$fieldData[$actionDetail->field]['key']}->subtitle = $this->getActionValue($actionDetail, $fieldData, $fields);
123 break;
124 case 'hlp-txt':
125 $fields->{$fieldData[$actionDetail->field]['key']}->helperTxt = $this->getActionValue($actionDetail, $fieldData, $fields);
126 break;
127 case 'placeholder':
128 $fields->{$fieldData[$actionDetail->field]['key']}->ph = $this->getActionValue($actionDetail, $fieldData, $fields);
129 break;
130 case 'title':
131 $fields->{$fieldData[$actionDetail->field]['key']}->title = $this->getActionValue($actionDetail, $fieldData, $fields);
132 break;
133 }
134 }
135 }
136 return [$fields, $fieldData];
137 }
138
139 public function setOnSubmitSetFieldValue($actions, $fieldValue)
140 {
141 if (empty($actions)) {
142 return $fieldValue;
143 }
144 foreach ($actions as $actionDetail) {
145 if (!empty($actionDetail->action) && !empty($actionDetail->field)) {
146 switch ($actionDetail->action) {
147 case 'value':
148 if (!empty($actionDetail->val)) {
149 $fieldValue[$actionDetail->field] = '';
150 $actionValue = Helper::replaceFieldWithValue($actionDetail->val, $fieldValue);
151 $fieldValue[$actionDetail->field] = $actionValue;
152 }
153 break;
154 }
155 }
156 }
157 return $fieldValue;
158 }
159
160 public function setOnFormSuccess($data, $actions, $fieldValue)
161 {
162 if (empty($actions)) {
163 return $data;
164 }
165
166 foreach ($actions as $successActionDetail) {
167 $id = $successActionDetail->details->id;
168 if (!empty($id)) {
169 switch ($successActionDetail->type) {
170 case 'successMsg':
171 $data['workFlowReturnable'] = $this->confirmationMessage($data['workFlowReturnable'], $id, $fieldValue);
172 break;
173 case 'redirectPage':
174 $data['workFlowReturnable'] = $this->redirectPage($data['workFlowReturnable'], $id, $fieldValue);
175 break;
176 case 'webHooks':
177 if (!$data['isWebHookQueued']) {
178 $data['isWebHookQueued'] = true;
179 }
180 $data['integrationsToExc'][] = $id;
181 break;
182 case 'mailNotify':
183 $data['mailData'][] = $successActionDetail->details;
184 break;
185 case 'dblOptin':
186 $data['dblOptin'][] = $successActionDetail->details;
187 break;
188 case 'integ':
189 $data['integrationsToExc'][] = $id;
190 break;
191 default:
192 break;
193 }
194 }
195 }
196 return $data;
197 }
198
199 public function confirmationMessage($workFlowReturnable, $successActionDetailId, $fieldValue)
200 {
201 $id = json_decode($successActionDetailId)->id;
202 $messageHandler = new SuccessMessageHandler(static::$_formID);
203 $message = $messageHandler->getAMessage($id);
204 if (!is_wp_error($message) && !empty($message)) {
205 $workFlowReturnable['message'] = Helper::replaceFieldWithValue($message[0]->message_content, $fieldValue);
206 if (!empty($workFlowReturnable['message']) && Utilities::isPro()) {
207 $workFlowReturnable['message'] = do_shortcode($workFlowReturnable['message']);
208 }
209 $workFlowReturnable['msg_id'] = $message[0]->id;
210 $msgConfig = json_decode($message[0]->message_config);
211 if ($msgConfig->autoHide) {
212 $workFlowReturnable['msg_duration'] = abs(floatval($msgConfig->duration) * 1000);
213 }
214 }
215 return $workFlowReturnable;
216 }
217
218 public function redirectPage($workFlowReturnable, $successActionDetailId, $fieldValue)
219 {
220 $id = json_decode($successActionDetailId)->id;
221 $integrationHandler = new IntegrationHandler(static::$_formID);
222 $redirectPage = $integrationHandler->getAIntegration($id, 'form', 'redirectPage');
223 if (!is_wp_error($redirectPage) && !empty($redirectPage)) {
224 $url = json_decode($redirectPage[0]->integration_details)->url;
225 if (!empty($url)) {
226 $url = Helper::replaceFieldWithValue($url, $fieldValue);
227 }
228 $workFlowReturnable['redirectPage'] = empty($url) ? false : esc_url_raw($url);
229 }
230 return $workFlowReturnable;
231 }
232 }
233