PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 3.3.1
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v3.3.1
3.3.1 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 All 138 releases
← All changes | includes/Core/Database/ReportsModel.php +96 -41 1.33.3.1 View file →
@@ -1,11 +1,13 @@
1 1 <?php
2 +
2 3 /**
3 4 * Provides Report Model Class
4 5 */
6 +
5 7 namespace BitCode\BitForm\Core\Database;
6 8
7 -use BitCode\BitForm\Core\Database\Model;
9 +use WP_Error;
8 10
9 11 /**
10 12 *
11 13 */
@@ -10,50 +12,103 @@
10 12 *
11 13 */
12 14 class ReportsModel extends Model
13 15 {
14 - protected static $table = 'bitforms_reports';
16 + protected static $table = 'bitforms_reports';
15 17
16 - public function validateReportFields($reportData, $fieldNames)
17 - {
18 - $reportDetails = [];
19 - switch ($reportData->type) {
20 - case 'table':
21 - $tableAction = "table_ac";
22 - $reportDetails = !is_string($reportData->details)? $reportData->details : json_decode($reportData->details);
23 - if (!empty($reportDetails->order)) {
24 - $initialOrder = $fieldNames;
25 - $columnOrder = $reportDetails->order;
26 - foreach ($reportDetails->order as $key => $value) {
27 - if (isset($initialOrder[$value])) {
28 - unset($initialOrder[$value]);
29 - } elseif (!isset($initialOrder[$value])) {
30 - unset($columnOrder[$key]);
31 - }
32 - }
33 - $columnOrder = array_values($columnOrder);
34 - if (!empty($initialOrder)) {
35 - foreach ($initialOrder as $name => $label) {
36 - $columnOrder[] = $name;
37 - }
38 - }
39 - $columnOrder[] = $tableAction;
40 - array_unshift($columnOrder, 'selection', 'sl');
41 - $reportDetails->order = $columnOrder;
18 + /**
19 + * Whether a report payload carries enough to validate.
20 + *
21 + * The save path feeds this the request's `currentReport`, and the React `$reportSelector` atom
22 + * yields `{}` whenever the report list has not resolved — an empty stdClass, which PHP's
23 + * empty() reports as non-empty. Callers must therefore ask before acting on it.
24 + *
25 + * @param mixed $reportData
26 + *
27 + * @return bool
28 + */
29 + public static function isValidatableReport($reportData)
30 + {
31 + return \is_object($reportData) && !empty($reportData->type) && isset($reportData->details);
32 + }
33 +
34 + public function validateReportFields($reportData, $fieldNames)
35 + {
36 + $reportDetails = [];
37 + if (!self::isValidatableReport($reportData)) {
38 + return $reportDetails;
39 + }
40 + switch ($reportData->type) {
41 + case 'table':
42 + $tableAction = 'table_ac';
43 + $reportDetails = !is_string($reportData->details) ? $reportData->details : json_decode($reportData->details);
44 + if (!empty($reportDetails->order)) {
45 + $initialOrder = $fieldNames;
46 + $columnOrder = $reportDetails->order;
47 + foreach ($reportDetails->order as $key => $value) {
48 + if (isset($initialOrder[$value])) {
49 + unset($initialOrder[$value]);
50 + } elseif (!isset($initialOrder[$value])) {
51 + unset($columnOrder[$key]);
42 52 }
43 - if (!empty($reportDetails->hiddenColumns)) {
44 - $hiddenColumns = $reportDetails->hiddenColumns;
45 - foreach ($reportDetails->hiddenColumns as $key => $value) {
46 - if (!isset($fieldNames[$value]) && ($value !== 'sl' && $value !== 'selection' && $value !== 'table_ac')) {
47 - unset($hiddenColumns[$key]);
48 - }
49 - }
50 - $reportDetails->hiddenColumns = array_values($hiddenColumns);
53 + }
54 + $columnOrder = array_values($columnOrder);
55 + if (!empty($initialOrder)) {
56 + foreach ($initialOrder as $name => $label) {
57 + $columnOrder[] = $name;
51 58 }
52 - break;
53 -
54 - default:
55 - break;
59 + }
60 + $columnOrder[] = $tableAction;
61 + array_unshift($columnOrder, 'selection', 'sl');
62 + $reportDetails->order = $columnOrder;
56 63 }
57 - return $reportDetails;
64 + if (!empty($reportDetails->hiddenColumns)) {
65 + $hiddenColumns = $reportDetails->hiddenColumns;
66 + foreach ($reportDetails->hiddenColumns as $key => $value) {
67 + if (!isset($fieldNames[$value]) && ('sl' !== $value && 'selection' !== $value && 'table_ac' !== $value)) {
68 + unset($hiddenColumns[$key]);
69 + }
70 + }
71 + $reportDetails->hiddenColumns = array_values($hiddenColumns);
72 + }
73 + break;
74 +
75 + default:
76 + break;
58 77 }
78 + return $reportDetails;
79 + }
80 +
81 + public function bulkDelete(array $condition = null, $check_operator = null)
82 + {
83 + if (
84 + !\is_null($condition)
85 + && \is_array($condition)
86 + && array_keys($condition) !== range(0, count($condition) - 1)
87 + ) {
88 + $delete_condition = $condition;
89 + } else {
90 + return new WP_Error(
91 + 'deletion_error',
92 + __('At least 1 condition needed', 'bit-form')
93 + );
94 + }
95 + $formatted_conditions = $this->getFormatedCondition($delete_condition, $check_operator);
96 + if ($formatted_conditions) {
97 + $condition_to_check = $formatted_conditions['conditions'];
98 + $all_values = $formatted_conditions['values'];
99 + } else {
100 + $condition_to_check = null;
101 + return new WP_Error(
102 + 'deletion_error',
103 + __('At least 1 condition needed', 'bit-form')
104 + );
105 + }
106 + $result = $this->app_db->query(
107 + $this->app_db->prepare(
108 + "DELETE FROM `{$this->table_name}` $condition_to_check",
109 + $all_values
110 + )
111 + );
112 + return $this->getResult($result);
113 + }
59 114 }