Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
01/28/2015 10:50:33 PM (11 years ago)
Author:
johnjamesjacoby
Message:

Move $user_id abstraction out of bp_get_activities() and into their respective scope filters.

This fixes a regression from Activity Query scope improvements causing private and hidden group activity queries to intersect with user ID's, resulting in unexpected activity stream items being displayed.

Tests included in r9405.

Props r-a-y. Fixes #6169.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-friends/bp-friends-activity.php

    r9372 r9406  
    239239 * @return array
    240240 */
    241 function bp_friends_filter_activity_scope( $retval, $filter ) {
    242     $friends = friends_get_friend_user_ids( $filter['user_id'] );
    243 
     241function bp_friends_filter_activity_scope( $retval = array(), $filter = array() ) {
     242
     243    // Determine the user_id
     244    if ( ! empty( $filter['user_id'] ) ) {
     245        $user_id = $filter['user_id'];
     246    } else {
     247        $user_id = bp_displayed_user_id()
     248            ? bp_displayed_user_id()
     249            : bp_loggedin_user_id();
     250    }
     251
     252    // Determine friends of user
     253    $friends = friends_get_friend_user_ids( $user_id );
    244254    if ( empty( $friends ) ) {
    245255        $friends = array( 0 );
    246256    }
    247257
    248     $retval= array(
     258    $retval = array(
    249259        'relation' => 'AND',
    250260        array(
     
    253263            'value'   => (array) $friends
    254264        ),
     265
    255266        // we should only be able to view sitewide activity content for friends
    256267        array(
     
    258269            'value'  => 0
    259270        ),
     271
     272        // overrides
     273        'override' => array(
     274            'filter'      => array( 'user_id' => 0 ),
     275            'show_hidden' => true
     276        ),
    260277    );
    261 
    262     // wipe out the user ID
    263     $retval['override']['filter']['user_id'] = 0;
    264 
    265     // make sure we aren't limiting items by 'hide_sitewide' since we're already
    266     // limiting it above
    267     $retval['override']['show_hidden'] = true;
    268278
    269279    return $retval;
     
    282292 * @return array
    283293 */
    284 function bp_friends_filter_activity_just_me_scope( $retval, $filter ) {
     294function bp_friends_filter_activity_just_me_scope( $retval = array(), $filter = array() ) {
     295
     296    // Determine the user_id
     297    if ( ! empty( $filter['user_id'] ) ) {
     298        $user_id = $filter['user_id'];
     299    } else {
     300        $user_id = bp_displayed_user_id()
     301            ? bp_displayed_user_id()
     302            : bp_loggedin_user_id();
     303    }
     304
    285305    // Get the requested action
    286306    $action = $filter['filter']['action'];
     
    294314
    295315    /**
    296      * If filtering activities for something other than the friendship_created action
    297      * return without changing anything
     316     * If filtering activities for something other than the friendship_created
     317     * action return without changing anything
    298318     */
    299319    if ( ! empty( $action ) && ! isset( $action['friendship_created'] ) ) {
    300320        return $retval;
     321    }
     322
     323    // Juggle existing override value
     324    $override = array();
     325    if ( ! empty( $retval['override'] ) ) {
     326        $override = $retval['override'];
     327        unset( $retval['override'] );
    301328    }
    302329
     
    306333     * - user has been requested a friendship
    307334     */
    308     return array(
     335    $retval = array(
    309336        'relation' => 'OR',
    310         array(
    311             'column' => 'user_id',
    312             'value'  => $filter['user_id']
    313         ),
     337        $retval,
    314338        array(
    315339            'relation' => 'AND',
     
    320344            array(
    321345                'column' => 'secondary_item_id',
    322                 'value'  => $filter['user_id'],
     346                'value'  => $user_id,
    323347            ),
    324         ),
    325         'override' => array(
    326             'display_comments' => 'stream',
    327             'filter'           => array( 'user_id' => 0 ),
    328         ),
     348        )
    329349    );
     350
     351    // Juggle back override value
     352    if ( ! empty( $override ) ) {
     353        $retval['override'] = $override;
     354    }
     355
     356    return $retval;
    330357}
    331358add_filter( 'bp_activity_set_just-me_scope_args', 'bp_friends_filter_activity_just_me_scope', 20, 2 );
Note: See TracChangeset for help on using the changeset viewer.