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 / WorkFlowHandler.php

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

399 lines 15.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace BitCode\BitForm\Core\WorkFlow;
4
5 use BitCode\BitForm\Core\Database\WorkFlowModel;
6
7 final class WorkFlowHandler
8 {
9 private static $_formID;
10 private static $_workFlowModel;
11 private $_user_details;
12
13 public function __construct($formID, array $user_details = null)
14 {
15 static::$_formID = $formID;
16 static::$_workFlowModel = new WorkFlowModel();
17 $this->_user_details = $user_details;
18 }
19
20 public function getAllworkFlowV1()
21 {
22 $workFlows = static::$_workFlowModel->get(
23 [
24 'id',
25 'workflow_name',
26 'workflow_type',
27 'workflow_run',
28 'workflow_behaviour',
29 'workflow_condition',
30 'workflow_action'
31 ],
32 [
33 'form_id' => static::$_formID,
34 ],
35 null,
36 null,
37 'id',
38 'desc'
39 );
40 $workFlowsFormated = [];
41 if (empty($workFlows) || is_wp_error($workFlows)) {
42 return [];
43 }
44 foreach ($workFlows as $key => $value) {
45 $allAction = json_decode($value->workflow_action);
46 $workFlow['id'] = $value->id;
47 $workFlow['title'] = $value->workflow_name;
48 $workFlow['action_type'] = $value->workflow_type;
49 $workFlow['action_run'] = $value->workflow_run;
50 $workFlow['action_behaviour'] = $value->workflow_behaviour;
51 $workFlow['logics'] = json_decode($value->workflow_condition);
52 $workFlow['actions'] = $allAction->action;
53 $workFlow['successAction'] = $allAction->successAction;
54 if (isset($allAction->validateMsg)) {
55 $workFlow['validateMsg'] = $allAction->validateMsg;
56 }
57 if (isset($allAction->avoid_delete)) {
58 $workFlow['avoid_delete'] = $allAction->avoid_delete;
59 }
60 $workFlowsFormated[$key] = $workFlow;
61 }
62
63 return $workFlowsFormated;
64 }
65
66 public function getAllworkFlow()
67 {
68 $workFlows = static::$_workFlowModel->get(
69 [
70 'id',
71 'workflow_name',
72 'workflow_type',
73 'workflow_run',
74 'workflow_behaviour',
75 'workflow_condition',
76 'workflow_order',
77 'workflow_status',
78 ],
79 [
80 'form_id' => static::$_formID,
81 ],
82 null,
83 null,
84 'workflow_order',
85 'ASC'
86 );
87 $workFlowsFormated = [];
88 if (empty($workFlows) || is_wp_error($workFlows)) {
89 return [];
90 }
91 foreach ($workFlows as $workFlowKey => $value) {
92 $workFlow['id'] = $value->id;
93 $workFlow['title'] = $value->workflow_name;
94 $workFlow['action_type'] = $value->workflow_type;
95 $workFlow['action_run'] = $value->workflow_run;
96 $workFlow['action_behaviour'] = $value->workflow_behaviour;
97 $workFlow['conditions'] = json_decode($value->workflow_condition);
98 $workFlow['status'] = (int) $value->workflow_status;
99 foreach ($workFlow['conditions'] as $conIndex => $condition) {
100 if (property_exists($condition, 'logics')) {
101 $workFlow['conditions'][$conIndex]->logics = $condition->logics;
102 }
103 if (property_exists($condition, 'actions')) {
104 $workFlow['conditions'][$conIndex]->actions = $condition->actions;
105 }
106 }
107
108 $workFlowsFormated[$workFlowKey] = $workFlow;
109 }
110
111 return $workFlowsFormated;
112 }
113
114 public function updateworkFlow($workFlowID, $workFlowDetails, $actionIntegrationDetails, $workFlowOrder, $errorCode = [])
115 {
116 $conditions = $workFlowDetails->conditions;
117 foreach ($conditions as $conIndex => $condition) {
118 $actions = $condition->actions;
119 if (!empty($actions->success)) {
120 foreach ($actions->success as $actionKey => $actionValue) {
121 $detailIds = $actionValue->details->id;
122 if (!empty($detailIds)) {
123 if (is_array($detailIds)) {
124 foreach ($detailIds as $key => $id) {
125 $actionIntegrationID = \json_decode($id);
126 if (isset($actionIntegrationID->index)) {
127 $value = wp_json_encode(['id' => (string) $actionIntegrationDetails[$actionValue->type][$actionIntegrationID->index]]);
128 $errorCode['workflow'] = 1;
129 } else {
130 $value = $id;
131 }
132 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->id[$key] = $value;
133 }
134 } else {
135 $actionIntegrationID = \json_decode($detailIds);
136 if (isset($actionIntegrationDetails[$actionValue->type])) {
137 if (isset($actionIntegrationID->index)) {
138 $value = wp_json_encode(['id' => (string) $actionIntegrationDetails[$actionValue->type][$actionIntegrationID->index]]);
139 $errorCode['workflow'] = 1;
140 } else {
141 $value = $actionValue->details->id;
142 }
143
144 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->id = $value;
145 }
146 }
147 }
148 // pdfId update
149 if (isset($actionIntegrationDetails['pdfTem']) && !empty($actionValue->details->pdfId)) {
150 $pdfDetailId = $actionValue->details->pdfId;
151 $actionIntegrationID = \json_decode($pdfDetailId);
152 if (isset($actionIntegrationID->index)) {
153 $value = wp_json_encode(['id' => (string) $actionIntegrationDetails['pdfTem'][$actionIntegrationID->index]]);
154 $errorCode['workflow'] = 1;
155 } else {
156 $value = $actionValue->details->pdfId;
157 }
158
159 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->pdfId = $value;
160 }
161 }
162 }
163 if (!empty($actions->failure)) {
164 $validateMsgID = \json_decode($actions->failure);
165 $failure = isset($validateMsgID->index) ?
166 wp_json_encode(
167 [
168 'id' => $actionIntegrationDetails['successMsg'][$validateMsgID->index],
169 ]
170 )
171 : $actions->failure;
172
173 $conditions[$conIndex]->actions->failure = $failure;
174 }
175
176 if (!empty($workFlowDetails->avoid_delete)) {
177 $conditions[$conIndex]->actions['avoid_delete'] = $workFlowDetails->avoid_delete;
178 }
179 }
180
181 $status = static::$_workFlowModel->update(
182 [
183 'workflow_name' => $workFlowDetails->title,
184 'workflow_type' => 'delete' === $workFlowDetails->action_run ? 'delete' : $workFlowDetails->action_type,
185 'workflow_run' => $workFlowDetails->action_run,
186 'workflow_behaviour' => $workFlowDetails->action_behaviour,
187 'workflow_condition' => wp_json_encode($conditions),
188 // "workflow_action" => wp_json_encode($workFlowActions),
189 'workflow_order' => $workFlowOrder,
190 'workflow_status' => $workFlowDetails->status,
191 'user_id' => $this->_user_details['id'],
192 'user_ip' => $this->_user_details['ip'],
193 'user_location' => '',
194 'user_device' => $this->_user_details['device'],
195 'updated_at' => $this->_user_details['time'],
196 ],
197 [
198 'id' => $workFlowID,
199 'form_id' => static::$_formID,
200 ]
201 );
202
203 if (is_wp_error($status) && 'result_empty' !== $status->get_error_code()) {
204 $errorCode['workflow'] = 2;
205 }
206 return $errorCode;
207 }
208
209 public function saveworkFlow($workFlowDetails, $actionIntegrationDetails, $workFlowOrder)
210 {
211 $conditions = $workFlowDetails->conditions;
212 foreach ($conditions as $conIndex => $condition) {
213 $actions = $condition->actions;
214 if (property_exists($actions, 'success')) {
215 foreach ($actions->success as $actionKey => $actionValue) {
216 $detailIds = $actionValue->details->id;
217 if (!empty($detailIds)) {
218 if (is_array($detailIds)) {
219 foreach ($detailIds as $key => $id) {
220 $actionIntegrationID = \json_decode($id);
221
222 $value = $this->maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, $actionValue->type);
223
224 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->id[$key] = false === $value ? $id : wp_json_encode(['id' => "$value"]);
225 }
226 } else {
227 $actionIntegrationID = \json_decode($detailIds);
228 $value = $this->maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, $actionValue->type);
229 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->id = false === $value ? $actionValue->details->id : wp_json_encode(['id' => "$value"]);
230 }
231 }
232
233 // pdfId update
234 if (isset($actionIntegrationDetails['pdfTem']) && !empty($actionValue->details->pdfId)) {
235 $pdfDetailId = $actionValue->details->pdfId;
236 $actionIntegrationID = \json_decode($pdfDetailId);
237 $value = $this->maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, 'pdfTem');
238
239 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->pdfId = false === $value ? $pdfDetailId : wp_json_encode(['id' => "$value"]);
240 }
241 }
242 }
243
244 if (!empty($actions->failure)) {
245 $validateMsgID = \json_decode($actions->failure);
246 $failure = isset($validateMsgID->index) ?
247 wp_json_encode(
248 [
249 'id' => $actionIntegrationDetails['successMsg'][$validateMsgID->index],
250 ]
251 )
252 : $actions->failure;
253
254 $conditions[$conIndex]->actions->failure = $failure;
255 }
256
257 if (!empty($actions->avoid_delete)) {
258 $conditions[$conIndex]->actions->avoid_delete = $workFlowDetails->avoid_delete;
259 }
260 }
261
262 return static::$_workFlowModel->insert(
263 [
264 'workflow_name' => $workFlowDetails->title,
265 'workflow_type' => 'delete' === $workFlowDetails->action_run ? 'delete' : $workFlowDetails->action_type,
266 'workflow_run' => $workFlowDetails->action_run,
267 'workflow_behaviour' => $workFlowDetails->action_behaviour,
268 'workflow_condition' => wp_json_encode($conditions),
269 'workflow_order' => $workFlowOrder,
270 'workflow_status' => isset($workFlowDetails->status) ? $workFlowDetails->status : 1,
271 'form_id' => static::$_formID,
272 'user_id' => $this->_user_details['id'],
273 'user_ip' => $this->_user_details['ip'],
274 'user_location' => '',
275 'user_device' => $this->_user_details['device'],
276 'created_at' => $this->_user_details['time'],
277 'updated_at' => $this->_user_details['time'],
278 ]
279 );
280 }
281
282 public function oldupdateworkFlow($workFlowID, $workFlowDetails, $actionIntegrationDetails)
283 {
284 // $workFlowActions['action'] = $workFlowDetails->actions;
285 // foreach ($workFlowDetails->successAction as $successActionkey => $successActionValue) {
286 // if (!empty($successActionValue->details->id)) {
287 // if (is_array($successActionValue->details->id)) {
288 // foreach ($successActionValue->details->id as $key => $value) {
289 // $actionIntegrationID = \json_decode($value);
290 // $workFlowDetails->successAction[$successActionkey]->details->id[$key]
291 // = isset($actionIntegrationID->index) ?
292 // wp_json_encode(
293 // [
294 // 'id'=>
295 // $actionIntegrationDetails[$successActionValue->type][$actionIntegrationID->index]
296 // ]
297 // )
298 // : $value;
299 // }
300 // } else {
301 // $actionIntegrationID = \json_decode($successActionValue->details->id);
302 // $workFlowDetails->successAction[$successActionkey]->details->id
303 // = isset($actionIntegrationID->index) ?
304 // wp_json_encode(
305 // [
306 // 'id'=>
307 // $actionIntegrationDetails[$successActionValue->type][$actionIntegrationID->index]
308 // ]
309 // )
310 // : $successActionValue->details->id;
311 // }
312 // }
313 // }
314 // $workFlowActions['success'] = $workFlowDetails->successAction;
315 // if (!empty($workFlowDetails->validateMsg)) {
316 // $validateMsgID = \json_decode($workFlowDetails->validateMsg);
317 // $workFlowActions['validateMsg'] = isset($validateMsgID->index) ?
318 // wp_json_encode(
319 // [
320 // 'id'=>
321 // $actionIntegrationDetails['successMsg'][$validateMsgID->index]
322 // ]
323 // )
324 // : $workFlowDetails->validateMsg;
325 // }
326 // if (!empty($workFlowDetails->avoid_delete)) {
327 // $workFlowActions['avoid_delete'] = $workFlowDetails->avoid_delete;
328 // }
329 return static::$_workFlowModel->update(
330 [
331 'workflow_name' => $workFlowDetails->title,
332 'workflow_type' => 'delete' === $workFlowDetails->action_run ? 'delete' : $workFlowDetails->action_type,
333 'workflow_run' => $workFlowDetails->action_run,
334 'workflow_behaviour' => $workFlowDetails->action_behaviour,
335 'workflow_condition' => wp_json_encode($workFlowDetails->conditions),
336 // "workflow_action" => null,
337 'workflow_status' => $workFlowDetails->status,
338 'user_id' => $this->_user_details['id'],
339 'user_ip' => $this->_user_details['ip'],
340 'user_location' => '',
341 'user_device' => $this->_user_details['device'],
342 'updated_at' => $this->_user_details['time'],
343 ],
344 [
345 'id' => $workFlowID,
346 'form_id' => static::$_formID,
347 ]
348 );
349 }
350
351 public function duplicateWorkFlow($currentFormID)
352 {
353 $workFlowCols = [
354 'workflow_name', 'workflow_type', 'workflow_run', 'workflow_behaviour',
355 'workflow_condition', 'workflow_action', 'workflow_status', 'form_id', 'user_id',
356 'user_ip', 'user_location', 'user_device', 'created_at', 'updated_at',
357 ];
358 $dupData = [
359 'workflow_name',
360 'workflow_type',
361 'workflow_run',
362 'workflow_behaviour',
363 'workflow_condition',
364 'workflow_action',
365 'workflow_status',
366 static::$_formID,
367 $this->_user_details['id'],
368 $this->_user_details['ip'],
369 '',
370 $this->_user_details['device'],
371 $this->_user_details['time'],
372 $this->_user_details['time'],
373 ];
374 return static::$_workFlowModel->duplicate($workFlowCols, $dupData, ['form_id' => $currentFormID]);
375 }
376
377 public function deleteworkFlow($workFlowID)
378 {
379 return static::$_workFlowModel->delete(
380 [
381 'id' => $workFlowID,
382 'form_id' => static::$_formID,
383 ]
384 );
385 }
386
387 public function maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, $actionType)
388 {
389 if (isset($actionIntegrationDetails[$actionType])) {
390 if (isset($actionIntegrationID->index)) {
391 return $actionIntegrationDetails[$actionType][$actionIntegrationID->index];
392 } elseif (isset($actionIntegrationID->id, $actionIntegrationDetails[$actionType][wp_json_encode($actionIntegrationID)])) {
393 return $actionIntegrationDetails[$actionType][wp_json_encode($actionIntegrationID)];
394 }
395 }
396 return false;
397 }
398 }
399