BP_Activity_Activity::get_filter_sql( array $filter_array )
Create filter SQL clauses.
Description
Parameters
- $filter_array
-
(Required) Fields and values to filter by.
- 'user_id'
(array|string|int) User ID(s). - 'object'
(array|string) Corresponds to the 'component' column in the database. - 'action'
(array|string) Corresponds to the 'type' column in the database. - 'primary_id'
(array|string|int) Corresponds to the 'item_id' column in the database. - 'secondary_id'
(array|string|int) Corresponds to the 'secondary_item_id' column in the database. - 'offset'
(int) Return only those items with an ID greater than the offset value. - 'since'
(string) Return only those items that have a date_recorded value greater than a given MySQL-formatted date.
- 'user_id'
Return
(string) The filter clause, for use in a SQL query.
Source
File: bp-activity/classes/class-bp-activity-activity.php
public static function get_filter_sql( $filter_array ) { $filter_sql = array(); if ( !empty( $filter_array['user_id'] ) ) { $user_sql = BP_Activity_Activity::get_in_operator_sql( 'a.user_id', $filter_array['user_id'] ); if ( !empty( $user_sql ) ) $filter_sql[] = $user_sql; } if ( !empty( $filter_array['object'] ) ) { $object_sql = BP_Activity_Activity::get_in_operator_sql( 'a.component', $filter_array['object'] ); if ( !empty( $object_sql ) ) $filter_sql[] = $object_sql; } if ( !empty( $filter_array['action'] ) ) { $action_sql = BP_Activity_Activity::get_in_operator_sql( 'a.type', $filter_array['action'] ); if ( ! empty( $action_sql ) ) $filter_sql[] = $action_sql; } if ( !empty( $filter_array['primary_id'] ) ) { $pid_sql = BP_Activity_Activity::get_in_operator_sql( 'a.item_id', $filter_array['primary_id'] ); if ( !empty( $pid_sql ) ) $filter_sql[] = $pid_sql; } if ( !empty( $filter_array['secondary_id'] ) ) { $sid_sql = BP_Activity_Activity::get_in_operator_sql( 'a.secondary_item_id', $filter_array['secondary_id'] ); if ( !empty( $sid_sql ) ) $filter_sql[] = $sid_sql; } if ( ! empty( $filter_array['offset'] ) ) { $sid_sql = absint( $filter_array['offset'] ); $filter_sql[] = "a.id >= {$sid_sql}"; } if ( ! empty( $filter_array['since'] ) ) { // Validate that this is a proper Y-m-d H:i:s date. // Trick: parse to UNIX date then translate back. $translated_date = date( 'Y-m-d H:i:s', strtotime( $filter_array['since'] ) ); if ( $translated_date === $filter_array['since'] ) { $filter_sql[] = "a.date_recorded > '{$translated_date}'"; } } if ( empty( $filter_sql ) ) return false; return join( ' AND ', $filter_sql ); }
Changelog
Version | Description |
---|---|
BuddyPress 1.5.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.