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

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