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

394 lines 14.7 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 ],
78 [
79 'form_id' => static::$_formID,
80 ],
81 null,
82 null,
83 'workflow_order',
84 'ASC'
85 );
86 $workFlowsFormated = [];
87 if (empty($workFlows) || is_wp_error($workFlows)) {
88 return [];
89 }
90 foreach ($workFlows as $workFlowKey => $value) {
91 $workFlow['id'] = $value->id;
92 $workFlow['title'] = $value->workflow_name;
93 $workFlow['action_type'] = $value->workflow_type;
94 $workFlow['action_run'] = $value->workflow_run;
95 $workFlow['action_behaviour'] = $value->workflow_behaviour;
96 $workFlow['conditions'] = json_decode($value->workflow_condition);
97
98 foreach ($workFlow['conditions'] as $conIndex => $condition) {
99 if (property_exists($condition, 'logics')) {
100 $workFlow['conditions'][$conIndex]->logics = $condition->logics;
101 }
102 if (property_exists($condition, 'actions')) {
103 $workFlow['conditions'][$conIndex]->actions = $condition->actions;
104 }
105 }
106
107 $workFlowsFormated[$workFlowKey] = $workFlow;
108 }
109
110 return $workFlowsFormated;
111 }
112
113 public function updateworkFlow($workFlowID, $workFlowDetails, $actionIntegrationDetails, $workFlowOrder, $errorCode = [])
114 {
115 $conditions = $workFlowDetails->conditions;
116 foreach ($conditions as $conIndex => $condition) {
117 $actions = $condition->actions;
118 if (!empty($actions->success)) {
119 foreach ($actions->success as $actionKey => $actionValue) {
120 $detailIds = $actionValue->details->id;
121 if (!empty($detailIds)) {
122 if (is_array($detailIds)) {
123 foreach ($detailIds as $key => $id) {
124 $actionIntegrationID = \json_decode($id);
125 if (isset($actionIntegrationID->index)) {
126 $value = wp_json_encode(['id' => (string) $actionIntegrationDetails[$actionValue->type][$actionIntegrationID->index]]);
127 $errorCode['workflow'] = 1;
128 } else {
129 $value = $id;
130 }
131 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->id[$key] = $value;
132 }
133 } else {
134 $actionIntegrationID = \json_decode($detailIds);
135 if (isset($actionIntegrationDetails[$actionValue->type])) {
136 if (isset($actionIntegrationID->index)) {
137 $value = wp_json_encode(['id' => (string) $actionIntegrationDetails[$actionValue->type][$actionIntegrationID->index]]);
138 $errorCode['workflow'] = 1;
139 } else {
140 $value = $actionValue->details->id;
141 }
142
143 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->id = $value;
144 }
145 }
146 }
147 // pdfId update
148 if (isset($actionIntegrationDetails['pdfTem']) && !empty($actionValue->details->pdfId)) {
149 $pdfDetailId = $actionValue->details->pdfId;
150 $actionIntegrationID = \json_decode($pdfDetailId);
151 if (isset($actionIntegrationID->index)) {
152 $value = wp_json_encode(['id' => (string) $actionIntegrationDetails['pdfTem'][$actionIntegrationID->index]]);
153 $errorCode['workflow'] = 1;
154 } else {
155 $value = $actionValue->details->pdfId;
156 }
157
158 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->pdfId = $value;
159 }
160 }
161 }
162 if (!empty($actions->failure)) {
163 $validateMsgID = \json_decode($actions->failure);
164 $failure = isset($validateMsgID->index) ?
165 wp_json_encode(
166 [
167 'id' => $actionIntegrationDetails['successMsg'][$validateMsgID->index],
168 ]
169 )
170 : $actions->failure;
171
172 $conditions[$conIndex]->actions->failure = $failure;
173 }
174
175 if (!empty($actions->avoid_delete)) {
176 $conditions[$conIndex]->actions['avoid_delete'] = $workFlowDetails->avoid_delete;
177 }
178 }
179
180 $status = static::$_workFlowModel->update(
181 [
182 'workflow_name' => $workFlowDetails->title,
183 'workflow_type' => 'delete' === $workFlowDetails->action_run ? 'delete' : $workFlowDetails->action_type,
184 'workflow_run' => $workFlowDetails->action_run,
185 'workflow_behaviour' => $workFlowDetails->action_behaviour,
186 'workflow_condition' => wp_json_encode($conditions),
187 // "workflow_action" => wp_json_encode($workFlowActions),
188 'workflow_order' => $workFlowOrder,
189 'user_id' => $this->_user_details['id'],
190 'user_ip' => $this->_user_details['ip'],
191 'user_location' => '',
192 'user_device' => $this->_user_details['device'],
193 'updated_at' => $this->_user_details['time'],
194 ],
195 [
196 'id' => $workFlowID,
197 'form_id' => static::$_formID,
198 ]
199 );
200
201 if (is_wp_error($status) && 'result_empty' !== $status->get_error_code()) {
202 $errorCode['workflow'] = 2;
203 }
204 return $errorCode;
205 }
206
207 public function saveworkFlow($workFlowDetails, $actionIntegrationDetails, $workFlowOrder)
208 {
209 $conditions = $workFlowDetails->conditions;
210 foreach ($conditions as $conIndex => $condition) {
211 $actions = $condition->actions;
212 if (property_exists($actions, 'success')) {
213 foreach ($actions->success as $actionKey => $actionValue) {
214 $detailIds = $actionValue->details->id;
215 if (!empty($detailIds)) {
216 if (is_array($detailIds)) {
217 foreach ($detailIds as $key => $id) {
218 $actionIntegrationID = \json_decode($id);
219
220 $value = $this->maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, $actionValue->type);
221
222 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->id[$key] = $value ? wp_json_encode(['id' => "$value"]) : $value;
223 }
224 } else {
225 $actionIntegrationID = \json_decode($detailIds);
226 $value = $this->maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, $actionValue->type);
227 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->id = $value ? wp_json_encode(['id' => "$value"]) : $actionValue->details->id;
228 }
229 }
230
231 // pdfId update
232 if (isset($actionIntegrationDetails['pdfTem']) && !empty($actionValue->details->pdfId)) {
233 $pdfDetailId = $actionValue->details->pdfId;
234 $actionIntegrationID = \json_decode($pdfDetailId);
235 $value = $this->maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, 'pdfTem');
236
237 $workFlowDetails->conditions[$conIndex]->actions->success[$actionKey]->details->pdfId = $value;
238 }
239 }
240 }
241
242 if (!empty($actions->failure)) {
243 $validateMsgID = \json_decode($actions->failure);
244 $failure = isset($validateMsgID->index) ?
245 wp_json_encode(
246 [
247 'id' => $actionIntegrationDetails['successMsg'][$validateMsgID->index],
248 ]
249 )
250 : $actions->failure;
251
252 $conditions[$conIndex]->actions->failure = $failure;
253 }
254
255 if (!empty($actions->avoid_delete)) {
256 $conditions[$conIndex]->actions->avoid_delete = $workFlowDetails->avoid_delete;
257 }
258 }
259
260 return static::$_workFlowModel->insert(
261 [
262 'workflow_name' => $workFlowDetails->title,
263 'workflow_type' => 'delete' === $workFlowDetails->action_run ? 'delete' : $workFlowDetails->action_type,
264 'workflow_run' => $workFlowDetails->action_run,
265 'workflow_behaviour' => $workFlowDetails->action_behaviour,
266 'workflow_condition' => wp_json_encode($conditions),
267 'workflow_order' => $workFlowOrder,
268 'form_id' => static::$_formID,
269 'user_id' => $this->_user_details['id'],
270 'user_ip' => $this->_user_details['ip'],
271 'user_location' => '',
272 'user_device' => $this->_user_details['device'],
273 'created_at' => $this->_user_details['time'],
274 'updated_at' => $this->_user_details['time'],
275 ]
276 );
277 }
278
279 public function oldupdateworkFlow($workFlowID, $workFlowDetails, $actionIntegrationDetails)
280 {
281 // $workFlowActions['action'] = $workFlowDetails->actions;
282 // foreach ($workFlowDetails->successAction as $successActionkey => $successActionValue) {
283 // if (!empty($successActionValue->details->id)) {
284 // if (is_array($successActionValue->details->id)) {
285 // foreach ($successActionValue->details->id as $key => $value) {
286 // $actionIntegrationID = \json_decode($value);
287 // $workFlowDetails->successAction[$successActionkey]->details->id[$key]
288 // = isset($actionIntegrationID->index) ?
289 // wp_json_encode(
290 // [
291 // 'id'=>
292 // $actionIntegrationDetails[$successActionValue->type][$actionIntegrationID->index]
293 // ]
294 // )
295 // : $value;
296 // }
297 // } else {
298 // $actionIntegrationID = \json_decode($successActionValue->details->id);
299 // $workFlowDetails->successAction[$successActionkey]->details->id
300 // = isset($actionIntegrationID->index) ?
301 // wp_json_encode(
302 // [
303 // 'id'=>
304 // $actionIntegrationDetails[$successActionValue->type][$actionIntegrationID->index]
305 // ]
306 // )
307 // : $successActionValue->details->id;
308 // }
309 // }
310 // }
311 // $workFlowActions['success'] = $workFlowDetails->successAction;
312 // if (!empty($workFlowDetails->validateMsg)) {
313 // $validateMsgID = \json_decode($workFlowDetails->validateMsg);
314 // $workFlowActions['validateMsg'] = isset($validateMsgID->index) ?
315 // wp_json_encode(
316 // [
317 // 'id'=>
318 // $actionIntegrationDetails['successMsg'][$validateMsgID->index]
319 // ]
320 // )
321 // : $workFlowDetails->validateMsg;
322 // }
323 // if (!empty($workFlowDetails->avoid_delete)) {
324 // $workFlowActions['avoid_delete'] = $workFlowDetails->avoid_delete;
325 // }
326 return static::$_workFlowModel->update(
327 [
328 'workflow_name' => $workFlowDetails->title,
329 'workflow_type' => 'delete' === $workFlowDetails->action_run ? 'delete' : $workFlowDetails->action_type,
330 'workflow_run' => $workFlowDetails->action_run,
331 'workflow_behaviour' => $workFlowDetails->action_behaviour,
332 'workflow_condition' => wp_json_encode($workFlowDetails->conditions),
333 // "workflow_action" => null,
334 'user_id' => $this->_user_details['id'],
335 'user_ip' => $this->_user_details['ip'],
336 'user_location' => '',
337 'user_device' => $this->_user_details['device'],
338 'updated_at' => $this->_user_details['time'],
339 ],
340 [
341 'id' => $workFlowID,
342 'form_id' => static::$_formID,
343 ]
344 );
345 }
346
347 public function duplicateWorkFlow($currentFormID)
348 {
349 $workFlowCols = [
350 'workflow_name', 'workflow_type', 'workflow_run', 'workflow_behaviour',
351 'workflow_condition', 'workflow_action', 'form_id', 'user_id',
352 'user_ip', 'user_location', 'user_device', 'created_at', 'updated_at',
353 ];
354 $dupData = [
355 'workflow_name',
356 'workflow_type',
357 'workflow_run',
358 'workflow_behaviour',
359 'workflow_condition',
360 'workflow_action',
361 static::$_formID,
362 $this->_user_details['id'],
363 $this->_user_details['ip'],
364 '',
365 $this->_user_details['device'],
366 $this->_user_details['time'],
367 $this->_user_details['time'],
368 ];
369 return static::$_workFlowModel->duplicate($workFlowCols, $dupData, ['form_id' => $currentFormID]);
370 }
371
372 public function deleteworkFlow($workFlowID)
373 {
374 return static::$_workFlowModel->delete(
375 [
376 'id' => $workFlowID,
377 'form_id' => static::$_formID,
378 ]
379 );
380 }
381
382 public function maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, $actionType)
383 {
384 if (isset($actionIntegrationDetails[$actionType])) {
385 if (isset($actionIntegrationID->index)) {
386 return $actionIntegrationDetails[$actionType][$actionIntegrationID->index];
387 } elseif (isset($actionIntegrationID->id, $actionIntegrationDetails[$actionType][wp_json_encode($actionIntegrationID)])) {
388 return $actionIntegrationDetails[$actionType][wp_json_encode($actionIntegrationID)];
389 }
390 }
391 return false;
392 }
393 }
394