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

245 lines 10.1 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 getAllworkFlow()
21 {
22 $workFlows = static::$_workFlowModel->get(
23 array(
24 'id',
25 'workflow_name',
26 'workflow_type',
27 'workflow_run',
28 'workflow_behaviour',
29 'workflow_condition',
30 'workflow_action'
31 ),
32 array(
33 'form_id' => static::$_formID,
34 ),
35 null,
36 null,
37 'id',
38 'desc'
39 );
40 $workFlowsFormated = array();
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 saveworkFlow($workFlowDetails, $actionIntegrationDetails)
67 {
68 $workFlowActions['action'] = $workFlowDetails->actions;
69 foreach ($workFlowDetails->successAction as $successActionkey => $successActionValue) {
70 if (!empty($successActionValue->details->id)) {
71 if (is_array($successActionValue->details->id)) {
72 foreach ($successActionValue->details->id as $key => $value) {
73 $actionIntegrationID = \json_decode($value);
74 $id = $this->maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, $successActionValue->type);
75 $workFlowDetails->successAction[$successActionkey]->details->id[$key]
76 = $id ?
77 json_encode(
78 [
79 'id'=> "$id"
80 ]
81 )
82 : $value;
83 }
84 } else {
85 $actionIntegrationID = \json_decode($successActionValue->details->id);
86 $id = $this->maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, $successActionValue->type);
87 $workFlowDetails->successAction[$successActionkey]->details->id
88 = $id ?
89 json_encode(
90 [
91 'id'=> "$id"
92 ]
93 )
94 : $successActionValue->details->id;
95 }
96 }
97 }
98 $workFlowActions['successAction'] = $workFlowDetails->successAction;
99 if (!empty($workFlowDetails->validateMsg)) {
100 $actionIntegrationID = \json_decode($workFlowDetails->validateMsg);
101 $workFlowActions['validateMsg'] = isset($actionIntegrationID->index) ?
102 json_encode(
103 [
104 'id'=>
105 $actionIntegrationDetails['successMsg'][$actionIntegrationID->index]
106 ]
107 )
108 : $workFlowDetails->validateMsg;
109 }
110 if (!empty($workFlowDetails->avoid_delete)) {
111 $workFlowActions['avoid_delete'] = $workFlowDetails->avoid_delete;
112 }
113 return static::$_workFlowModel->insert(
114 array(
115 "workflow_name"=> $workFlowDetails->title,
116 "workflow_type"=> $workFlowDetails->action_run === 'delete'? 'delete' : $workFlowDetails->action_type,
117 "workflow_run"=> $workFlowDetails->action_run,
118 "workflow_behaviour" => $workFlowDetails->action_behaviour,
119 "workflow_condition"=> json_encode($workFlowDetails->logics),
120 "workflow_action"=> json_encode($workFlowActions),
121 "form_id"=> static::$_formID,
122 "user_id"=> $this->_user_details['id'],
123 "user_ip"=> $this->_user_details['ip'],
124 "user_location"=> '',
125 "user_device"=> $this->_user_details['device'],
126 "created_at"=> $this->_user_details['time'],
127 "updated_at" => $this->_user_details['time']
128 )
129 );
130 }
131
132 public function updateworkFlow($workFlowID, $workFlowDetails, $actionIntegrationDetails)
133 {
134 $workFlowActions['action'] = $workFlowDetails->actions;
135 foreach ($workFlowDetails->successAction as $successActionkey => $successActionValue) {
136 if (!empty($successActionValue->details->id)) {
137 if (is_array($successActionValue->details->id)) {
138 foreach ($successActionValue->details->id as $key => $value) {
139 $actionIntegrationID = \json_decode($value);
140 $workFlowDetails->successAction[$successActionkey]->details->id[$key]
141 = isset($actionIntegrationID->index) ?
142 json_encode(
143 [
144 'id'=>
145 $actionIntegrationDetails[$successActionValue->type][$actionIntegrationID->index]
146 ]
147 )
148 : $value;
149 }
150 } else {
151 $actionIntegrationID = \json_decode($successActionValue->details->id);
152 $workFlowDetails->successAction[$successActionkey]->details->id
153 = isset($actionIntegrationID->index) ?
154 json_encode(
155 [
156 'id'=>
157 $actionIntegrationDetails[$successActionValue->type][$actionIntegrationID->index]
158 ]
159 )
160 : $successActionValue->details->id;
161 }
162 }
163 }
164 $workFlowActions['successAction'] = $workFlowDetails->successAction;
165 if (!empty($workFlowDetails->validateMsg)) {
166 $validateMsgID = \json_decode($workFlowDetails->validateMsg);
167 $workFlowActions['validateMsg'] = isset($validateMsgID->index) ?
168 json_encode(
169 [
170 'id'=>
171 $actionIntegrationDetails['successMsg'][$validateMsgID->index]
172 ]
173 )
174 : $workFlowDetails->validateMsg;
175 }
176 if (!empty($workFlowDetails->avoid_delete)) {
177 $workFlowActions['avoid_delete'] = $workFlowDetails->avoid_delete;
178 }
179 return static::$_workFlowModel->update(
180 array(
181 "workflow_name"=> $workFlowDetails->title,
182 "workflow_type"=> $workFlowDetails->action_run === 'delete'? 'delete' : $workFlowDetails->action_type,
183 "workflow_run"=> $workFlowDetails->action_run,
184 "workflow_behaviour" => $workFlowDetails->action_behaviour,
185 "workflow_condition"=> json_encode($workFlowDetails->logics),
186 "workflow_action"=> json_encode($workFlowActions),
187 "user_id"=> $this->_user_details['id'],
188 "user_ip"=> $this->_user_details['ip'],
189 "user_location"=> '',
190 "user_device"=> $this->_user_details['device'],
191 "updated_at" => $this->_user_details['time']
192 ),
193 array(
194 "id" => $workFlowID,
195 'form_id' => static::$_formID,
196 )
197 );
198 }
199
200 public function duplicateWorkFlow($currentFormID)
201 {
202 $workFlowCols = [
203 "workflow_name","workflow_type","workflow_run","workflow_behaviour" ,
204 "workflow_condition","workflow_action","form_id","user_id",
205 "user_ip","user_location","user_device","created_at","updated_at"
206 ];
207 $dupData = array(
208 "workflow_name",
209 "workflow_type",
210 "workflow_run",
211 "workflow_behaviour",
212 "workflow_condition",
213 "workflow_action",
214 static::$_formID,
215 $this->_user_details['id'],
216 $this->_user_details['ip'],
217 '',
218 $this->_user_details['device'],
219 $this->_user_details['time'],
220 $this->_user_details['time']
221 );
222 return static::$_workFlowModel->duplicate($workFlowCols, $dupData, ['form_id' => $currentFormID]);
223 }
224
225 public function deleteworkFlow($workFlowID)
226 {
227 return static::$_workFlowModel->delete(
228 array(
229 'id' => $workFlowID,
230 'form_id' => static::$_formID,
231 )
232 );
233 }
234
235 public function maybeGetSuccessActionID($actionIntegrationID, $actionIntegrationDetails, $actionType)
236 {
237 if (isset($actionIntegrationID->index)) {
238 return $actionIntegrationDetails[$actionType][$actionIntegrationID->index];
239 } elseif (isset($actionIntegrationID->id) && isset($actionIntegrationDetails[$actionType][json_encode($actionIntegrationID)])) {
240 return $actionIntegrationDetails[$actionType][json_encode($actionIntegrationID)];
241 }
242 return false;
243 }
244 }
245