PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 5.0
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v5.0
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/FrmEntry.php +16 -86 6.55.0 View file →
@@ -68,11 +68,8 @@
68 68 if ( ! $entry_exists || ! isset( $values['item_meta'] ) ) {
69 69 return false;
70 70 }
71 71
72 - global $frm_vars;
73 - $frm_vars['checking_duplicates'] = true;
74 -
75 72 $is_duplicate = false;
76 73 foreach ( $entry_exists as $entry_exist ) {
77 74 $is_duplicate = true;
78 75
@@ -118,10 +115,8 @@
118 115 break;
119 116 }
120 117 }
121 118
122 - $frm_vars['checking_duplicates'] = false;
123 -
124 119 return $is_duplicate;
125 120 }
126 121
127 122 /**
@@ -250,30 +245,19 @@
250 245
251 246 return $query_results;
252 247 }
253 248
254 - /**
255 - * Delete an entry.
256 - *
257 - * @param string|int $id
258 - * @return bool True on success, false if nothing was deleted.
259 - */
260 249 public static function destroy( $id ) {
261 250 global $wpdb;
262 251 $id = (int) $id;
263 252
264 - $entry = self::getOne( $id, true ); // Item meta is required for conditional logic in actions with 'delete' events.
253 + $entry = self::getOne( $id );
265 254 if ( ! $entry ) {
266 255 $result = false;
256 +
267 257 return $result;
268 258 }
269 259
270 - /**
271 - * Trigger an action to run custom logic before the entry is deleted.
272 - *
273 - * @param int $id The id of the entry that was destroyed.
274 - * @param stdClass $entry The entry object.
275 - */
276 260 do_action( 'frm_before_destroy_entry', $id, $entry );
277 261
278 262 $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'frm_item_metas WHERE item_id=%d', $id ) );
279 263 $result = $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'frm_items WHERE id=%d', $id ) );
@@ -279,19 +263,8 @@
279 263 $result = $wpdb->query( $wpdb->prepare( 'DELETE FROM ' . $wpdb->prefix . 'frm_items WHERE id=%d', $id ) );
280 264
281 265 self::clear_cache();
282 266
283 - /**
284 - * Trigger an action to run custom logic after the entry is deleted.
285 - * Use this hook if you need to update caching after an entry is deleted.
286 - *
287 - * @since 5.4.1
288 - *
289 - * @param int $id The id of the entry that was destroyed.
290 - * @param stdClass $entry The entry object.
291 - */
292 - do_action( 'frm_after_destroy_entry', $id, $entry );
293 -
294 267 return $result;
295 268 }
296 269
297 270 public static function update_form( $id, $value, $form_id ) {
@@ -355,9 +328,9 @@
355 328 LEFT OUTER JOIN {$wpdb->prefix}frm_forms fr ON it.form_id=fr.id WHERE ";
356 329
357 330 $query .= is_numeric( $id ) ? 'it.id=%d' : 'it.item_key=%s';
358 331 $query_args = array( $id );
359 - $query = $wpdb->prepare( $query, $query_args ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
332 + $query = $wpdb->prepare( $query, $query_args ); // WPCS: unprepared SQL ok.
360 333
361 334 if ( ! $meta ) {
362 335 $entry = FrmDb::check_cache( $id . '_nometa', 'frm_entry', $query, 'get_row' );
363 336 self::prepare_entry( $entry );
@@ -369,9 +342,9 @@
369 342 self::prepare_entry( $entry );
370 343 return $entry;
371 344 }
372 345
373 - $entry = $wpdb->get_row( $query ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
346 + $entry = $wpdb->get_row( $query ); // WPCS: unprepared SQL ok.
374 347 $entry = self::get_meta( $entry );
375 348 self::prepare_entry( $entry );
376 349
377 350 return $entry;
@@ -414,9 +387,9 @@
414 387 array(
415 388 'item_id' => $entry->id,
416 389 'field_id !' => 0,
417 390 ),
418 - 'field_id, meta_value, field_key, item_id, f.type'
391 + 'field_id, meta_value, field_key, item_id'
419 392 );
420 393
421 394 $entry->metas = array();
422 395
@@ -421,11 +394,10 @@
421 394 $entry->metas = array();
422 395
423 396 $include_key = apply_filters( 'frm_include_meta_keys', false, array( 'form_id' => $entry->form_id ) );
424 397 foreach ( $metas as $meta_val ) {
425 - FrmFieldsHelper::prepare_field_value( $meta_val->meta_value, $meta_val->type );
426 -
427 398 if ( $meta_val->item_id == $entry->id ) {
399 + FrmAppHelper::unserialize_or_decode( $meta_val->meta_value );
428 400 $entry->metas[ $meta_val->field_id ] = $meta_val->meta_value;
429 401 if ( $include_key ) {
430 402 $entry->metas[ $meta_val->field_key ] = $entry->metas[ $meta_val->field_id ];
431 403 }
@@ -436,8 +408,9 @@
436 408 if ( ! isset( $entry->metas[ $meta_val->field_id ] ) ) {
437 409 $entry->metas[ $meta_val->field_id ] = array();
438 410 }
439 411
412 + FrmAppHelper::unserialize_or_decode( $meta_val->meta_value );
440 413 $entry->metas[ $meta_val->field_id ][] = $meta_val->meta_value;
441 414
442 415 unset( $meta_val );
443 416 }
@@ -478,9 +451,9 @@
478 451 $cache_key = FrmAppHelper::maybe_json_encode( $where ) . $order_by . $limit . $inc_form;
479 452 $entries = wp_cache_get( $cache_key, 'frm_entry' );
480 453
481 454 if ( false === $entries ) {
482 - $fields = 'it.id, it.item_key, it.name, it.ip, it.form_id, it.post_id, it.user_id, it.parent_item_id, it.updated_by, it.created_at, it.updated_at, it.is_draft, it.description';
455 + $fields = 'it.id, it.item_key, it.name, it.ip, it.form_id, it.post_id, it.user_id, it.parent_item_id, it.updated_by, it.created_at, it.updated_at, it.is_draft';
483 456 $table = $wpdb->prefix . 'frm_items it ';
484 457
485 458 if ( $inc_form ) {
486 459 $fields = 'it.*, fr.name as form_name,fr.form_key as form_key';
@@ -487,16 +460,18 @@
487 460 $table .= 'LEFT OUTER JOIN ' . $wpdb->prefix . 'frm_forms fr ON it.form_id=fr.id ';
488 461 }
489 462
490 463 if ( preg_match( '/ meta_([0-9]+)/', $order_by, $order_matches ) ) {
491 - $fields .= self::sort_by_field( $order_matches[1] );
492 - unset( $order_matches );
464 + // sort by a requested field
465 + $field_id = (int) $order_matches[1];
466 + $fields .= ', (SELECT meta_value FROM ' . $wpdb->prefix . 'frm_item_metas WHERE field_id = ' . $field_id . ' AND item_id = it.id) as meta_' . $field_id;
467 + unset( $order_matches, $field_id );
493 468 }
494 469
495 470 // prepare the query
496 471 $query = 'SELECT ' . $fields . ' FROM ' . $table . FrmDb::prepend_and_or_where( ' WHERE ', $where ) . $order_by . $limit;
497 472
498 - $entries = $wpdb->get_results( $query, OBJECT_K ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
473 + $entries = $wpdb->get_results( $query, OBJECT_K ); // WPCS: unprepared SQL ok.
499 474 unset( $query );
500 475
501 476 FrmDb::set_cache( $cache_key, $entries, 'frm_entry' );
502 477 }
@@ -517,13 +492,9 @@
517 492 } else {
518 493 $meta_where['item_id'] = array_keys( $entries );
519 494 }
520 495
521 - $metas = FrmDb::get_results(
522 - $wpdb->prefix . 'frm_item_metas it LEFT OUTER JOIN ' . $wpdb->prefix . 'frm_fields fi ON it.field_id = fi.id',
523 - $meta_where,
524 - 'item_id, meta_value, field_id, field_key, form_id, fi.type'
525 - );
496 + $metas = FrmDb::get_results( $wpdb->prefix . 'frm_item_metas it LEFT OUTER JOIN ' . $wpdb->prefix . 'frm_fields fi ON (it.field_id = fi.id)', $meta_where, 'item_id, meta_value, field_id, field_key, form_id' );
526 497
527 498 unset( $meta_where );
528 499
529 500 if ( ! $metas ) {
@@ -539,9 +510,9 @@
539 510 if ( ! isset( $entries[ $meta_val->item_id ]->metas ) ) {
540 511 $entries[ $meta_val->item_id ]->metas = array();
541 512 }
542 513
543 - FrmFieldsHelper::prepare_field_value( $meta_val->meta_value, $meta_val->type );
514 + FrmAppHelper::unserialize_or_decode( $meta_val->meta_value );
544 515 $entries[ $meta_val->item_id ]->metas[ $meta_val->field_id ] = $meta_val->meta_value;
545 516 unset( $m_key, $meta_val );
546 517 }
547 518
@@ -555,28 +526,8 @@
555 526 self::prepare_entries( $entries );
556 527 return $entries;
557 528 }
558 529
559 - /**
560 - * @param int $field_id
561 - * @return string
562 - */
563 - private static function sort_by_field( $field_id ) {
564 - global $wpdb;
565 - $field_id = (int) $field_id;
566 -
567 - $field_options = FrmDb::get_var( 'frm_fields', array( 'id' => $field_id ), 'field_options' );
568 - FrmAppHelper::unserialize_or_decode( $field_options );
569 -
570 - if ( empty( $field_options['post_field'] ) ) {
571 - $sort = ', (SELECT meta_value FROM ' . $wpdb->prefix . 'frm_item_metas WHERE field_id = ' . $field_id . ' AND item_id = it.id) as meta_' . $field_id;
572 - } else {
573 - $sort = '';
574 - }
575 -
576 - return apply_filters( 'frm_handle_field_column_sort', $sort, $field_id, $field_options );
577 - }
578 -
579 530 // Pagination Methods
580 531 /**
581 532 * @param int|array|string If int, use the form id.
582 533 */
@@ -754,13 +705,9 @@
754 705 *
755 706 * @return int
756 707 */
757 708 private static function get_is_draft_value( $values ) {
758 - if ( isset( $values['frm_saving_draft'] ) && FrmEntriesHelper::DRAFT_ENTRY_STATUS === (int) $values['frm_saving_draft'] ) {
759 - return FrmEntriesHelper::DRAFT_ENTRY_STATUS;
760 - }
761 -
762 - return isset( $values['is_draft'] ) ? absint( $values['is_draft'] ) : FrmEntriesHelper::SUBMITTED_ENTRY_STATUS;
709 + return ( ( isset( $values['frm_saving_draft'] ) && $values['frm_saving_draft'] == 1 ) || ( isset( $values['is_draft'] ) && $values['is_draft'] == 1 ) ) ? 1 : 0;
763 710 }
764 711
765 712 /**
766 713 * Get the created_at value for a new entry
@@ -884,29 +831,12 @@
884 831 * @since 2.0.16
885 832 *
886 833 * @param array $values
887 834 * @param int $entry_id
888 - * @return void
889 835 */
890 836 private static function maybe_add_entry_metas( $values, $entry_id ) {
891 837 if ( isset( $values['item_meta'] ) ) {
892 838 FrmEntryMeta::update_entry_metas( $entry_id, $values['item_meta'] );
893 - }
894 - self::maybe_add_captcha_meta( (int) $values['form_id'], (int) $entry_id );
895 - }
896 -
897 - /**
898 - * @since 5.0.15
899 - *
900 - * @param int $form_id
901 - * @param int $entry_id
902 - * @return void
903 - */
904 - private static function maybe_add_captcha_meta( $form_id, $entry_id ) {
905 - global $frm_vars;
906 - if ( array_key_exists( 'captcha_scores', $frm_vars ) && array_key_exists( $form_id, $frm_vars['captcha_scores'] ) ) {
907 - $captcha_score_meta = array( 'captcha_score' => $frm_vars['captcha_scores'][ $form_id ] );
908 - FrmEntryMeta::add_entry_meta( $entry_id, 0, '', maybe_serialize( $captcha_score_meta ) );
909 839 }
910 840 }
911 841
912 842 /**