Changeset 7771
- Timestamp:
- 02/03/2014 02:05:25 AM (12 years ago)
- Location:
- trunk/bp-activity
- Files:
-
- 2 edited
-
bp-activity-cache.php (modified) (1 diff)
-
bp-activity-classes.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-activity/bp-activity-cache.php
r7396 r7771 54 54 } 55 55 } 56 57 /** 58 * Clear a cached activity item when that item is updated. 59 * 60 * @since 2.0 61 * 62 * @param BP_Activity_Activity $activity 63 */ 64 function bp_activity_clear_cache_for_activity( $activity ) { 65 wp_cache_delete( 'activity_' . $activity->id, 'bp' ); 66 } 67 add_action( 'bp_activity_after_save', 'bp_activity_clear_cache_for_activity' ); 68 69 /** 70 * Clear cached data for deleted activity items. 71 * 72 * @since 2.0 73 * 74 * @param array $deleted_ids IDs of deleted activity items. 75 */ 76 function bp_activity_clear_cache_for_deleted_activity( $deleted_ids ) { 77 foreach ( (array) $deleted_ids as $deleted_id ) { 78 wp_cache_delete( 'activity_' . $deleted_id, 'bp' ); 79 } 80 } 81 add_action( 'bp_activity_deleted_activities', 'bp_activity_clear_cache_for_deleted_activity' ); -
trunk/bp-activity/bp-activity-classes.php
r7765 r7771 138 138 global $wpdb, $bp; 139 139 140 if ( $row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE id = %d", $this->id ) ) ) { 140 $row = wp_cache_get( 'activity_' . $this->id, 'bp' ); 141 142 if ( false === $row ) { 143 $row = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$bp->activity->table_name} WHERE id = %d", $this->id ) ); 144 } 145 146 if ( ! empty( $row ) ) { 141 147 $this->id = $row->id; 142 148 $this->item_id = $row->item_id; … … 477 483 $bp = buddypress(); 478 484 479 // Format the activity ID's for use in the query below 480 $activity_ids_sql = implode( ',', wp_parse_id_list( $activity_ids ) ); 481 482 // First fetch data from activity table, preserving order 483 $activities = $wpdb->get_results( "SELECT * FROM {$bp->activity->table_name} WHERE id IN ({$activity_ids_sql}) ORDER BY FIELD( id, {$activity_ids_sql} )"); 485 $activities = array(); 486 $query_aids = array(); 487 488 foreach ( $activity_ids as $activity_id ) { 489 490 // If cached data is found, use it 491 if ( $activity_data = wp_cache_get( 'activity_' . $activity_id, 'bp' ) ) { 492 $activities[ $activity_id ] = $activity_data; 493 494 // Otherwise leave a placeholder so we don't lose the order 495 } else { 496 $activities[ $activity_id ] = ''; 497 498 // Add to the list to be queried 499 $query_aids[] = $activity_id; 500 } 501 } 502 503 // Fetch activity data from the DB if necessary 504 if ( ! empty( $query_aids ) ) { 505 // Format the activity ID's for use in the query below 506 $query_aids_sql = implode( ',', wp_parse_id_list( $query_aids ) ); 507 508 // Fetch data from activity table, preserving order 509 $queried_adata = $wpdb->get_results( "SELECT * FROM {$bp->activity->table_name} WHERE id IN ({$query_aids_sql}) ORDER BY FIELD( id, {$query_aids_sql} )"); 510 511 // Put that data into the placeholders created earlier, 512 // and add it to the cache 513 foreach ( (array) $queried_adata as $adata ) { 514 $activities[ $adata->id ] = $adata; 515 wp_cache_set( 'activity_' . $adata->id, $adata, 'bp' ); 516 } 517 } 518 519 // Reset indexes 520 $activities = array_values( $activities ); 484 521 485 522 // Then fetch user data
Note: See TracChangeset
for help on using the changeset viewer.