Changeset 3746820 for formidable/trunk/classes/models/FrmEntryMeta.php
- Timestamp:
- 10/14/2026 04:54:36 PM (2 weeks ago)
- File:
-
- 1 edited
-
formidable/trunk/classes/models/FrmEntryMeta.php (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
formidable/trunk/classes/models/FrmEntryMeta.php
r3688662 r3746820 5 5 6 6 class FrmEntryMeta { 7 8 /** 9 * Whether every entry meta write exposes the synchronization hooks. 10 * 11 * @since 7.0 12 * 13 * @return bool 14 */ 15 public static function supports_entry_meta_change_hooks() { 16 return true; 17 } 18 19 /** 20 * Notify integrations before changing entry metadata. 21 * 22 * @since 7.0 23 * 24 * @param int $entry_id Entry ID. 25 * @param int $field_id Field ID. 26 * 27 * @return void 28 */ 29 private static function before_meta_change( $entry_id, $field_id ) { 30 do_action( 'frm_before_entry_meta_change', $entry_id, $field_id ); 31 } 7 32 8 33 /** … … 34 59 35 60 self::set_value_before_save( $new_values, $field ); 36 $new_values = apply_filters( 'frm_add_entry_meta', $new_values ); 61 $new_values = apply_filters( 'frm_add_entry_meta', $new_values ); 62 $entry_id = $new_values['item_id']; 63 $field_id = $new_values['field_id']; 64 self::before_meta_change( $entry_id, $field_id ); 37 65 $query_results = $wpdb->insert( $wpdb->prefix . 'frm_item_metas', $new_values ); 38 66 39 67 if ( $query_results ) { 68 $meta_id = $wpdb->insert_id; 40 69 self::clear_cache(); 41 70 wp_cache_delete( $entry_id, 'frm_entry' ); 42 return $wpdb->insert_id; 43 } 44 71 /** 72 * Fires after an entry meta value is inserted, updated, or deleted. 73 * 74 * @since 7.0 75 * 76 * @param int $entry_id Entry ID. 77 * @param int $field_id Field ID. 78 */ 79 do_action( 'frm_after_entry_meta_change', $entry_id, $field_id ); 80 return $meta_id; 81 } 82 83 do_action( 'frm_entry_meta_write_failed', $entry_id, $field_id ); 45 84 return 0; 46 85 } … … 83 122 self::clear_cache(); 84 123 85 return $wpdb->update( $wpdb->prefix . 'frm_item_metas', array( 'meta_value' => $meta_value ), $where_values ); 124 self::before_meta_change( $entry_id, $field_id ); 125 $result = $wpdb->update( $wpdb->prefix . 'frm_item_metas', array( 'meta_value' => $meta_value ), $where_values ); 126 127 if ( false === $result ) { 128 do_action( 'frm_entry_meta_write_failed', $entry_id, $field_id ); 129 } else { 130 do_action( 'frm_after_entry_meta_change', $entry_id, $field_id ); 131 } 132 133 return $result; 86 134 } 87 135 … … 200 248 FrmDb::get_where_clause_and_values( $where ); 201 249 250 foreach ( $field_ids_to_remove as $field_id ) { 251 self::before_meta_change( $entry_id, $field_id ); 252 } 253 202 254 // Delete any leftovers 203 255 $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 204 256 self::clear_cache(); 257 258 foreach ( $field_ids_to_remove as $field_id ) { 259 do_action( 'frm_after_entry_meta_change', $entry_id, $field_id ); 260 } 205 261 } 206 262 … … 240 296 self::clear_cache(); 241 297 242 return $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}frm_item_metas WHERE field_id=%d AND item_id=%d", $field_id, $entry_id ) ); 298 self::before_meta_change( $entry_id, $field_id ); 299 $result = $wpdb->query( $wpdb->prepare( 'DELETE FROM %i WHERE field_id = %d AND item_id = %d', $wpdb->prefix . 'frm_item_metas', $field_id, $entry_id ) ); 300 301 if ( false === $result ) { 302 do_action( 'frm_entry_meta_write_failed', $entry_id, $field_id ); 303 } else { 304 do_action( 'frm_after_entry_meta_change', $entry_id, $field_id ); 305 } 306 307 return $result; 243 308 } 244 309 … … 501 566 502 567 /** 568 * Get the entry status to query when a numeric is_draft value is requested. 569 * 570 * @since 7.0 571 * 572 * @param int|string $is_draft 573 * 574 * @return int 575 */ 576 private static function get_numeric_draft_status( $is_draft ) { 577 $is_draft = absint( $is_draft ); 578 579 if ( FrmSpamEntriesHelper::SPAM_ENTRY_STATUS === $is_draft || class_exists( 'FrmAbandonmentHooksController', false ) ) { 580 return $is_draft; 581 } 582 583 return FrmEntriesHelper::DRAFT_ENTRY_STATUS; 584 } 585 586 /** 503 587 * @param array|string $where 504 588 * @param string $order_by … … 544 628 $where['e.is_draft'] = 0; 545 629 } elseif ( is_numeric( $args['is_draft'] ) ) { 546 $where['e.is_draft'] = class_exists( 'FrmAbandonmentHooksController', false ) ? absint( $args['is_draft'] ) : 1; 547 } elseif ( 'both' === $args['is_draft'] && class_exists( 'FrmAbandonmentHooksController', false ) ) { 548 $where['e.is_draft'] = array( 0, 1 ); 630 $where['e.is_draft'] = self::get_numeric_draft_status( $args['is_draft'] ); 631 } elseif ( 'both' === $args['is_draft'] ) { 632 // Submitted and draft entries. Spam is left out. 633 $where['e.is_draft'] = array( (string) FrmEntriesHelper::SUBMITTED_ENTRY_STATUS, (string) FrmEntriesHelper::DRAFT_ENTRY_STATUS ); 549 634 } elseif ( str_contains( $args['is_draft'], ',' ) ) { 550 635 $is_draft = array_reduce( … … 582 667 if ( ! $args['is_draft'] ) { 583 668 $draft_where = $wpdb->prepare( ' AND e.is_draft=%d', 0 ); 584 } elseif ( $args['is_draft'] == 1 ) { // phpcs:ignore Universal.Operators.StrictComparisons 585 $draft_where = $wpdb->prepare( ' AND e.is_draft=%d', 1 ); 669 } elseif ( is_numeric( $args['is_draft'] ) ) { 670 $draft_where = $wpdb->prepare( ' AND e.is_draft=%d', self::get_numeric_draft_status( $args['is_draft'] ) ); 671 } elseif ( 'both' === $args['is_draft'] ) { 672 $draft_where = $wpdb->prepare( ' AND e.is_draft IN (%d, %d)', FrmEntriesHelper::SUBMITTED_ENTRY_STATUS, FrmEntriesHelper::DRAFT_ENTRY_STATUS ); 673 } elseif ( 'all' !== $args['is_draft'] ) { 674 $draft_where = $wpdb->prepare( ' AND ( e.is_draft!=%d OR e.is_draft IS NULL )', FrmSpamEntriesHelper::SPAM_ENTRY_STATUS ); 586 675 } 587 676
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)