BP_Document::get_scope_query_sql( mixed $scope = false, array $r = array() )
Get the SQL for the ‘scope’ param in BP_Document::get().
Description
A scope is a predetermined set of document arguments. This method is used to grab these document arguments and override any existing args if needed. Can handle multiple scopes.
Parameters
- $scope
-
(Optional) The document scope. Accepts string or array of scopes.
Default value: false
- $r
-
(Optional) Current activity arguments. Same as those of BP_document::get(), but merged with defaults.
Default value: array()
Return
(false|array) 'sql' WHERE SQL string and 'override' document args.
Source
File: bp-document/classes/class-bp-document.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 document arguments for custom scopes. * This is a dynamic filter based on the document scope. eg: * - 'bp_document_set_groups_scope_args' * - 'bp_document_set_friends_scope_args' * To see how this filter is used, plugin devs should check out: * - bp_groups_filter_document_scope() - used for 'groups' scope * - bp_friends_filter_document_scope() - used for 'friends' scope * * @param array { * Document query clauses. * * @type array { * Document arguments for your custom scope. * See {@link BP_Document_Query::_construct()} for more details. * } * @type array $override Optional. Override existing document arguments passed by $r. * } * } * * @param array $r Current activity arguments passed in BP_Document::get(). * * @since BuddyBoss 1.4.0 */ $scope_args = apply_filters( "bp_document_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 ) ) { // Set relation to OR. $query_args['relation'] = 'OR'; $query = new BP_Document_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.4.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.