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.