| @@ -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 |