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

244 lines 8.7 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) && isset($fields->{$fieldData[$actionDetail->field]['key']}) && !empty($fields->{$fieldData[$actionDetail->field]['key']})) {
78 $fk = $fieldData[$actionDetail->field]['key'];
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->{$fk}->valid->hide = true;
87 Helper::setNestedProperty($fields, "{$fk}->valid->hide", true);
88 break;
89 case 'disable':
90 $fields->{$fk}->valid->disabled = true;
91 break;
92 case 'show':
93 $this->show($fields, $fieldData, $actionDetail);
94 break;
95 case 'enable':
96 $fields->{$fk}->valid->disabled = false;
97 break;
98 case 'readonly':
99 $fields->{$fk}->valid->readonly = true;
100 break;
101 case 'writeable':
102 $fields->{$fk}->valid->readonly = false;
103 break;
104 case 'required':
105 $fields->{$fk}->valid->required = true;
106 break;
107 case 'limit':
108 $fields->{$fk}->valid->limit = true;
109 break;
110 case 'min':
111 $fields->{$fk}->valid->min = true;
112 break;
113 case 'max':
114 $fields->{$fk}->valid->max = true;
115 break;
116 case 'activelist':
117 $fields->{$fk}->config->activeList = $this->getActiveListIndex($actionDetail, $fieldData, $fields);
118 break;
119 case 'lbl':
120 case 'ct':
121 $fields->{$fk}->lbl = $this->getActionValue($actionDetail, $fieldData, $fields);
122 break;
123 case 'sub-titl':
124 $fields->{$fk}->subtitle = $this->getActionValue($actionDetail, $fieldData, $fields);
125 break;
126 case 'hlp-txt':
127 $fields->{$fk}->helperTxt = $this->getActionValue($actionDetail, $fieldData, $fields);
128 break;
129 case 'placeholder':
130 $fields->{$fk}->ph = $this->getActionValue($actionDetail, $fieldData, $fields);
131 break;
132 case 'title':
133 $fields->{$fk}->title = $this->getActionValue($actionDetail, $fieldData, $fields);
134 break;
135 }
136 }
137 }
138 return [$fields, $fieldData];
139 }
140
141 public function setOnSubmitSetFieldValue($actions, $fieldValue)
142 {
143 if (empty($actions)) {
144 return $fieldValue;
145 }
146 foreach ($actions as $actionDetail) {
147 if (!empty($actionDetail->action) && !empty($actionDetail->field)) {
148 switch ($actionDetail->action) {
149 case 'value':
150 if (!empty($actionDetail->val)) {
151 $fieldValue[$actionDetail->field] = '';
152 $actionValue = Helper::replaceFieldWithValue($actionDetail->val, $fieldValue);
153 $fieldValue[$actionDetail->field] = $actionValue;
154 }
155 break;
156 }
157 }
158 }
159 return $fieldValue;
160 }
161
162 public function setOnFormSuccess($data, $actions, $fieldValue, $entryID)
163 {
164 if (empty($actions)) {
165 return $data;
166 }
167
168 foreach ($actions as $successActionDetail) {
169 $id = $successActionDetail->details->id;
170 if (!empty($id)) {
171 switch ($successActionDetail->type) {
172 case 'successMsg':
173 $data['workFlowReturnable'] = $this->confirmationMessage($data['workFlowReturnable'], $id, $fieldValue, $entryID);
174 break;
175 case 'redirectPage':
176 $data['workFlowReturnable'] = $this->redirectPage($data['workFlowReturnable'], $id, $fieldValue);
177 break;
178 case 'webHooks':
179 if (!$data['isWebHookQueued']) {
180 $data['isWebHookQueued'] = true;
181 }
182 $data['integrationsToExc'][] = $id;
183 break;
184 case 'mailNotify':
185 $data['mailData'][] = $successActionDetail->details;
186 break;
187 case 'dblOptin':
188 $data['dblOptin'][] = $successActionDetail->details;
189 break;
190 case 'integ':
191 $data['integrationsToExc'][] = $id;
192 break;
193 default:
194 break;
195 }
196 }
197 }
198 return $data;
199 }
200
201 public function confirmationMessage($workFlowReturnable, $successActionDetailId, $fieldValue, $entryID = null)
202 {
203 $id = json_decode($successActionDetailId)->id;
204 $messageHandler = new SuccessMessageHandler(static::$_formID);
205 $message = $messageHandler->getAMessage($id);
206 if (!is_wp_error($message) && !empty($message)) {
207 $messageContent = $message[0]->message_content;
208
209 // replace pdf link and password
210 if (class_exists('\BitCode\BitFormPro\Admin\DownloadFile') && !empty($entryID)) {
211 $downloadFile = new \BitCode\BitFormPro\Admin\DownloadFile();
212 $messageContent = $downloadFile->replacePdfShortCodeToLink($messageContent, static::$_formID, $entryID);
213 $messageContent = $downloadFile->replaceShortCodeToPdfPassword($messageContent, static::$_formID, $entryID);
214 }
215
216 $workFlowReturnable['message'] = Helper::replaceFieldWithValue($messageContent, $fieldValue, true, static::$_formID);
217 if (!empty($workFlowReturnable['message']) && Utilities::isPro()) {
218 $workFlowReturnable['message'] = do_shortcode($workFlowReturnable['message']);
219 }
220 $workFlowReturnable['msg_id'] = $message[0]->id;
221 $msgConfig = json_decode($message[0]->message_config);
222 if ($msgConfig->autoHide) {
223 $workFlowReturnable['msg_duration'] = abs(floatval($msgConfig->duration) * 1000);
224 }
225 }
226 return $workFlowReturnable;
227 }
228
229 public function redirectPage($workFlowReturnable, $successActionDetailId, $fieldValue)
230 {
231 $id = json_decode($successActionDetailId)->id;
232 $integrationHandler = new IntegrationHandler(static::$_formID);
233 $redirectPage = $integrationHandler->getAIntegration($id, 'form', 'redirectPage');
234 if (!is_wp_error($redirectPage) && !empty($redirectPage)) {
235 $url = json_decode($redirectPage[0]->integration_details)->url;
236 if (!empty($url)) {
237 $url = Helper::replaceFieldWithValue($url, $fieldValue);
238 }
239 $workFlowReturnable['redirectPage'] = empty($url) ? false : esc_url_raw($url);
240 }
241 return $workFlowReturnable;
242 }
243 }
244