PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 5.0.08
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v5.0.08
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | classes/models/FrmEntryMeta.php +68 -246 6.27 → 5.0.08 View file →
@@ -5,14 +5,9 @@
5 5
6 6 class FrmEntryMeta {
7 7
8 8 /**
9 - * @param int $entry_id
10 - * @param int $field_id
11 - * @param string $meta_key usually set to '' as this parameter is no longer used.
12 - * @param mixed $meta_value
13 - *
14 - * @return int
9 + * @param string $meta_key
15 10 */
16 11 public static function add_entry_meta( $entry_id, $field_id, $meta_key, $meta_value ) {
17 12 global $wpdb;
18 13
@@ -28,24 +23,27 @@
28 23 'created_at' => current_time( 'mysql', 1 ),
29 24 );
30 25
31 26 self::set_value_before_save( $new_values );
32 - $new_values = apply_filters( 'frm_add_entry_meta', $new_values );
27 + $new_values = apply_filters( 'frm_add_entry_meta', $new_values );
28 +
33 29 $query_results = $wpdb->insert( $wpdb->prefix . 'frm_item_metas', $new_values );
34 30
35 31 if ( $query_results ) {
36 32 self::clear_cache();
37 33 wp_cache_delete( $entry_id, 'frm_entry' );
38 - return $wpdb->insert_id;
34 + $id = $wpdb->insert_id;
35 + } else {
36 + $id = 0;
39 37 }
40 38
41 - return 0;
39 + return $id;
42 40 }
43 41
44 42 /**
45 - * @param int $entry_id
46 - * @param int $field_id
47 - * @param string $meta_key Deprecated.
43 + * @param int $entry_id
44 + * @param int $field_id
45 + * @param string $meta_key deprecated
48 46 * @param array|string $meta_value
49 47 *
50 48 * @return bool|false|int
51 49 */
@@ -67,9 +65,8 @@
67 65
68 66 if ( is_array( $values['meta_value'] ) ) {
69 67 $values['meta_value'] = array_filter( $values['meta_value'], 'FrmAppHelper::is_not_empty_value' );
70 68 }
71 -
72 69 $meta_value = maybe_serialize( $values['meta_value'] );
73 70
74 71 wp_cache_delete( $entry_id, 'frm_entry' );
75 72 self::clear_cache();
@@ -78,18 +75,14 @@
78 75 }
79 76
80 77 /**
81 78 * @since 3.0
82 - *
83 - * @param array $values
84 - *
85 - * @return void
86 79 */
87 80 private static function set_value_before_save( &$values ) {
88 81 $field = FrmField::getOne( $values['field_id'] );
82 + if ( $field ) {
83 + $field_obj = FrmFieldFactory::get_field_object( $field );
89 84
90 - if ( $field ) {
91 - $field_obj = FrmFieldFactory::get_field_object( $field );
92 85 $values['meta_value'] = $field_obj->set_value_before_save( $values['meta_value'] );
93 86 }
94 87 }
95 88
@@ -94,13 +87,8 @@
94 87 }
95 88
96 89 /**
97 90 * @since 3.0
98 - *
99 - * @param array $atts
100 - * @param mixed $value
101 - *
102 - * @return void
103 91 */
104 92 private static function get_value_to_save( $atts, &$value ) {
105 93 if ( is_object( $atts['field'] ) ) {
106 94 $field_obj = FrmFieldFactory::get_field_object( $atts['field'] );
@@ -115,19 +103,13 @@
115 103
116 104 $value = apply_filters( 'frm_prepare_data_before_db', $value, $atts['field_id'], $atts['entry_id'], array( 'field' => $atts['field'] ) );
117 105 }
118 106
119 - /**
120 - * @param int|string $entry_id
121 - * @param array $values Either indexed by field ID or field key.
122 - *
123 - * @return void
124 - */
125 107 public static function update_entry_metas( $entry_id, $values ) {
126 108 global $wpdb;
127 109
128 - $previous_field_ids = FrmDb::get_col(
129 - 'frm_item_metas',
110 + $prev_values = FrmDb::get_col(
111 + $wpdb->prefix . 'frm_item_metas',
130 112 array(
131 113 'item_id' => $entry_id,
132 114 'field_id !' => 0,
133 115 ),
@@ -133,31 +115,21 @@
133 115 ),
134 116 'field_id'
135 117 );
136 118
137 - $values_indexed_by_field_id = array();
138 -
139 - foreach ( $values as $field_id_or_key => $meta_value ) {
140 - $field_id = $field_id_or_key;
141 - $field = null;
142 -
143 - if ( $field_id_or_key ) {
144 - $field = FrmField::getOne( $field_id_or_key );
145 -
146 - if ( is_object( $field ) ) {
147 - $field_id = $field->id;
148 - }
119 + foreach ( $values as $field_id => $meta_value ) {
120 + $field = false;
121 + if ( ! empty( $field_id ) ) {
122 + $field = FrmField::getOne( $field_id );
149 123 }
150 124
151 - $values_indexed_by_field_id[ $field_id ] = $meta_value;
125 + self::get_value_to_save( compact( 'field', 'field_id', 'entry_id' ), $meta_value );
152 126
153 - self::get_value_to_save( compact( 'field', 'field_id', 'entry_id' ), $meta_value );
127 + if ( $prev_values && in_array( $field_id, $prev_values ) ) {
154 128
155 - // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict
156 - if ( $previous_field_ids && in_array( $field_id, $previous_field_ids ) ) {
157 - if ( $meta_value === array() || ( ! is_array( $meta_value ) && trim( $meta_value ) === '' ) ) {
158 - // Remove blank fields.
159 - unset( $values_indexed_by_field_id[ $field_id ] );
129 + if ( ( is_array( $meta_value ) && empty( $meta_value ) ) || ( ! is_array( $meta_value ) && trim( $meta_value ) == '' ) ) {
130 + // remove blank fields
131 + unset( $values[ $field_id ] );
160 132 } else {
161 133 // if value exists, then update it
162 134 self::update_entry_meta( $entry_id, $field_id, '', $meta_value );
163 135 }
@@ -164,17 +136,17 @@
164 136 } else {
165 137 // if value does not exist, then create it
166 138 self::add_entry_meta( $entry_id, $field_id, '', $meta_value );
167 139 }
168 - }//end foreach
140 + }
169 141
170 - if ( ! $previous_field_ids ) {
142 + if ( empty( $prev_values ) ) {
171 143 return;
172 144 }
173 145
174 - $field_ids_to_remove = array_diff( $previous_field_ids, array_keys( $values_indexed_by_field_id ) );
146 + $prev_values = array_diff( $prev_values, array_keys( $values ) );
175 147
176 - if ( ! $field_ids_to_remove ) {
148 + if ( empty( $prev_values ) ) {
177 149 return;
178 150 }
179 151
180 152 // prepare the query
@@ -179,48 +151,26 @@
179 151
180 152 // prepare the query
181 153 $where = array(
182 154 'item_id' => $entry_id,
183 - 'field_id' => $field_ids_to_remove,
155 + 'field_id' => $prev_values,
184 156 );
185 157 FrmDb::get_where_clause_and_values( $where );
186 158
187 159 // Delete any leftovers
188 - $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'frm_item_metas ' . $where['where'], $where['values'] ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, SlevomatCodingStandard.Files.LineLength.LineTooLong
160 + $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'frm_item_metas ' . $where['where'], $where['values'] ) ); // WPCS: unprepared SQL ok.
189 161 self::clear_cache();
190 162 }
191 163
192 - /**
193 - * @param int $old_id
194 - * @param int $new_id
195 - *
196 - * @return void
197 - */
198 164 public static function duplicate_entry_metas( $old_id, $new_id ) {
199 165 $metas = self::get_entry_meta_info( $old_id );
200 -
201 - /**
202 - * Allows changing entry duplicate values before save.
203 - *
204 - * @since 5.4.4
205 - *
206 - * @param array $metas The list of entry meta values.
207 - */
208 - $metas = apply_filters( 'frm_before_duplicate_entry_values', $metas );
209 -
210 166 foreach ( $metas as $meta ) {
211 - self::add_entry_meta( $new_id, $meta->field_id, '', $meta->meta_value );
167 + self::add_entry_meta( $new_id, $meta->field_id, null, $meta->meta_value );
212 168 unset( $meta );
213 169 }
214 170 self::clear_cache();
215 171 }
216 172
217 - /**
218 - * @param int $entry_id
219 - * @param int $field_id
220 - *
221 - * @return false|int
222 - */
223 173 public static function delete_entry_meta( $entry_id, $field_id ) {
224 174 global $wpdb;
225 175 self::clear_cache();
226 176
@@ -231,10 +181,8 @@
231 181 * Clear entry meta caching
232 182 * Called when a meta is added or changed
233 183 *
234 184 * @since 2.0.5
235 - *
236 - * @return void
237 185 */
238 186 public static function clear_cache() {
239 187 FrmDb::cache_delete_group( 'frm_entry_meta' );
240 188 FrmDb::cache_delete_group( 'frm_item_meta' );
@@ -241,27 +189,17 @@
241 189 }
242 190
243 191 /**
244 192 * @since 2.0.9
245 - *
246 - * @param stdClass $entry
247 - * @param int|string $field_id
248 - *
249 - * @return mixed
250 193 */
251 194 public static function get_meta_value( $entry, $field_id ) {
252 195 if ( isset( $entry->metas ) ) {
253 - return $entry->metas[ $field_id ] ?? false;
196 + return isset( $entry->metas[ $field_id ] ) ? $entry->metas[ $field_id ] : false;
197 + } else {
198 + return self::get_entry_meta_by_field( $entry->id, $field_id );
254 199 }
255 - return self::get_entry_meta_by_field( $entry->id, $field_id );
256 200 }
257 201
258 - /**
259 - * @param int|object|string $entry_id
260 - * @param int|string $field_id This function supports field keys as field id.
261 - *
262 - * @return mixed
263 - */
264 202 public static function get_entry_meta_by_field( $entry_id, $field_id ) {
265 203 global $wpdb;
266 204
267 205 if ( is_object( $entry_id ) ) {
@@ -274,38 +212,28 @@
274 212 }
275 213
276 214 if ( $cached && isset( $cached->metas ) && isset( $cached->metas[ $field_id ] ) ) {
277 215 $result = $cached->metas[ $field_id ];
216 +
278 217 return wp_unslash( $result );
279 218 }
280 219
281 220 $get_table = $wpdb->prefix . 'frm_item_metas';
282 221 $query = array( 'item_id' => $entry_id );
283 -
284 222 if ( is_numeric( $field_id ) ) {
285 - // Query by field ID.
286 223 $query['field_id'] = $field_id;
287 224 } else {
288 - // Query by field key.
289 - $get_table .= ' it JOIN ' . $wpdb->prefix . 'frm_fields fi ON it.field_id=fi.id';
225 + $get_table .= ' it LEFT OUTER JOIN ' . $wpdb->prefix . 'frm_fields fi ON it.field_id=fi.id';
290 226 $query['fi.field_key'] = $field_id;
291 227 }
292 228
293 - $result = FrmDb::get_var( $get_table, $query, 'meta_value' );
294 - $field_type = FrmField::get_type( $field_id );
295 - FrmFieldsHelper::prepare_field_value( $result, $field_type );
229 + $result = FrmDb::get_var( $get_table, $query, 'meta_value' );
230 + FrmAppHelper::unserialize_or_decode( $result );
231 + $result = wp_unslash( $result );
296 232
297 - return wp_unslash( $result );
233 + return $result;
298 234 }
299 235
300 - /**
301 - * @param int|string $field_id
302 - * @param string $order
303 - * @param string $limit
304 - * @param array $args
305 - *
306 - * @return array
307 - */
308 236 public static function get_entry_metas_for_field( $field_id, $order = '', $limit = '', $args = array() ) {
309 237 $defaults = array(
310 238 'value' => false,
311 239 'unique' => false,
@@ -312,11 +240,13 @@
312 240 'stripslashes' => true,
313 241 'is_draft' => false,
314 242 );
315 243 $args = wp_parse_args( $args, $defaults );
316 - $query = array();
244 +
245 + $query = array();
317 246 self::meta_field_query( $field_id, $order, $limit, $args, $query );
318 - $query = implode( ' ', $query );
247 + $query = implode( ' ', $query );
248 +
319 249 $cache_key = 'entry_metas_for_field_' . $field_id . $order . $limit . FrmAppHelper::maybe_json_encode( $args );
320 250 $values = FrmDb::check_cache( $cache_key, 'frm_entry', $query, 'get_col' );
321 251
322 252 if ( ! $args['stripslashes'] ) {
@@ -332,15 +262,10 @@
332 262 return wp_unslash( $values );
333 263 }
334 264
335 265 /**
336 - * @param int|string $field_id
337 - * @param string $order
338 - * @param string $limit
339 - * @param array $args
340 - * @param array $query
341 - *
342 - * @return void
266 + * @param string $order
267 + * @param string $limit
343 268 */
344 269 private static function meta_field_query( $field_id, $order, $limit, $args, array &$query ) {
345 270 global $wpdb;
346 271 $query[] = 'SELECT';
@@ -363,29 +288,15 @@
363 288
364 289 if ( $args['value'] ) {
365 290 $query[] = $wpdb->prepare( ' AND meta_value=%s', $args['value'] );
366 291 }
367 -
368 292 $query[] = $order . $limit;
369 293 }
370 294
371 - /**
372 - * @param int|string $entry_id
373 - *
374 - * @return array
375 - */
376 295 public static function get_entry_meta_info( $entry_id ) {
377 296 return FrmDb::get_results( 'frm_item_metas', array( 'item_id' => $entry_id ) );
378 297 }
379 298
380 - /**
381 - * @param array $where
382 - * @param string $order_by
383 - * @param string $limit
384 - * @param bool $stripslashes
385 - *
386 - * @return mixed
387 - */
388 299 public static function getAll( $where = array(), $order_by = '', $limit = '', $stripslashes = false ) {
389 300 global $wpdb;
390 301 $query = 'SELECT it.*, fi.type as field_type, fi.field_key as field_key,
391 302 fi.required as required, fi.form_id as field_form_id, fi.name as field_name, fi.options as fi_options
@@ -392,9 +303,9 @@
392 303 FROM ' . $wpdb->prefix . 'frm_item_metas it LEFT OUTER JOIN ' . $wpdb->prefix . 'frm_fields fi ON it.field_id=fi.id' .
393 304 FrmDb::prepend_and_or_where( ' WHERE ', $where ) . $order_by . $limit;
394 305
395 306 $cache_key = 'all_' . FrmAppHelper::maybe_json_encode( $where ) . $order_by . $limit;
396 - $results = FrmDb::check_cache( $cache_key, 'frm_entry', $query, ( $limit == ' LIMIT 1' ? 'get_row' : 'get_results' ) ); // phpcs:ignore Universal.Operators.StrictComparisons, SlevomatCodingStandard.Files.LineLength.LineTooLong
307 + $results = FrmDb::check_cache( $cache_key, 'frm_entry', $query, ( $limit == ' LIMIT 1' ? 'get_row' : 'get_results' ) );
397 308
398 309 if ( ! $results || ! $stripslashes ) {
399 310 return $results;
400 311 }
@@ -407,17 +318,8 @@
407 318
408 319 return $results;
409 320 }
410 321
411 - /**
412 - * @param array|string $where
413 - * @param string $order_by
414 - * @param string $limit
415 - * @param bool $unique
416 - * @param array $args
417 - *
418 - * @return array|string|null
419 - */
420 322 public static function getEntryIds( $where = array(), $order_by = '', $limit = '', $unique = true, $args = array() ) {
421 323 $defaults = array(
422 324 'is_draft' => false,
423 325 'user_id' => '',
@@ -423,11 +325,13 @@
423 325 'user_id' => '',
424 326 'group_by' => '',
425 327 );
426 328 $args = wp_parse_args( $args, $defaults );
427 - $query = array();
329 +
330 + $query = array();
428 331 self::get_ids_query( $where, $order_by, $limit, $unique, $args, $query );
429 - $query = implode( ' ', $query );
332 + $query = implode( ' ', $query );
333 +
430 334 $cache_key = 'ids_' . FrmAppHelper::maybe_json_encode( $where ) . $order_by . 'l' . $limit . 'u' . $unique . FrmAppHelper::maybe_json_encode( $args );
431 335 $type = 'get_' . ( ' LIMIT 1' === $limit ? 'var' : 'col' );
432 336 return FrmDb::check_cache( $cache_key, 'frm_entry', $query, $type );
433 337 }
@@ -437,9 +341,8 @@
437 341 * If a child entry id is matched, its parent will be returned in its place
438 342 *
439 343 * @param array $query
440 344 * @param array $args
441 - *
442 345 * @return array
443 346 */
444 347 public static function get_top_level_entry_ids( $query, $args ) {
445 348 $args['return_parent_id_if_0_return_id'] = true;
@@ -446,54 +349,13 @@
446 349 return self::getEntryIds( $query, '', '', true, $args );
447 350 }
448 351
449 352 /**
450 - * Returns true if the where clause refers to a field table column that is not form_id. It also updates
451 - * the where clause to refer to the entry table for form_id if fields table should not be joined.
452 - *
453 - * @since 6.16.1
454 - *
455 - * @param array|string $where
456 - *
457 - * @return bool
353 + * @param string|array $where
354 + * @param string $order_by
355 + * @param string $limit
458 356 */
459 - private static function should_join_fields_table( &$where ) {
460 - if ( is_string( $where ) ) {
461 - if ( preg_match( '/\bfi\.(?!form_id)\w+/i', $where ) ) {
462 - return true;
463 - }
464 -
465 - $where = str_ireplace( 'fi.form_id', 'e.form_id', $where );
466 - return false;
467 - }
468 -
469 - $where_fields = array_keys( $where );
470 -
471 - foreach ( $where_fields as $where_field ) {
472 - if ( str_starts_with( $where_field, 'fi.' ) && 'fi.form_id' !== $where_field ) {
473 - return true;
474 - }
475 - }
476 -
477 - if ( isset( $where['fi.form_id'] ) ) {
478 - $where['e.form_id'] = $where['fi.form_id'];
479 - unset( $where['fi.form_id'] );
480 - }
481 -
482 - return false;
483 - }
484 -
485 - /**
486 - * @param array|string $where
487 - * @param string $order_by
488 - * @param string $limit
489 - * @param bool $unique
490 - * @param array $args
491 - * @param array $query
492 - *
493 - * @return void
494 - */
495 - private static function get_ids_query( $where, $order_by, $limit, $unique, $args, array &$query ) { // phpcs:ignore SlevomatCodingStandard.Complexity.Cognitive.ComplexityTooHigh, SlevomatCodingStandard.Files.LineLength.LineTooLong
357 + private static function get_ids_query( $where, $order_by, $limit, $unique, $args, array &$query ) {
496 358 global $wpdb;
497 359 $query[] = 'SELECT';
498 360 $defaults = array(
499 361 'return_parent_id' => false,
@@ -512,47 +374,21 @@
512 374 } else {
513 375 $query[] = 'it.item_id';
514 376 }
515 377
516 - $from = 'FROM ' . $wpdb->prefix . 'frm_item_metas it';
517 - $should_join_fields_table__where = self::should_join_fields_table( $where );
518 - $should_join_fields_table__order_by = self::should_join_fields_table( $order_by );
378 + $query[] = 'FROM ' . $wpdb->prefix . 'frm_item_metas it LEFT OUTER JOIN ' . $wpdb->prefix . 'frm_fields fi ON it.field_id=fi.id';
519 379
520 - if ( $should_join_fields_table__where || $should_join_fields_table__order_by ) {
521 - $from .= ' LEFT OUTER JOIN ' . $wpdb->prefix . 'frm_fields fi ON it.field_id=fi.id';
522 - }
523 -
524 - $query[] = $from;
525 380 $query[] = 'INNER JOIN ' . $wpdb->prefix . 'frm_items e ON (e.id=it.item_id)';
526 -
527 381 if ( is_array( $where ) ) {
528 382 if ( ! $args['is_draft'] ) {
529 383 $where['e.is_draft'] = 0;
530 - } elseif ( is_numeric( $args['is_draft'] ) ) {
531 - $where['e.is_draft'] = class_exists( 'FrmAbandonmentHooksController', false ) ? absint( $args['is_draft'] ) : 1;
532 - } elseif ( 'both' === $args['is_draft'] && class_exists( 'FrmAbandonmentHooksController', false ) ) {
533 - $where['e.is_draft'] = array( 0, 1 );
534 - } elseif ( str_contains( $args['is_draft'], ',' ) ) {
535 - $is_draft = array_reduce(
536 - explode( ',', $args['is_draft'] ),
537 - function ( $total, $current ) {
538 - if ( is_numeric( $current ) ) {
539 - $total[] = absint( $current );
540 - }
541 - return $total;
542 - },
543 - array()
544 - );
384 + } elseif ( $args['is_draft'] == 1 ) {
385 + $where['e.is_draft'] = 1;
386 + }
545 387
546 - if ( $is_draft ) {
547 - $where['e.is_draft'] = $is_draft;
548 - }
549 - }//end if
550 -
551 388 if ( ! empty( $args['user_id'] ) ) {
552 389 $where['e.user_id'] = $args['user_id'];
553 390 }
554 -
555 391 $query[] = FrmDb::prepend_and_or_where( ' WHERE ', $where ) . $order_by . $limit;
556 392
557 393 if ( $args['group_by'] ) {
558 394 $query[] = ' GROUP BY ' . sanitize_text_field( $args['group_by'] );
@@ -558,16 +394,15 @@
558 394 $query[] = ' GROUP BY ' . sanitize_text_field( $args['group_by'] );
559 395 }
560 396
561 397 return;
562 - }//end if
398 + }
563 399
564 400 $draft_where = '';
565 401 $user_where = '';
566 -
567 402 if ( ! $args['is_draft'] ) {
568 403 $draft_where = $wpdb->prepare( ' AND e.is_draft=%d', 0 );
569 - } elseif ( $args['is_draft'] == 1 ) { // phpcs:ignore Universal.Operators.StrictComparisons
404 + } elseif ( $args['is_draft'] == 1 ) {
570 405 $draft_where = $wpdb->prepare( ' AND e.is_draft=%d', 1 );
571 406 }
572 407
573 408 if ( ! empty( $args['user_id'] ) ) {
@@ -573,9 +408,9 @@
573 408 if ( ! empty( $args['user_id'] ) ) {
574 409 $user_where = $wpdb->prepare( ' AND e.user_id=%d', $args['user_id'] );
575 410 }
576 411
577 - if ( str_contains( $where, ' GROUP BY ' ) ) {
412 + if ( strpos( $where, ' GROUP BY ' ) ) {
578 413 // don't inject WHERE filtering after GROUP BY
579 414 $parts = explode( ' GROUP BY ', $where );
580 415 $where = $parts[0];
581 416 $where .= $draft_where . $user_where;
@@ -587,30 +422,20 @@
587 422 // The query has already been prepared
588 423 $query[] = FrmDb::prepend_and_or_where( ' WHERE ', $where ) . $order_by . $limit;
589 424 }
590 425
591 - /**
592 - * @param array|string $search
593 - * @param int|string $field_id
594 - * @param string $operator
595 - *
596 - * @return array
597 - */
598 426 public static function search_entry_metas( $search, $field_id, $operator ) {
599 427 $cache_key = 'search_' . FrmAppHelper::maybe_json_encode( $search ) . $field_id . $operator;
600 428 $results = wp_cache_get( $cache_key, 'frm_entry' );
601 -
602 429 if ( false !== $results ) {
603 430 return $results;
604 431 }
605 432
606 433 global $wpdb;
607 -
608 434 if ( is_array( $search ) ) {
609 435 $where = '';
610 -
611 436 foreach ( $search as $field => $value ) {
612 - if ( $value <= 0 || ! in_array( $field, array( 'year', 'month', 'day' ), true ) ) {
437 + if ( $value <= 0 || ! in_array( $field, array( 'year', 'month', 'day' ) ) ) {
613 438 continue;
614 439 }
615 440
616 441 switch ( $field ) {
@@ -622,23 +447,20 @@
622 447 break;
623 448 case 'day':
624 449 $value = '%' . $value . '%';
625 450 }
626 -
627 - $where .= $wpdb->prepare( ' meta_value ' . $operator . ' %s and', $value ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
451 + $where .= $wpdb->prepare( ' meta_value ' . $operator . ' %s and', $value ); // WPCS: unprepared SQL ok.
628 452 }
629 -
630 453 $where .= $wpdb->prepare( ' field_id=%d', $field_id );
631 - $query = 'SELECT DISTINCT item_id FROM ' . $wpdb->prefix . 'frm_item_metas' . FrmDb::prepend_and_or_where( ' WHERE ', $where );
454 + $query = 'SELECT DISTINCT item_id FROM ' . $wpdb->prefix . 'frm_item_metas' . FrmDb::prepend_and_or_where( ' WHERE ', $where );
632 455 } else {
633 - if ( $operator === 'LIKE' ) {
456 + if ( $operator == 'LIKE' ) {
634 457 $search = '%' . $search . '%';
635 458 }
459 + $query = $wpdb->prepare( "SELECT DISTINCT item_id FROM {$wpdb->prefix}frm_item_metas WHERE meta_value {$operator} %s and field_id = %d", $search, $field_id ); // WPCS: unprepared SQL ok.
460 + }
636 461
637 - $query = $wpdb->prepare( "SELECT DISTINCT item_id FROM {$wpdb->prefix}frm_item_metas WHERE meta_value {$operator} %s and field_id = %d", $search, $field_id ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQL.InterpolatedNotPrepared, SlevomatCodingStandard.Files.LineLength.LineTooLong
638 - }//end if
639 -
640 - $results = $wpdb->get_col( $query, 0 ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
462 + $results = $wpdb->get_col( $query, 0 ); // WPCS: unprepared SQL ok.
641 463 FrmDb::set_cache( $cache_key, $results, 'frm_entry' );
642 464
643 465 return $results;
644 466 }