PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 4.07.01
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v4.07.01
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 +18 -51 6.44.07.01 View file →
@@ -5,14 +5,11 @@
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
9 + * @param string $meta_key
13 10 */
14 - public static function add_entry_meta( $entry_id, $field_id, $meta_key, $meta_value ) {
11 + public static function add_entry_meta( $entry_id, $field_id, $meta_key = null, $meta_value ) {
15 12 global $wpdb;
16 13
17 14 if ( FrmAppHelper::is_empty_value( $meta_value ) ) {
18 15 // don't save blank fields
@@ -49,9 +46,9 @@
49 46 * @param array|string $meta_value
50 47 *
51 48 * @return bool|false|int
52 49 */
53 - public static function update_entry_meta( $entry_id, $field_id, $meta_key, $meta_value ) {
50 + public static function update_entry_meta( $entry_id, $field_id, $meta_key = null, $meta_value ) {
54 51 if ( ! $field_id ) {
55 52 return false;
56 53 }
57 54
@@ -159,25 +156,16 @@
159 156 );
160 157 FrmDb::get_where_clause_and_values( $where );
161 158
162 159 // Delete any leftovers
163 - $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'frm_item_metas ' . $where['where'], $where['values'] ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
160 + $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'frm_item_metas ' . $where['where'], $where['values'] ) ); // WPCS: unprepared SQL ok.
164 161 self::clear_cache();
165 162 }
166 163
167 164 public static function duplicate_entry_metas( $old_id, $new_id ) {
168 165 $metas = self::get_entry_meta_info( $old_id );
169 -
170 - /**
171 - * Allows changing entry duplicate values before save.
172 - *
173 - * @since 5.4.4
174 - *
175 - * @param array $metas The list of entry meta values.
176 - */
177 - $metas = apply_filters( 'frm_before_duplicate_entry_values', $metas );
178 166 foreach ( $metas as $meta ) {
179 - 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 );
180 168 unset( $meta );
181 169 }
182 170 self::clear_cache();
183 171 }
@@ -343,23 +331,10 @@
343 331 self::get_ids_query( $where, $order_by, $limit, $unique, $args, $query );
344 332 $query = implode( ' ', $query );
345 333
346 334 $cache_key = 'ids_' . FrmAppHelper::maybe_json_encode( $where ) . $order_by . 'l' . $limit . 'u' . $unique . FrmAppHelper::maybe_json_encode( $args );
347 - $type = 'get_' . ( ' LIMIT 1' === $limit ? 'var' : 'col' );
348 - return FrmDb::check_cache( $cache_key, 'frm_entry', $query, $type );
349 - }
350 335
351 - /**
352 - * Given a query including a form id and its child form ids, output an array of matching entry ids
353 - * If a child entry id is matched, its parent will be returned in its place
354 - *
355 - * @param array $query
356 - * @param array $args
357 - * @return array
358 - */
359 - public static function get_top_level_entry_ids( $query, $args ) {
360 - $args['return_parent_id_if_0_return_id'] = true;
361 - return self::getEntryIds( $query, '', '', true, $args );
336 + return FrmDb::check_cache( $cache_key, 'frm_entry', $query, ( $limit == ' LIMIT 1' ? 'get_var' : 'get_col' ) );
362 337 }
363 338
364 339 /**
365 340 * @param string|array $where
@@ -367,25 +342,17 @@
367 342 * @param string $limit
368 343 */
369 344 private static function get_ids_query( $where, $order_by, $limit, $unique, $args, array &$query ) {
370 345 global $wpdb;
371 - $query[] = 'SELECT';
372 - $defaults = array(
373 - 'return_parent_id' => false,
374 - 'return_parent_id_if_0_return_id' => false,
375 - );
346 + $query[] = 'SELECT';
347 +
348 + $defaults = array( 'return_parent_id' => false );
376 349 $args = array_merge( $defaults, $args );
377 350
378 - if ( $unique ) {
379 - $query[] = 'DISTINCT';
380 - }
381 -
382 - if ( $args['return_parent_id_if_0_return_id'] ) {
383 - $query[] = 'IF ( e.parent_item_id = 0, it.item_id, e.parent_item_id )';
384 - } elseif ( $args['return_parent_id'] ) {
385 - $query[] = 'e.parent_item_id';
351 + if ( $args['return_parent_id'] ) {
352 + $query[] = $unique ? 'DISTINCT(e.parent_item_id)' : 'e.parent_item_id';
386 353 } else {
387 - $query[] = 'it.item_id';
354 + $query[] = $unique ? 'DISTINCT(it.item_id)' : 'it.item_id';
388 355 }
389 356
390 357 $query[] = 'FROM ' . $wpdb->prefix . 'frm_item_metas it LEFT OUTER JOIN ' . $wpdb->prefix . 'frm_fields fi ON it.field_id=fi.id';
391 358
@@ -422,10 +389,10 @@
422 389 }
423 390
424 391 if ( strpos( $where, ' GROUP BY ' ) ) {
425 392 // don't inject WHERE filtering after GROUP BY
426 - $parts = explode( ' GROUP BY ', $where );
427 - $where = $parts[0];
393 + $parts = explode( ' GROUP BY ', $where );
394 + $where = $parts[0];
428 395 $where .= $draft_where . $user_where;
429 396 $where .= ' GROUP BY ' . $parts[1];
430 397 } else {
431 398 $where .= $draft_where . $user_where;
@@ -434,9 +401,9 @@
434 401 // The query has already been prepared
435 402 $query[] = FrmDb::prepend_and_or_where( ' WHERE ', $where ) . $order_by . $limit;
436 403 }
437 404
438 - public static function search_entry_metas( $search, $field_id, $operator ) {
405 + public static function search_entry_metas( $search, $field_id = '', $operator ) {
439 406 $cache_key = 'search_' . FrmAppHelper::maybe_json_encode( $search ) . $field_id . $operator;
440 407 $results = wp_cache_get( $cache_key, 'frm_entry' );
441 408 if ( false !== $results ) {
442 409 return $results;
@@ -459,9 +426,9 @@
459 426 break;
460 427 case 'day':
461 428 $value = '%' . $value . '%';
462 429 }
463 - $where .= $wpdb->prepare( ' meta_value ' . $operator . ' %s and', $value ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
430 + $where .= $wpdb->prepare( ' meta_value ' . $operator . ' %s and', $value ); // WPCS: unprepared SQL ok.
464 431 }
465 432 $where .= $wpdb->prepare( ' field_id=%d', $field_id );
466 433 $query = 'SELECT DISTINCT item_id FROM ' . $wpdb->prefix . 'frm_item_metas' . FrmDb::prepend_and_or_where( ' WHERE ', $where );
467 434 } else {
@@ -467,12 +434,12 @@
467 434 } else {
468 435 if ( $operator == 'LIKE' ) {
469 436 $search = '%' . $search . '%';
470 437 }
471 - $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
438 + $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.
472 439 }
473 440
474 - $results = $wpdb->get_col( $query, 0 ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
441 + $results = $wpdb->get_col( $query, 0 ); // WPCS: unprepared SQL ok.
475 442 FrmDb::set_cache( $cache_key, $results, 'frm_entry' );
476 443
477 444 return $results;
478 445 }