Ticket #2646: 2646.patch
File 2646.patch, 8.5 KB (added by , 15 years ago) |
---|
-
bp-activity.php
494 494 495 495 'search_terms' => false, // Pass search terms as a string 496 496 'show_hidden' => false, // Show activity items that are hidden site-wide? 497 'exclude' => false, // Comma-separated list of activity IDs to exclude 497 498 498 499 /** 499 500 * Pass filters as an array -- all filter items can be multiple values comma separated: … … 512 513 extract( $r, EXTR_SKIP ); 513 514 514 515 /* Attempt to return a cached copy of the first page of sitewide activity. */ 515 if ( 1 == (int)$page && empty( $max ) && empty( $search_terms ) && empty( $filter ) && 'DESC' == $sort ) {516 if ( 1 == (int)$page && empty( $max ) && empty( $search_terms ) && empty( $filter ) && 'DESC' == $sort && empty( $exclude ) ) { 516 517 if ( !$activity = wp_cache_get( 'bp_activity_sitewide_front', 'bp' ) ) { 517 518 $activity = BP_Activity_Activity::get( $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments, $show_hidden ); 518 519 wp_cache_set( 'bp_activity_sitewide_front', $activity, 'bp' ); 519 520 } 520 521 } else 521 $activity = BP_Activity_Activity::get( $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments, $show_hidden );522 $activity = BP_Activity_Activity::get( $max, $page, $per_page, $sort, $search_terms, $filter, $display_comments, $show_hidden, $exclude ); 522 523 523 524 return apply_filters( 'bp_activity_get', $activity, &$r ); 524 525 } -
bp-activity/bp-activity-templatetags.php
15 15 16 16 var $full_name; 17 17 18 function bp_activity_template( $page, $per_page, $max, $include, $sort, $filter, $search_terms, $display_comments, $show_hidden ) {18 function bp_activity_template( $page, $per_page, $max, $include, $sort, $filter, $search_terms, $display_comments, $show_hidden, $exclude ) { 19 19 global $bp; 20 20 21 21 $this->pag_page = isset( $_REQUEST['acpage'] ) ? intval( $_REQUEST['acpage'] ) : $page; … … 31 31 if ( !empty( $include ) ) 32 32 $this->activities = bp_activity_get_specific( array( 'activity_ids' => explode( ',', $include ), 'max' => $max, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'sort' => $sort, 'display_comments' => $display_comments ) ); 33 33 else 34 $this->activities = bp_activity_get( array( 'display_comments' => $display_comments, 'max' => $max, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'sort' => $sort, 'search_terms' => $search_terms, 'filter' => $filter, 'show_hidden' => $show_hidden ) );34 $this->activities = bp_activity_get( array( 'display_comments' => $display_comments, 'max' => $max, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'sort' => $sort, 'search_terms' => $search_terms, 'filter' => $filter, 'show_hidden' => $show_hidden, 'exclude' => $exclude ) ); 35 35 36 36 if ( !$max || $max >= (int)$this->activities['total'] ) 37 37 $this->total_activity_count = (int)$this->activities['total']; … … 141 141 */ 142 142 $user_id = false; 143 143 $include = false; 144 $exclude = false; 144 145 $show_hidden = false; 145 146 $object = false; 146 147 $primary_id = false; … … 165 166 /* Note: any params used for filtering can be a single value, or multiple values comma separated. */ 166 167 $defaults = array( 167 168 'display_comments' => 'threaded', // false for none, stream/threaded - show comments in the stream or threaded under items 168 'include' => $include, // pass an activity_id or string of ID's comma separated 169 'include' => $include, // pass an activity_id or string of IDs comma-separated 170 'exclude' => $exclude, // pass an activity_id or string of IDs comma-separated 169 171 'sort' => 'DESC', // sort DESC or ASC 170 172 'page' => 1, // which page to load 171 173 'per_page' => 20, // number of items per page … … 253 255 else if ( !empty( $user_id ) || !empty( $object ) || !empty( $action ) || !empty( $primary_id ) || !empty( $secondary_id ) ) 254 256 $filter = array( 'user_id' => $user_id, 'object' => $object, 'action' => $action, 'primary_id' => $primary_id, 'secondary_id' => $secondary_id ); 255 257 256 $activities_template = new BP_Activity_Template( $page, $per_page, $max, $include, $sort, $filter, $search_terms, $display_comments, $show_hidden );258 $activities_template = new BP_Activity_Template( $page, $per_page, $max, $include, $sort, $filter, $search_terms, $display_comments, $show_hidden, $exclude ); 257 259 258 260 return apply_filters( 'bp_has_activities', $activities_template->has_activities(), &$activities_template ); 259 261 } -
bp-activity/bp-activity-classes.php
68 68 if ( !$this->primary_link ) 69 69 $this->primary_link = $bp->loggedin_user->domain; 70 70 71 / * If we have an existing ID, update the activity item, otherwise insert it. */71 // If we have an existing ID, update the activity item, otherwise insert it. 72 72 if ( $this->id ) 73 73 $q = $wpdb->prepare( "UPDATE {$bp->activity->table_name} SET user_id = %d, component = %s, type = %s, action = %s, content = %s, primary_link = %s, date_recorded = %s, item_id = %s, secondary_item_id = %s, hide_sitewide = %d WHERE id = %d", $this->user_id, $this->component, $this->type, $this->action, $this->content, $this->primary_link, $this->date_recorded, $this->item_id, $this->secondary_item_id, $this->hide_sitewide, $this->id ); 74 74 else … … 84 84 return true; 85 85 } 86 86 87 / * Static Functions */87 // Static Functions 88 88 89 function get( $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $search_terms = false, $filter = false, $display_comments = false, $show_hidden = false ) {89 function get( $max = false, $page = 1, $per_page = 25, $sort = 'DESC', $search_terms = false, $filter = false, $display_comments = false, $show_hidden = false, $exclude = false ) { 90 90 global $wpdb, $bp; 91 91 92 / * Select conditions */92 // Select conditions 93 93 $select_sql = "SELECT a.*, u.user_email, u.user_nicename, u.user_login, u.display_name"; 94 94 95 95 $from_sql = " FROM {$bp->activity->table_name} a LEFT JOIN {$wpdb->users} u ON a.user_id = u.ID"; 96 96 97 / * Where conditions */97 // Where conditions 98 98 $where_conditions = array(); 99 99 100 / * Filtering */100 // Filtering 101 101 if ( $filter && $filter_sql = BP_Activity_Activity::get_filter_sql( $filter ) ) 102 102 $where_conditions['filter_sql'] = $filter_sql; 103 103 104 / * Sorting */104 // Sorting 105 105 if ( $sort != 'ASC' && $sort != 'DESC' ) 106 106 $sort = 'DESC'; 107 107 108 / * Hide Hidden Items? */108 // Hide Hidden Items? 109 109 if ( !$show_hidden ) 110 110 $where_conditions['hidden_sql'] = "a.hide_sitewide = 0"; 111 112 // Exclude specified items 113 if ( $exclude ) 114 $where_conditions['exclude'] = "a.id NOT IN ({$exclude})"; 111 115 112 /* Alter the query based on whether we want to show activity item comments in the stream like normal comments or threaded below the activity */ 116 // Alter the query based on whether we want 117 // to show activity item comments in the stream 118 // like normal comments or threaded below the activity 113 119 if ( !$display_comments || 'threaded' == $display_comments ) { 114 120 $where_conditions[] = "a.type != 'activity_comment'"; 115 121 } 116 122 117 123 $where_sql = 'WHERE ' . join( ' AND ', $where_conditions ); 118 124 119 / * Searching */125 // Searching 120 126 if ( $search_terms ) { 121 127 $search_terms = $wpdb->escape( $search_terms ); 122 128 … … 136 142 137 143 $total_activities = $wpdb->get_var( $wpdb->prepare( "SELECT count(a.id) FROM {$bp->activity->table_name} a {$where_sql} ORDER BY a.date_recorded {$sort}" ) ); 138 144 139 / * Get the fullnames of users so we don't have to query in the loop */145 // Get the fullnames of users so we don't have to query in the loop 140 146 if ( bp_is_active( 'xprofile' ) && $activities ) { 141 147 foreach ( (array)$activities as $activity ) { 142 148 if ( (int)$activity->user_id ) … … 163 169 if ( $activities && $display_comments ) 164 170 $activities = BP_Activity_Activity::append_comments( &$activities ); 165 171 166 / * If $max is set, only return up to the max results */172 // If $max is set, only return up to the max results 167 173 if ( !empty( $max ) ) { 168 174 if ( (int)$total_activities > (int)$max ) 169 175 $total_activities = $max; … … 195 201 if ( $display_comments ) 196 202 $activities = BP_Activity_Activity::append_comments( $activities ); 197 203 198 / * If $max is set, only return up to the max results */204 // If $max is set, only return up to the max results 199 205 if ( !empty( $max ) ) { 200 206 if ( (int)$total_activities > (int)$max ) 201 207 $total_activities = $max;