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

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