BP_Media::get_scope_query_sql( mixed $scope = false, array $r = array() )
Get the SQL for the ‘scope’ param in BP_Media::get().
Description
A scope is a predetermined set of media arguments. This method is used to grab these media arguments and override any existing args if needed.
Can handle multiple scopes.
Parameters
- $scope
-
(Optional) The media scope. Accepts string or array of scopes.
Default value: false
- $r
-
(Optional) Current activity arguments. Same as those of BP_Media::get(), but merged with defaults.
Default value: array()
Return
(false|array) 'sql' WHERE SQL string and 'override' media args.
Source
File: bp-media/classes/class-bp-media.php
public static function get_scope_query_sql( $scope = false, $r = array() ) { // Define arrays for future use. $query_args = array(); $override = array(); $retval = array(); // Check for array of scopes. if ( is_array( $scope ) ) { $scopes = $scope; // Explode a comma separated string of scopes. } elseif ( is_string( $scope ) ) { $scopes = explode( ',', $scope ); } // Bail if no scope passed. if ( empty( $scopes ) ) { return false; } // Helper to easily grab the 'user_id'. if ( ! empty( $r['filter']['user_id'] ) ) { $r['user_id'] = $r['filter']['user_id']; } // Parse each scope; yes! we handle multiples! foreach ( $scopes as $scope ) { $scope_args = array(); /** * Plugins can hook here to set their media arguments for custom scopes. * * This is a dynamic filter based on the media scope. eg: * - 'bp_media_set_groups_scope_args' * - 'bp_media_set_friends_scope_args' * * To see how this filter is used, plugin devs should check out: * - bp_groups_filter_media_scope() - used for 'groups' scope * - bp_friends_filter_media_scope() - used for 'friends' scope * * @since BuddyBoss 1.1.9 * * @param array { * Media query clauses. * @type array { * Media arguments for your custom scope. * See {@link BP_Media_Query::_construct()} for more details. * } * @type array $override Optional. Override existing media arguments passed by $r. * } * } * @param array $r Current activity arguments passed in BP_Media::get(). */ $scope_args = apply_filters( "bp_media_set_{$scope}_scope_args", array(), $r ); if ( ! empty( $scope_args ) ) { // Merge override properties from other scopes // this might be a problem... if ( ! empty( $scope_args['override'] ) ) { $override = array_merge( $override, $scope_args['override'] ); unset( $scope_args['override'] ); } // Save scope args. if ( ! empty( $scope_args ) ) { $query_args[] = $scope_args; } } } if ( ! empty( $query_args ) ) { if ( count( $scopes ) > 1 ) { // Set relation to OR. $query_args['relation'] = 'OR'; } else { // Set relation to OR. $query_args['relation'] = 'AND'; } $query = new BP_Media_Query( $query_args ); $sql = $query->get_sql(); if ( ! empty( $sql ) ) { $retval['sql'] = $sql; } } if ( ! empty( $override ) ) { $retval['override'] = $override; } return $retval; }
Changelog
Version | Description |
---|---|
BuddyBoss 1.1.9 | 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.