PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 2.7.0
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v2.7.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
← All changes | includes/Core/Database/Model.php +442 -430 1.42.7.0 View file →
@@ -13,463 +13,475 @@
13 13 use WP_Error;
14 14
15 15 class Model
16 16 {
17 - protected static $table;
18 - protected static $primary_key;
19 - protected $app_db;
20 - protected $table_name;
21 - protected $db_response;
22 - /**
23 - * Undocumented function
24 - */
25 - public function __construct()
26 - {
27 - global $wpdb;
28 - $this->app_db = $wpdb;
29 - $this->table_name = $wpdb->prefix . static::$table;
17 + protected static $table;
18 + protected static $primary_key;
19 + protected $app_db;
20 + protected $table_name;
21 + protected $db_response;
22 +
23 + /**
24 + * Undocumented function
25 + */
26 + public function __construct()
27 + {
28 + global $wpdb;
29 + $this->app_db = $wpdb;
30 + $this->table_name = $wpdb->prefix . static::$table;
31 + }
32 +
33 + /**
34 + * Undocumented function
35 + *
36 + * @return void
37 + */
38 + public function insert($data = [])
39 + {
40 + if (is_null($data)) {
41 + return new WP_Error('empty_data', __('Form data is empty', 'bit-form'));
30 42 }
31 - /**
32 - * Undocumented function
33 - *
34 - * @return void
35 - */
36 - public function insert($data = array())
37 - {
38 - if (is_null($data)) {
39 - return new WP_Error('empty_data', __('Form data is empty', 'bitform'));
40 - }
41 - $result = $this->app_db->insert(
42 - $this->table_name,
43 - $data
44 - );
45 - return $this->getResult($result);
43 + $result = $this->app_db->insert(
44 + $this->table_name,
45 + $data
46 + );
47 + return $this->getResult($result);
48 + }
49 +
50 + /**
51 + * Undocumented function
52 + *
53 + * @param string $item
54 + * @param array $condition
55 + *
56 + * @return mixed
57 + */
58 + public function get($item = '*', $condition = [], $limit = null, $offset = null, $order_by = null, $order_follow = null)
59 + {
60 + $checkIfTableExists = $this->app_db->get_var(
61 + $this->app_db->prepare(
62 + 'SHOW TABLES LIKE %s',
63 + $this->table_name
64 + )
65 + );
66 + if (is_null($checkIfTableExists)) {
67 + return [];
46 68 }
47 - /**
48 - * Undocumented function
49 - *
50 - * @param string $item
51 - * @param array $condition
52 - *
53 - * @return void
54 - */
55 - public function get($item = "*", $condition = [], $limit = null, $offset = null, $order_by = null, $order_follow = null)
56 - {
57 - if (\is_array($item)) {
58 - $column_to_select = implode(",", $item);
59 - } else {
60 - $column_to_select = $item;
61 - }
62 - $checkCondition = $this->checkCondition($condition);
63 - if (is_wp_error($checkCondition)) {
64 - return $checkCondition;
65 - }
66 - $order = null;
67 - if (!\is_null($order_by)) {
68 - $order_follow = \is_null($order_follow) ? 'ASC' : $order_follow;
69 - $order .= " ORDER BY $order_by $order_follow";
70 - }
71 - $paginate = null;
72 - if (!\is_null($limit)) {
73 - $limit = \intval($limit);
74 - $paginate .= " LIMIT $limit ";
75 - }
76 - if (!\is_null($offset)) {
77 - $offset = \intval($offset);
78 - $paginate .= " OFFSET $offset ";
79 - }
80 - if (empty($condition)) {
81 - $sql = "SELECT $column_to_select FROM `$this->table_name` $order $paginate";
82 - $all_values = null;
83 - } else {
84 - $formatted_conditions = $this->getFormatedCondition($condition);
85 - if ($formatted_conditions) {
86 - $condition_to_check = $formatted_conditions['conditions'];
87 - $all_values = $formatted_conditions['values'];
88 - } else {
89 - $condition_to_check = null;
90 - $all_values = null;
91 - }
92 - $sql = "SELECT $column_to_select FROM `$this->table_name`"
93 - . $condition_to_check . $order . $paginate;
94 - }
95 - // var_dump($sql);
96 - return $this->execute($sql, $all_values)->getResult();
69 + if (\is_array($item)) {
70 + $column_to_select = implode(',', $item);
71 + } else {
72 + $column_to_select = $item;
97 73 }
74 + $checkCondition = $this->checkCondition($condition);
75 + if (is_wp_error($checkCondition)) {
76 + return $checkCondition;
77 + }
78 + $order = null;
79 + if (!\is_null($order_by)) {
80 + $order_follow = \is_null($order_follow) ? 'ASC' : $order_follow;
81 + $order .= " ORDER BY $order_by $order_follow";
82 + }
83 + $paginate = null;
84 + if (!\is_null($limit)) {
85 + $limit = \intval($limit);
86 + $paginate .= " LIMIT $limit ";
87 + }
88 + if (!\is_null($offset)) {
89 + $offset = \intval($offset);
90 + $paginate .= " OFFSET $offset ";
91 + }
92 + if (empty($condition)) {
93 + $sql = "SELECT $column_to_select FROM `$this->table_name` $order $paginate";
94 + $all_values = null;
95 + } else {
96 + $formatted_conditions = $this->getFormatedCondition($condition);
97 + if ($formatted_conditions) {
98 + $condition_to_check = $formatted_conditions['conditions'];
99 + $all_values = $formatted_conditions['values'];
100 + } else {
101 + $condition_to_check = null;
102 + $all_values = null;
103 + }
104 + $sql = "SELECT $column_to_select FROM `$this->table_name`"
105 + . $condition_to_check . $order . $paginate;
106 + }
107 + return $this->execute($sql, $all_values)->getResult();
108 + }
98 109
99 - public function single_row($condition, $item = "*")
100 - {
101 - if (\is_array($item)) {
102 - $column_to_select = implode(",", $item);
103 - } else {
104 - $column_to_select = $item;
105 - }
106 -
107 - $sql = "SELECT $column_to_select FROM `$this->table_name`"
108 - . $condition;
109 - return $this->app_db->get_row($sql);
110 + /**
111 + * Undocumented function
112 + *
113 + * @param string $item
114 + * @param array $condition
115 + *
116 + * @return void
117 + */
118 + public function count($condition = null)
119 + {
120 + $checkCondition = $this->checkCondition($condition);
121 + if (is_wp_error($checkCondition)) {
122 + return $checkCondition;
123 + }
124 + if (empty($condition)) {
125 + $result = $this->app_db->query(
126 + "SELECT COUNT(*) FROM `$this->table_name`"
127 + );
128 + } else {
129 + $formatted_conditions = $this->getFormatedCondition($condition);
130 + if ($formatted_conditions) {
131 + $condition_to_check = $formatted_conditions['conditions'];
132 + $all_values = $formatted_conditions['values'];
133 + } else {
134 + $condition_to_check = null;
135 + $all_values = null;
136 + }
137 + $result = $this->app_db->query(
138 + $this->app_db->prepare(
139 + "SELECT COUNT(*) as count FROM `$this->table_name`"
140 + . $condition_to_check,
141 + $all_values
142 + )
143 + );
144 + }
145 + if (!$result) {
146 + if ($this->app_db->last_error) {
147 + return new WP_Error('db_error', $this->app_db->last_error);
148 + }
149 + return new WP_Error('db_error', __('Result is empty', 'bit-form'));
150 + } else {
151 + return $this->app_db->last_result;
152 + }
153 + }
110 154
155 + /**
156 + * Undocumented function
157 + *
158 + * @param array $data_to_update
159 + * @param array $condition
160 + *
161 + * @return void
162 + */
163 + public function update(array $data, array $condition)
164 + {
165 + if (
166 + !\is_null($data)
167 + && \is_array($data)
168 + && array_keys($data) !== range(0, count($data) - 1)
169 + ) {
170 + $data_to_update = $data;
171 + } else {
172 + return new WP_Error(
173 + 'update_error',
174 + __('Nothing to update', 'bit-form')
175 + );
111 176 }
177 + $update_condition = (!\is_null($condition) &&
178 + array_keys($condition) !== range(0, count($condition) - 1)) ? $condition : null;
179 + $result = $this->app_db->update(
180 + $this->table_name,
181 + $data_to_update,
182 + $update_condition
183 + );
184 + return $this->getResult($result);
185 + }
112 186
113 -
114 - /**
115 - * Undocumented function
116 - *
117 - * @param string $item
118 - * @param array $condition
119 - *
120 - * @return void
121 - */
122 - public function count($condition = null)
123 - {
124 - $checkCondition = $this->checkCondition($condition);
125 - if (is_wp_error($checkCondition)) {
126 - return $checkCondition;
127 - }
128 - if (empty($condition)) {
129 - $result = $this->app_db->query(
130 - "SELECT COUNT(*) FROM `$this->table_name`"
131 - );
132 - } else {
133 - $formatted_conditions = $this->getFormatedCondition($condition);
134 - if ($formatted_conditions) {
135 - $condition_to_check = $formatted_conditions['conditions'];
136 - $all_values = $formatted_conditions['values'];
137 - } else {
138 - $condition_to_check = null;
139 - $all_values = null;
140 - }
141 - $result = $this->app_db->query(
142 - $this->app_db->prepare(
143 - "SELECT COUNT(*) as count FROM `$this->table_name`"
144 - . $condition_to_check,
145 - $all_values
146 - )
147 - );
148 - }
149 - if (!$result) {
150 - if ($this->app_db->last_error) {
151 - return new WP_Error('db_error', $this->app_db->last_error);
152 - }
153 - return new WP_Error('db_error', __("Result is empty", "bitform"));
154 - } else {
155 - return $this->app_db->last_result;
156 - }
187 + /**
188 + * Undocumented function
189 + *
190 + * @param array $data_to_update
191 + * @param array $condition
192 + *
193 + * @return void
194 + */
195 + public function bulkUpdate(array $data = null, array $condition = null)
196 + {
197 + if (
198 + !\is_null($data)
199 + && \is_array($data)
200 + && array_keys($data) !== range(0, count($data) - 1)
201 + ) {
202 + $data_to_update = $data;
203 + } else {
204 + return new WP_Error(
205 + 'update_error',
206 + __('Nothing to update', 'bit-form')
207 + );
157 208 }
158 - /**
159 - * Undocumented function
160 - *
161 - * @param array $data_to_update
162 - * @param array $condition
163 - *
164 - * @return void
165 - */
166 - public function update(array $data, array $condition)
167 - {
168 - if (
169 - !\is_null($data)
170 - && \is_array($data)
171 - && array_keys($data) !== range(0, count($data) - 1)
172 - ) {
173 - $data_to_update = $data;
174 - } else {
175 - return new WP_Error(
176 - 'update_error',
177 - __('Nothing to update', 'bitform')
178 - );
179 - }
180 - $update_condition = (!\is_null($condition) &&
181 - array_keys($condition) !== range(0, count($condition) - 1)) ? $condition : null;
182 - $result = $this->app_db->update(
183 - $this->table_name,
184 - $data_to_update,
185 - $update_condition
186 - );
187 - return $this->getResult($result);
209 +
210 + $update_fields = '';
211 + $all_values = [];
212 + $index_checker = 0;
213 + $data_count = count($data_to_update) - 1;
214 + foreach ($data_to_update as $field_name => $field_value) {
215 + $update_fields .= $field_name . ' = ' . $this->getFieldFormat($field_value);
216 + if ($index_checker < $data_count) {
217 + $update_fields .= ',';
218 + }
219 + $index_checker = $index_checker + 1;
220 + $all_values[] = $field_value;
188 221 }
189 - /**
190 - * Undocumented function
191 - *
192 - * @param array $data_to_update
193 - * @param array $condition
194 - *
195 - * @return void
196 - */
197 - public function bulkUpdate(array $data = null, array $condition = null)
198 - {
199 - if (
200 - !\is_null($data)
201 - && \is_array($data)
202 - && array_keys($data) !== range(0, count($data) - 1)
203 - ) {
204 - $data_to_update = $data;
205 - } else {
206 - return new WP_Error(
207 - 'update_error',
208 - __('Nothing to update', 'bitform')
209 - );
210 - }
222 + $update_condition = (!\is_null($condition) &&
223 + array_keys($condition) !== range(0, count($condition) - 1)) ? $condition : null;
224 + $formatted_conditions = $this->getFormatedCondition($update_condition);
225 + if ($formatted_conditions) {
226 + $condition_to_check = $formatted_conditions['conditions'];
227 + $all_values = array_merge($all_values, $formatted_conditions['values']);
228 + } else {
229 + $condition_to_check = null;
230 + }
231 + $result = $this->app_db->query(
232 + $this->app_db->prepare(
233 + "UPDATE $this->table_name SET $update_fields $condition_to_check",
234 + $all_values
235 + )
236 + );
237 + return $this->getResult($result);
238 + }
211 239
212 - $update_fields = '';
213 - $all_values = array();
214 - $index_checker = 0;
215 - $data_count = count($data_to_update) - 1;
216 - foreach ($data_to_update as $field_name => $field_value) {
217 - $update_fields .= $field_name . ' = ' . $this->getFieldFormat($field_value);
218 - if ($index_checker < $data_count) {
219 - $update_fields .= ',';
220 - }
221 - $index_checker = $index_checker + 1;
222 - $all_values[] = $field_value;
223 - }
224 - $update_condition = (!\is_null($condition) &&
225 - array_keys($condition) !== range(0, count($condition) - 1)) ? $condition : null;
226 - $formatted_conditions = $this->getFormatedCondition($update_condition);
227 - if ($formatted_conditions) {
228 - $condition_to_check = $formatted_conditions['conditions'];
229 - $all_values = array_merge($all_values, $formatted_conditions['values']);
230 - } else {
231 - $condition_to_check = null;
232 - }
233 - $result = $this->app_db->query(
234 - $this->app_db->prepare(
235 - "UPDATE $this->table_name SET $update_fields $condition_to_check",
236 - $all_values
237 - )
238 - );
239 - return $this->getResult($result);
240 + /**
241 + * Duplicate's row
242 + *
243 + * @param array $data_to_update
244 + * @param array $condition
245 + *
246 + * @return void
247 + */
248 + public function duplicate(array $columns, array $duplicate, array $condition)
249 + {
250 + if (!(!\is_null($columns)
251 + && \is_array($columns)
252 + && array_keys($columns) === range(0, count($columns) - 1)
253 + && !\is_null($duplicate)
254 + && \is_array($duplicate)
255 + && array_keys($duplicate) === range(0, count($duplicate) - 1))) {
256 + return new WP_Error(
257 + 'duplicate_error',
258 + __('Nothing to duplicate', 'bit-form')
259 + );
240 260 }
241 - /**
242 - * Duplicate's row
243 - *
244 - * @param array $data_to_update
245 - * @param array $condition
246 - *
247 - * @return void
248 - */
249 - public function duplicate(array $columns, array $duplicate, array $condition)
250 - {
251 - if (!(!\is_null($columns)
252 - && \is_array($columns)
253 - && array_keys($columns) === range(0, count($columns) - 1)
254 - && !\is_null($duplicate)
255 - && \is_array($duplicate)
256 - && array_keys($duplicate) === range(0, count($duplicate) - 1))) {
257 - return new WP_Error(
258 - 'duplicate_error',
259 - __('Nothing to duplicate', 'bitform')
260 - );
261 - }
262 261
263 - $dupCol = '';
264 - $insCol = \implode(',', $columns);
265 - $all_values = array();
266 - $data_count = count($duplicate) - 1;
267 - foreach ($duplicate as $dupKey => $dupColName) {
268 - if (in_array($dupColName, $columns)) {
269 - $dupCol .= $dupColName;
270 - } else {
271 - $dupCol .= $this->getFieldFormat($dupColName);
272 - $all_values[] = $dupColName;
273 - }
274 - if ($dupKey < $data_count) {
275 - $dupCol .= ',';
276 - }
277 - }
278 - $condition_to_check = null;
279 - $update_condition = (!\is_null($condition) &&
280 - array_keys($condition) !== range(0, count($condition) - 1)) ? $condition : null;
281 - $formatted_conditions = $this->getFormatedCondition($update_condition);
282 - if ($formatted_conditions) {
283 - $condition_to_check = $formatted_conditions['conditions'];
284 - $all_values = array_merge($all_values, $formatted_conditions['values']);
285 - }
286 - $query = "INSERT INTO $this->table_name ($insCol)
262 + $dupCol = '';
263 + $insCol = \implode(',', $columns);
264 + $all_values = [];
265 + $data_count = count($duplicate) - 1;
266 + foreach ($duplicate as $dupKey => $dupColName) {
267 + if (in_array($dupColName, $columns)) {
268 + $dupCol .= $dupColName;
269 + } else {
270 + $dupCol .= $this->getFieldFormat($dupColName);
271 + $all_values[] = $dupColName;
272 + }
273 + if ($dupKey < $data_count) {
274 + $dupCol .= ',';
275 + }
276 + }
277 + $condition_to_check = null;
278 + $update_condition = (!\is_null($condition) &&
279 + array_keys($condition) !== range(0, count($condition) - 1)) ? $condition : null;
280 + $formatted_conditions = $this->getFormatedCondition($update_condition);
281 + if ($formatted_conditions) {
282 + $condition_to_check = $formatted_conditions['conditions'];
283 + $all_values = array_merge($all_values, $formatted_conditions['values']);
284 + }
285 + $query = "INSERT INTO $this->table_name ($insCol)
287 286 SELECT $dupCol FROM $this->table_name $condition_to_check";
288 - $this->execute($query, $all_values);
289 - return $this->getResult();
287 + $this->execute($query, $all_values);
288 + return $this->getResult();
289 + }
290 +
291 + public function trash(array $condition = null)
292 + {
293 + if (
294 + !\is_null($condition)
295 + && \is_array($condition)
296 + && array_keys($condition) !== range(0, count($condition) - 1)
297 + ) {
298 + $delete_condition = $condition;
299 + } else {
300 + return new WP_Error(
301 + 'deletion_error',
302 + __('At least 1 condition needed', 'bit-form')
303 + );
290 304 }
291 - public function trash(array $condition = null)
292 - {
293 - if (
294 - !\is_null($condition)
295 - && \is_array($condition)
296 - && array_keys($condition) !== range(0, count($condition) - 1)
297 - ) {
298 - $delete_condition = $condition;
299 - } else {
300 - return new WP_Error(
301 - 'deletion_error',
302 - __('At least 1 condition needed', 'bitform')
303 - );
304 - }
305 - $update_condition = (!\is_null($condition) &&
306 - array_keys($condition) !== range(0, count($condition) - 1)) ? $condition : null;
307 - $result = $this->app_db->update(
308 - $this->table_name,
309 - $data_to_update,
310 - $update_condition
311 - );
312 - return $this->getResult($result);
305 + $update_condition = (!\is_null($condition) &&
306 + array_keys($condition) !== range(0, count($condition) - 1)) ? $condition : null;
307 + $result = $this->app_db->update(
308 + $this->table_name,
309 + $data_to_update,
310 + $update_condition
311 + );
312 + return $this->getResult($result);
313 + }
314 +
315 + public function delete(array $condition = null)
316 + {
317 + if (
318 + !\is_null($condition)
319 + && \is_array($condition)
320 + && array_keys($condition) !== range(0, count($condition) - 1)
321 + ) {
322 + $delete_condition = $condition;
323 + } else {
324 + return new WP_Error(
325 + 'deletion_error',
326 + __('At least 1 condition needed', 'bit-form')
327 + );
313 328 }
314 - public function delete(array $condition = null)
315 - {
316 - if (
317 - !\is_null($condition)
318 - && \is_array($condition)
319 - && array_keys($condition) !== range(0, count($condition) - 1)
320 - ) {
321 - $delete_condition = $condition;
322 - } else {
323 - return new WP_Error(
324 - 'deletion_error',
325 - __('At least 1 condition needed', 'bitform')
326 - );
327 - }
328 - $result = $this->app_db->delete(
329 - $this->table_name,
330 - $delete_condition
331 - );
332 - return $this->getResult($result);
329 + $result = $this->app_db->delete(
330 + $this->table_name,
331 + $delete_condition
332 + );
333 + return $this->getResult($result);
334 + }
335 +
336 + public function bulkDelete(array $condition = null)
337 + {
338 + if (
339 + !\is_null($condition)
340 + && \is_array($condition)
341 + && array_keys($condition) !== range(0, count($condition) - 1)
342 + ) {
343 + $delete_condition = $condition;
344 + } else {
345 + return new WP_Error(
346 + 'deletion_error',
347 + __('At least 1 condition needed', 'bit-form')
348 + );
333 349 }
334 - public function bulkDelete(array $condition = null)
335 - {
336 - if (
337 - !\is_null($condition)
338 - && \is_array($condition)
339 - && array_keys($condition) !== range(0, count($condition) - 1)
340 - ) {
341 - $delete_condition = $condition;
342 - } else {
343 - return new WP_Error(
344 - 'deletion_error',
345 - __('At least 1 condition needed', 'bitform')
346 - );
347 - }
348 - $formatted_conditions = $this->getFormatedCondition($delete_condition);
349 - if ($formatted_conditions) {
350 - $condition_to_check = $formatted_conditions['conditions'];
351 - $all_values = $formatted_conditions['values'];
352 - } else {
353 - $condition_to_check = null;
354 - return new WP_Error(
355 - 'deletion_error',
356 - __('At least 1 condition needed', 'bitform')
357 - );
358 - }
359 - $result = $this->app_db->query(
360 - $this->app_db->prepare(
361 - "DELETE FROM $this->table_name $condition_to_check",
362 - $all_values
363 - )
364 - );
365 - return $this->getResult($result);
350 + // $formatted_conditions = $this->getFormatedCondition($delete_condition, $check_operator);
351 + $formatted_conditions = $this->getFormatedCondition($delete_condition);
352 + if ($formatted_conditions) {
353 + $condition_to_check = $formatted_conditions['conditions'];
354 + $all_values = $formatted_conditions['values'];
355 + } else {
356 + $condition_to_check = null;
357 + return new WP_Error(
358 + 'deletion_error',
359 + __('At least 1 condition needed', 'bit-form')
360 + );
366 361 }
362 + $result = $this->app_db->query(
363 + $this->app_db->prepare(
364 + "DELETE FROM $this->table_name $condition_to_check",
365 + $all_values
366 + )
367 + );
368 + return $this->getResult($result);
369 + }
367 370
368 - protected function getFieldFormat($value)
369 - {
370 - return (gettype($value) == 'integer') ?
371 - '%d' : ((gettype($value) == 'double') ? '%f' : '%s');
371 + protected function getFieldFormat($value)
372 + {
373 + return ('integer' === gettype($value)) ?
374 + '%d' : (('double' === gettype($value)) ? '%f' : '%s');
375 + }
376 +
377 + protected function getFormatedCondition($condition, $check_operator = null, $join_operator = ' AND ')
378 + {
379 + if (\is_null($condition)) {
380 + return false;
372 381 }
373 -
374 - protected function getFormatedCondition($condition, $check_operator = null, $join_operator = ' AND ')
375 - {
376 - if (\is_null($condition)) {
377 - return false;
378 - }
379 - $no_condition = count($condition);
380 - $index_checker = 0;
381 - $condition_to_check = ' WHERE ';
382 - $all_values = array();
383 - foreach ($condition as $key => $value) {
384 - $value_type = '';
385 - if (is_array($value)) {
386 - if (isset($value['operator'])) {
387 - $set_check_operator = $value['operator'];
388 - $value_type .= $this->getFieldFormat($value['value']);
389 - $all_values[] = $value['value'];
390 - } else {
391 - $set_check_operator = \is_null($check_operator) ? 'in' : $check_operator;
392 - $value_type .= ' ( ';
393 - $value_index_checker = 0;
394 - $value_count = count($value) - 1;
395 - foreach ($value as $condKey => $condValue) {
396 - $value_type .= $this->getFieldFormat($condValue);
397 - $all_values[] = $condValue;
398 - if ($value_index_checker < $value_count) {
399 - $value_type .= ', ';
400 - }
401 - $value_index_checker = $value_index_checker + 1;
402 - }
403 - $value_type .= ' )';
404 - }
405 - } else {
406 - $set_check_operator = \is_null($check_operator) ? '=' : $check_operator;
407 - $value_type .= $this->getFieldFormat($value);
408 - $all_values[] = $value;
382 + $no_condition = count($condition);
383 + $index_checker = 0;
384 + $condition_to_check = ' WHERE ';
385 + $all_values = [];
386 + foreach ($condition as $key => $value) {
387 + $value_type = '';
388 + if (is_array($value)) {
389 + if (isset($value['operator'])) {
390 + $set_check_operator = $value['operator'];
391 + $value_type .= $this->getFieldFormat($value['value']);
392 + $all_values[] = $value['value'];
393 + } else {
394 + $set_check_operator = \is_null($check_operator) ? 'in' : $check_operator;
395 + $value_type .= ' ( ';
396 + $value_index_checker = 0;
397 + $value_count = count($value) - 1;
398 + foreach ($value as $condKey => $condValue) {
399 + $value_type .= $this->getFieldFormat($condValue);
400 + $all_values[] = $condValue;
401 + if ($value_index_checker < $value_count) {
402 + $value_type .= ', ';
409 403 }
410 - $condition_to_check = $condition_to_check . $key . " $set_check_operator " . $value_type;
411 - if ($index_checker < $no_condition - 1) {
412 - $condition_to_check = $condition_to_check . " $join_operator ";
413 - }
414 - $index_checker = $index_checker + 1;
404 + $value_index_checker = $value_index_checker + 1;
405 + }
406 + $value_type .= ' )';
415 407 }
416 - return array(
417 - 'conditions' => $condition_to_check,
418 - 'values' => $all_values
419 - );
408 + } else {
409 + $set_check_operator = \is_null($check_operator) ? '=' : $check_operator;
410 + $value_type .= $this->getFieldFormat($value);
411 + $all_values[] = $value;
412 + }
413 + $condition_to_check = $condition_to_check . $key . " $set_check_operator " . $value_type;
414 + if ($index_checker < $no_condition - 1) {
415 + $condition_to_check = $condition_to_check . " $join_operator ";
416 + }
417 + $index_checker = $index_checker + 1;
420 418 }
419 + return [
420 + 'conditions' => $condition_to_check,
421 + 'values' => $all_values
422 + ];
423 + }
421 424
422 - protected function checkCondition(array $condition)
423 - {
424 - if (!is_null($condition) && array_keys($condition) === range(0, count($condition) - 1)) {
425 - return new WP_Error(
426 - 'get_condition',
427 - 'Require ASSOC_ARRAY but found N_ARRAY'
428 - );
429 - }
430 - return true;
425 + protected function checkCondition(array $condition)
426 + {
427 + if (!is_null($condition) && array_keys($condition) === range(0, count($condition) - 1)) {
428 + return new WP_Error(
429 + 'get_condition',
430 + 'Require ASSOC_ARRAY but found N_ARRAY'
431 + );
431 432 }
433 + return true;
434 + }
432 435
433 - protected function execute($sql, $values = null)
434 - {
435 - if (is_null($values)) {
436 - $preparedQuery = $sql;
437 - } else {
438 - $preparedQuery = $this->app_db->prepare($sql, $values);
439 - }
440 - // echo " Q S " . $preparedQuery . " Q EE";
441 - if (empty($preparedQuery)) {
442 - $this->db_response = new WP_Error('null_query', __("prepared query is empty", "bitform"));
443 - } else {
444 - $this->db_response = stripos($preparedQuery, 'DELETE') !== false ? $this->app_db->query($preparedQuery)
445 - : $this->app_db->get_results($preparedQuery, OBJECT_K);
446 - }
447 - // print_r($this->app_db->last_query);
448 - return $this;
436 + protected function execute($sql, $values = null)
437 + {
438 + if (is_null($values)) {
439 + $preparedQuery = $sql;
440 + } else {
441 + $preparedQuery = $this->app_db->prepare($sql, $values);
449 442 }
443 + // echo " Q S " . $preparedQuery . " Q EE";
444 + if (empty($preparedQuery)) {
445 + $this->db_response = new WP_Error('null_query', __('prepared query is empty', 'bit-form'));
446 + } else {
447 + $this->db_response = false !== stripos($preparedQuery, 'DELETE') ? $this->app_db->query($preparedQuery)
448 + : $this->app_db->get_results($preparedQuery, OBJECT_K);
449 + }
450 + // print_r($this->app_db->last_query);
451 + return $this;
452 + }
450 453
451 - protected function getResult($db_response = null)
452 - {
453 - $db_response = !empty($this->db_response) ? $this->db_response : $db_response;
454 - if (!empty($this->app_db->last_error)) {
455 - return new WP_Error('db_error', $this->app_db->last_error);
456 - }
457 - if (!$db_response) {
458 - if ($this->app_db->num_rows > 0) {
459 - $response = $this->app_db->num_rows;
460 - }
461 - if (is_wp_error($db_response)) {
462 - $response = $db_response;
463 - }
464 - $response = new WP_Error('result_empty', __("Result is empty", "bitform"));
465 - } elseif (is_array($this->app_db->last_result) && !empty($this->app_db->last_result)) {
466 - $response = $this->app_db->last_result;
467 - } elseif ($this->app_db->insert_id) {
468 - $response = $this->app_db->insert_id;
469 - } else {
470 - $response = $db_response;
471 - }
472 - $this->app_db->flush();
473 - return $response;
454 + protected function getResult($db_response = null)
455 + {
456 + $db_response = !empty($this->db_response) ? $this->db_response : $db_response;
457 + if (!empty($this->app_db->last_error)) {
458 + return new WP_Error('db_error', $this->app_db->last_error);
474 459 }
460 + if (!$db_response) {
461 + if ($this->app_db->num_rows > 0) {
462 + $response = $this->app_db->num_rows;
463 + }
464 + if (is_wp_error($db_response)) {
465 + $response = $db_response;
466 + }
467 + $response = new WP_Error('result_empty', __('Result is empty', 'bit-form'));
468 + } elseif (is_array($this->app_db->last_result) && !empty($this->app_db->last_result)) {
469 + $response = $this->app_db->last_result;
470 + } elseif ($this->app_db->insert_id) {
471 + $response = $this->app_db->insert_id;
472 + } else {
473 + $response = $db_response;
474 + }
475 + $this->app_db->flush();
476 + return $response;
477 + }
478 +
479 + // get last entry id
480 + public function lastId()
481 + {
482 + $sql = "SELECT id FROM {$this->table_name}
483 + ORDER BY id DESC LIMIT 1";
484 + $result = $this->execute($sql)->getResult()[0];
485 + return $result->id;
486 + }
475 487 }