Changeset 6948 for trunk/bp-activity/bp-activity-classes.php
- Timestamp:
- 04/26/2013 05:46:44 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-activity/bp-activity-classes.php
r6592 r6948 145 145 'exclude' => false, // Array of ids to exclude 146 146 'in' => false, // Array of ids to limit query by (IN) 147 'meta_query' => false, // Filter by activitymeta 147 148 'filter' => false, // See self::get_filter_sql() 148 149 'search_terms' => false, // Terms to search by … … 159 160 $from_sql = " FROM {$bp->activity->table_name} a LEFT JOIN {$wpdb->users} u ON a.user_id = u.ID"; 160 161 162 $join_sql = ''; 163 161 164 // Where conditions 162 165 $where_conditions = array(); … … 198 201 } 199 202 203 // Process meta_query into SQL 204 $meta_query_sql = self::get_meta_query_sql( $meta_query ); 205 206 if ( ! empty( $meta_query_sql['join'] ) ) { 207 $join_sql .= $meta_query_sql['join']; 208 } 209 210 if ( ! empty( $meta_query_sql['where'] ) ) { 211 $where_conditions[] = $meta_query_sql['where']; 212 } 213 200 214 // Alter the query based on whether we want to show activity item 201 215 // comments in the stream like normal comments or threaded below … … 229 243 230 244 $pag_sql = $wpdb->prepare( "LIMIT %d, %d", absint( ( $page - 1 ) * $per_page ), $per_page ); 231 $activities = $wpdb->get_results( apply_filters( 'bp_activity_get_user_join_filter', "{$select_sql} {$from_sql} {$ where_sql} ORDER BY a.date_recorded {$sort} {$pag_sql}", $select_sql, $from_sql, $where_sql, $sort, $pag_sql ) );245 $activities = $wpdb->get_results( apply_filters( 'bp_activity_get_user_join_filter', "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort} {$pag_sql}", $select_sql, $from_sql, $where_sql, $sort, $pag_sql ) ); 232 246 } else { 233 $activities = $wpdb->get_results( apply_filters( 'bp_activity_get_user_join_filter', "{$select_sql} {$from_sql} {$ where_sql} ORDER BY a.date_recorded {$sort}", $select_sql, $from_sql, $where_sql, $sort ) );234 } 235 236 $total_activities_sql = apply_filters( 'bp_activity_total_activities_sql', "SELECT count(a.id) FROM {$bp->activity->table_name} a {$index_hint_sql} {$ where_sql} ORDER BY a.date_recorded {$sort}", $where_sql, $sort );247 $activities = $wpdb->get_results( apply_filters( 'bp_activity_get_user_join_filter', "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort}", $select_sql, $from_sql, $where_sql, $sort ) ); 248 } 249 250 $total_activities_sql = apply_filters( 'bp_activity_total_activities_sql', "SELECT count(a.id) FROM {$bp->activity->table_name} a {$index_hint_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort}", $where_sql, $sort ); 237 251 238 252 $total_activities = $wpdb->get_var( $total_activities_sql ); … … 283 297 284 298 return array( 'activities' => $activities, 'total' => (int) $total_activities ); 299 } 300 301 /** 302 * Get the SQL for the 'meta_query' param in BP_Activity_Activity::get() 303 * 304 * We use WP_Meta_Query to do the heavy lifting of parsing the 305 * meta_query array and creating the necessary SQL clauses. However, 306 * since BP_Activity_Activity::get() builds its SQL differently than 307 * WP_Query, we have to alter the return value (stripping the leading 308 * AND keyword from the 'where' clause). 309 * 310 * @since 1.8 311 * 312 * @param array $meta_query An array of meta_query filters. See the 313 * documentation for WP_Meta_Query for details. 314 * @return array $sql_array 'join' and 'where' clauses 315 */ 316 public static function get_meta_query_sql( $meta_query = array() ) { 317 global $wpdb; 318 319 $sql_array = array( 320 'join' => '', 321 'where' => '', 322 ); 323 324 if ( ! empty( $meta_query ) ) { 325 $activity_meta_query = new WP_Meta_Query( $meta_query ); 326 327 // WP_Meta_Query expects the table name at 328 // $wpdb->activitymeta 329 $wpdb->activitymeta = buddypress()->activity->table_name_meta; 330 331 $meta_sql = $activity_meta_query->get_sql( 'activity', 'a', 'id' ); 332 333 // Strip the leading AND - BP handles it in get() 334 $sql_array['where'] = preg_replace( '/^\sAND/', '', $meta_sql['where'] ); 335 $sql_array['join'] = $meta_sql['join']; 336 } 337 338 return $sql_array; 285 339 } 286 340
Note: See TracChangeset
for help on using the changeset viewer.