PluginProbe
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment / 2.1.14
FireBox – WooCommerce Popup Builder, Exit Intent Popup, Email Optin & Cart Abandonment v2.1.14
3.1.13 3.1.12 3.1.11 3.1.10 3.1.9 3.1.8 3.1.7 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.0.7 1.0.8 1.0.9 1.1.0 1.1.1 All 122 releases
← All changes | Inc/Core/Helpers/Form/SubmissionMeta.php +18 -98 3.1.92.1.14 View file →
@@ -1,12 +1,12 @@
1 1 <?php
2 2 /**
3 3 * @package FireBox
4 - * @version 3.1.9 Free
4 + * @version 2.1.14 Free
5 5 *
6 6 * @author FirePlugins <info@fireplugins.com>
7 7 * @link https://www.fireplugins.com
8 - * @copyright Copyright © 2026 FirePlugins All Rights Reserved
8 + * @copyright Copyright © 2024 FirePlugins All Rights Reserved
9 9 * @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
10 10 */
11 11
12 12 namespace FireBox\Core\Helpers\Form;
@@ -30,119 +30,39 @@
30 30 public static function create($submission_id = null, $fields_values = [], $save = true)
31 31 {
32 32 if (!$fields_values)
33 33 {
34 - return [];
34 + return;
35 35 }
36 36
37 37 $meta = [];
38 - $rows = [];
39 -
40 - // Build submission meta
38 +
39 + // Save submission meta
41 40 foreach ($fields_values as $key => $value)
42 41 {
43 42 $submission_meta_payload = [
44 43 'submission_id' => $submission_id,
45 44 'meta_type' => '',
46 - 'meta_key' => $key,
47 - 'meta_value' => is_array($value) ? wp_json_encode($value) : $value,
45 + 'meta_key' => $value['id'],
46 + 'meta_value' => is_array($value['value']) ? json_encode($value['value']) : $value['value'],
48 47 'created_at' => gmdate('Y-m-d H:i:s'),
49 48 'modified_at' => null
50 49 ];
50 +
51 + if ($save)
52 + {
53 + if (!firebox()->tables->submissionmeta->insert($submission_meta_payload))
54 + {
55 + return;
56 + }
57 + }
51 58
52 - $rows[] = $submission_meta_payload;
53 59 $meta[] = $submission_meta_payload;
54 60 }
55 61
56 - if ($save)
57 - {
58 - if (!self::insertMany($rows))
59 - {
60 - return;
61 - }
62 - }
63 -
64 62 return $meta;
65 63 }
66 64
67 - /**
68 - * Batch-inserts multiple submission meta rows using a single multi-row INSERT
69 - * instead of one INSERT per field.
70 - *
71 - * @param array $rows
72 - *
73 - * @return bool
74 - */
75 - private static function insertMany($rows)
76 - {
77 - if (!$rows)
78 - {
79 - return true;
80 - }
81 -
82 - global $wpdb;
83 -
84 - $table = firebox()->tables->submissionmeta->getFullTableName();
85 -
86 - $placeholders = [];
87 - $values = [];
88 -
89 - foreach ($rows as $row)
90 - {
91 - $placeholders[] = '(%d, %s, %s, %s, %s, %s)';
92 -
93 - $values[] = $row['submission_id'];
94 - $values[] = $row['meta_type'];
95 - $values[] = $row['meta_key'];
96 - $values[] = $row['meta_value'];
97 - $values[] = $row['created_at'];
98 - $values[] = $row['modified_at'];
99 - }
100 -
101 - $sql = "INSERT INTO `{$table}` (`submission_id`, `meta_type`, `meta_key`, `meta_value`, `created_at`, `modified_at`) VALUES " . implode(', ', $placeholders);
102 -
103 - // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
104 - $result = $wpdb->query($wpdb->prepare($sql, $values));
105 -
106 - return false !== $result;
107 - }
108 -
109 - /**
110 - * Retrieves submission meta for multiple submissions in chunked IN() queries,
111 - * grouped by submission_id, to avoid one query per submission.
112 - *
113 - * @param array $submission_ids
114 - *
115 - * @return array
116 - */
117 - public static function getMetaForSubmissions($submission_ids = [])
118 - {
119 - if (!$submission_ids)
120 - {
121 - return [];
122 - }
123 -
124 - $meta_by_submission = [];
125 -
126 - foreach (array_chunk($submission_ids, 500) as $id_chunk)
127 - {
128 - $ids_in = implode(',', array_map('absint', $id_chunk));
129 -
130 - $chunk_meta = firebox()->tables->submissionmeta->getResults([
131 - 'where' => [
132 - 'submission_id' => " IN (" . $ids_in . ")"
133 - ]
134 - ]);
135 -
136 - foreach ($chunk_meta as $meta_item)
137 - {
138 - $meta_by_submission[$meta_item->submission_id][] = $meta_item;
139 - }
140 - }
141 -
142 - return $meta_by_submission;
143 - }
144 -
145 65 /**
146 66 * Retrieves the meta row.
147 67 *
148 68 * @param int $submission_id
@@ -158,15 +78,15 @@
158 78 return;
159 79 }
160 80
161 81 $where = [
162 - 'submission_id = ' => "'" . sanitize_key($submission_id) . "'",
163 - 'meta_type = ' => "'" . sanitize_key($type) . "'"
82 + 'submission_id = ' => "'" . esc_sql($submission_id) . "'",
83 + 'meta_type = ' => "'" . esc_sql($type) . "'"
164 84 ];
165 85
166 86 if (!empty($key))
167 87 {
168 - $where['meta_key = '] = "'" . sanitize_key($key) . "'";
88 + $where['meta_key = '] = "'" . esc_sql($key) . "'";
169 89 }
170 90
171 91 return firebox()->tables->submissionmeta->getResults([
172 92 'where' => $where