Skip to:
Content

BuddyPress.org

Changeset 2580


Ignore:
Timestamp:
02/04/2010 10:09:40 AM (15 years ago)
Author:
apeatling
Message:

Fixes #1793 - remove querystring building from theme and querystring cookie management from core.

Location:
trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-activity/bp-activity-templatetags.php

    r2576 r2580  
    125125    $include = false;
    126126    $show_hidden = false;
    127     $search_terms = false;
    128127    $object = false;
    129     $action = false;
    130128    $primary_id = false;
    131     $display_comments = 'threaded';
    132129
    133130    /* User filtering */
    134131    if ( !empty( $bp->displayed_user->id ) )
    135132        $user_id = $bp->displayed_user->id;
    136 
    137     /* Action filtering */
    138     if ( !empty( $_COOKIE['bp-activity-filter'] ) && '-1' != $_COOKIE['bp-activity-filter'] )
    139         $action = $_COOKIE['bp-activity-filter'];
    140 
    141     /* User activity scope filtering */
    142     if ( !empty( $user_id ) || !empty( $_COOKIE['bp-activity-scope'] ) ) {
    143         $scope = ( !empty( $bp->current_action ) ) ? $bp->current_action : $_COOKIE['bp-activity-scope'];
    144         $current_user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
    145 
    146         if ( empty( $scope ) || 'just-me' == $scope )
    147             $display_comments = 'stream';
    148 
    149         switch ( $scope ) {
    150             case 'friends':
    151                 if ( function_exists( 'friends_get_friend_user_ids' ) )
    152                     $user_id = implode( ',', (array)friends_get_friend_user_ids( $current_user_id ) );
    153                 break;
    154             case 'groups':
    155                 if ( function_exists( 'groups_get_user_groups' ) ) {
    156                     $groups = groups_get_user_groups( $current_user_id );
    157                     $object = $bp->groups->id;
    158                     $primary_id = implode( ',', (array)$groups['groups'] );
    159                     $show_hidden = ( $current_user_id == $bp->loggedin_user->id ) ? 1 : 0;
    160                     $user_id = false;
    161                 }
    162                 break;
    163             case 'favorites':
    164                 $favs = bp_activity_get_user_favorites( $current_user_id );
    165                 $include = implode( ',', (array)$favs );
    166                 $show_hidden = ( $current_user_id == $bp->loggedin_user->id ) ? 1 : 0;
    167                 break;
    168             case 'mentions':
    169                 $user_nicename = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->userdata->user_nicename : $bp->loggedin_user->userdata->user_nicename;
    170                 $user_login = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->userdata->user_login : $bp->loggedin_user->userdata->user_login;
    171                 $search_terms = '@' . bp_core_get_username( $current_user_id, $user_nicename, $user_login );
    172                 $show_hidden = ( $current_user_id == $bp->loggedin_user->id ) ? 1 : 0;
    173                 $display_comments = 'stream';
    174                 $user_id = false;
    175                 break;
    176         }
    177     }
    178133
    179134    /* Group filtering */
     
    192147    /* Note: any params used for filtering can be a single value, or multiple values comma separated. */
    193148    $defaults = array(
    194         'display_comments' => $display_comments, // false for none, stream/threaded - show comments in the stream or threaded under items
     149        'display_comments' => 'threaded', // false for none, stream/threaded - show comments in the stream or threaded under items
    195150        'include' => $include, // pass an activity_id or string of ID's comma separated
    196151        'sort' => 'DESC', // sort DESC or ASC
     
    200155        'show_hidden' => $show_hidden, // Show activity items that are hidden site-wide?
    201156
     157        /* Scope - pre-built activity filters for a user (friends/groups/favorites/mentions) */
     158        'scope' => $bp->current_action,
     159
    202160        /* Filtering */
    203161        'user_id' => $user_id, // user_id to filter on
    204162        'object' => $object, // object to filter on e.g. groups, profile, status, friends
    205         'action' => $action, // action to filter on e.g. activity_update, new_forum_post, profile_updated
     163        'action' => false, // action to filter on e.g. activity_update, new_forum_post, profile_updated
    206164        'primary_id' => $primary_id, // object ID to filter on e.g. a group_id or forum_id or blog_id etc.
    207165        'secondary_id' => false, // secondary object ID to filter on e.g. a post_id
    208166
    209167        /* Searching */
    210         'search_terms' => $search_terms // specify terms to search on
     168        'search_terms' => false // specify terms to search on
    211169    );
    212170
    213171    $r = wp_parse_args( $args, $defaults );
    214172    extract( $r );
     173
     174    /* If you have passed a "scope" then this will override any filters you have passed. */
     175    if ( !empty( $scope ) ) {
     176        if ( 'just-me' == $scope )
     177            $display_comments = 'stream';
     178
     179        if ( $user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id ) {
     180            switch ( $scope ) {
     181                case 'friends':
     182                    if ( function_exists( 'friends_get_friend_user_ids' ) )
     183                        $user_id = implode( ',', (array)friends_get_friend_user_ids( $user_id ) );
     184                    break;
     185                case 'groups':
     186                    if ( function_exists( 'groups_get_user_groups' ) ) {
     187                        $groups = groups_get_user_groups( $user_id );
     188                        $object = $bp->groups->id;
     189                        $primary_id = implode( ',', (array)$groups['groups'] );
     190                        $show_hidden = ( $user_id == $bp->loggedin_user->id ) ? 1 : 0;
     191                        $user_id = false;
     192                    }
     193                    break;
     194                case 'favorites':
     195                    $favs = bp_activity_get_user_favorites( $user_id );
     196                    if ( empty( $favs ) )
     197                        return false;
     198
     199                    $include = implode( ',', (array)$favs );
     200                    $show_hidden = ( $user_id == $bp->loggedin_user->id ) ? 1 : 0;
     201                    break;
     202                case 'mentions':
     203                    $user_nicename = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->userdata->user_nicename : $bp->loggedin_user->userdata->user_nicename;
     204                    $user_login = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->userdata->user_login : $bp->loggedin_user->userdata->user_login;
     205                    $search_terms = '@' . bp_core_get_username( $user_id, $user_nicename, $user_login );
     206                    $show_hidden = ( $user_id == $bp->loggedin_user->id ) ? 1 : 0;
     207                    $display_comments = 'stream';
     208                    $user_id = false;
     209                    break;
     210            }
     211        }
     212    }
    215213
    216214    if ( $max ) {
  • trunk/bp-blogs/bp-blogs-templatetags.php

    r2576 r2580  
    117117    $type = 'active';
    118118    $user_id = false;
    119     $page = 1;
     119    $search_terms = false;
    120120
    121121    /* User filtering */
    122     if ( !empty( $bp->displayed_user->id ) || 'personal' == $_COOKIE['bp-blogs-scope'] )
    123         $user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
    124 
    125     /* Action filtering */
    126     if ( !empty( $_COOKIE['bp-blogs-filter'] ) && '-1' != $_COOKIE['bp-blogs-filter'] )
    127         $type = $_COOKIE['bp-blogs-filter'];
    128 
    129     if ( !empty( $_COOKIE['bp-blogs-page'] ) && '-1' != $_COOKIE['bp-blogs-page'] )
    130         $page = $_COOKIE['bp-blogs-page'];
     122    if ( !empty( $bp->displayed_user->id ) )
     123        $user_id = $bp->displayed_user->id;
     124
     125    if ( !empty( $_REQUEST['s'] ) )
     126        $search_terms = $_REQUEST['s'];
    131127
    132128    $defaults = array(
    133129        'type' => $type,
    134         'page' => $page,
     130        'page' => 1,
    135131        'per_page' => 20,
    136132        'max' => false,
    137133
    138134        'user_id' => $user_id, // Pass a user_id to limit to only blogs this user has higher than subscriber access to
    139         'search_terms' => false // Pass search terms to filter on the blog title or description.
     135        'search_terms' => $search_terms // Pass search terms to filter on the blog title or description.
    140136    );
    141137
    142138    $r = wp_parse_args( $args, $defaults );
    143139    extract( $r );
    144 
    145     // type: active ( default ) | random | newest | alphabetical
    146 
    147     if ( !empty( $_REQUEST['s'] ) )
    148         $search_terms = $_REQUEST['s'];
    149140
    150141    if ( $max ) {
     
    154145
    155146    $blogs_template = new BP_Blogs_Template( $type, $page, $per_page, $max, $user_id, $search_terms );
    156 
    157147    return $blogs_template->has_blogs();
    158148}
  • trunk/bp-core/bp-core-templatetags.php

    r2576 r2580  
    126126    $user_id = false;
    127127    $page = 1;
     128    $search_terms = false;
    128129
    129130    /* User filtering */
    130     if ( !empty( $bp->displayed_user->id ) || 'personal' == $_COOKIE['bp-members-scope'] )
    131         $user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
    132 
    133     /* Action filtering */
    134     if ( !empty( $_COOKIE['bp-members-filter'] ) && '-1' != $_COOKIE['bp-members-filter'] )
    135         $type = $_COOKIE['bp-members-filter'];
    136 
    137     if ( !empty( $_COOKIE['bp-members-page'] ) && '-1' != $_COOKIE['bp-members-page'] )
    138         $page = $_COOKIE['bp-members-page'];
     131    if ( !empty( $bp->displayed_user->id ) )
     132        $user_id = $bp->displayed_user->id;
     133
     134    /* Pass a filter if ?s= is set. */
     135    if ( $_REQUEST['s'] )
     136        $search_terms = $_REQUEST['s'];
    139137
    140138    // type: active ( default ) | random | newest | popular | online | alphabetical
     
    148146
    149147        'user_id' => $user_id, // Pass a user_id to only show friends of this user
    150         'search_terms' => false, // Pass search_terms to filter users by their profile data
     148        'search_terms' => $search_terms, // Pass search_terms to filter users by their profile data
    151149
    152150        'populate_extras' => true // Fetch usermeta? Friend count, last active etc.
     
    160158            $per_page = $max;
    161159    }
    162 
    163     /* Pass a filter if ?s= is set. */
    164     if ( $_REQUEST['s'] )
    165         $search_terms = $_REQUEST['s'];
    166 
    167     if ( false === $user_id && $bp->displayed_user->id )
    168         $user_id = $bp->displayed_user->id;
    169160
    170161    $members_template = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras );
     
    13931384    }
    13941385
    1395 /* This function will pass a AJAX built querystring to a loop in the template */
    1396 function bp_ajax_querystring() {
    1397     global $bp;
    1398 
    1399     return apply_filters( 'bp_ajax_querystring', $bp->ajax_querystring );
    1400 }
    1401 
    14021386/* Template is_() functions to determine the current page */
    14031387
  • trunk/bp-forums/bp-forums-templatetags.php

    r2533 r2580  
    163163    $type = 'newest';
    164164    $user_id = false;
    165     $page = 1;
     165    $forum_id = false;
     166    $search_terms = false;
    166167
    167168    /* User filtering */
    168     if ( !empty( $bp->displayed_user->id ) || 'personal' == $_COOKIE['bp-forums-scope'] )
    169         $user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
    170 
    171     /* Action filtering */
    172     if ( !empty( $_COOKIE['bp-forums-filter'] ) && '-1' != $_COOKIE['bp-forums-filter'] )
    173         $type = $_COOKIE['bp-forums-filter'];
    174 
    175     if ( !empty( $_COOKIE['bp-forums-page'] ) && '-1' != $_COOKIE['bp-forums-page'] )
    176         $page = $_COOKIE['bp-forums-page'];
    177 
    178     $defaults = array(
    179         'type' => $type,
    180         'forum_id' => false,
    181         'user_id' => $user_id,
    182         'page' => $page,
    183         'per_page' => 20,
    184         'max' => false,
    185         'no_stickies' => false,
    186         'search_terms' => false
    187     );
    188 
    189     $r = wp_parse_args( $args, $defaults );
    190     extract( $r );
     169    if ( !empty( $bp->displayed_user->id ) )
     170        $user_id = $bp->displayed_user->id;
    191171
    192172    /* If we're in a single group, set this group's forum_id */
     
    211191        $search_terms = $_GET['fs'];
    212192
     193    $defaults = array(
     194        'type' => $type,
     195        'forum_id' => $forum_id,
     196        'user_id' => $user_id,
     197        'page' => 1,
     198        'per_page' => 20,
     199        'max' => false,
     200        'no_stickies' => false,
     201        'search_terms' => $search_terms
     202    );
     203
     204    $r = wp_parse_args( $args, $defaults );
     205    extract( $r );
     206
    213207    $forum_template = new BP_Forums_Template_Forum( $type, $forum_id, $user_id, $page, $per_page, $max, $no_stickies, $search_terms );
    214 
    215208    return apply_filters( 'bp_has_topics', $forum_template->has_topics(), &$forum_template );
    216209}
  • trunk/bp-groups/bp-groups-templatetags.php

    r2576 r2580  
    178178    $type = 'active';
    179179    $user_id = false;
    180     $page = 1;
     180    $search_terms = false;
     181    $slug = false;
    181182
    182183    /* User filtering */
    183     if ( !empty( $bp->displayed_user->id ) || 'personal' == $_COOKIE['bp-groups-scope'] )
    184         $user_id = ( !empty( $bp->displayed_user->id ) ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
    185 
    186     /* Action filtering */
    187     if ( !empty( $_COOKIE['bp-groups-filter'] ) && '-1' != $_COOKIE['bp-groups-filter'] )
    188         $type = $_COOKIE['bp-groups-filter'];
    189 
    190     if ( !empty( $_COOKIE['bp-groups-page'] ) && '-1' != $_COOKIE['bp-groups-page'] )
    191         $page = $_COOKIE['bp-groups-page'];
     184    if ( !empty( $bp->displayed_user->id ) )
     185        $user_id = $bp->displayed_user->id;
     186
     187    /* Type */
     188    if ( 'my-groups' == $bp->current_action ) {
     189        if ( 'recently-joined' == $order )
     190            $type = 'recently-joined';
     191        else if ( 'most-popular' == $order )
     192            $type = 'popular';
     193        else if ( 'admin-of' == $order ) {
     194            $type = 'admin-of';
     195        } else if ( 'mod-of' == $order ) {
     196            $type = 'mod-of';
     197        } else if ( 'alphabetically' == $order )
     198            $type = 'alphabetical';
     199    } else if ( 'invites' == $bp->current_action ) {
     200        $type = 'invites';
     201    } else if ( $bp->groups->current_group->slug ) {
     202        $type = 'single-group';
     203        $slug = $bp->groups->current_group->slug;
     204    }
     205
     206    if ( isset( $_REQUEST['group-filter-box'] ) || isset( $_REQUEST['s'] ) )
     207        $search_terms = ( isset( $_REQUEST['group-filter-box'] ) ) ? $_REQUEST['group-filter-box'] : $_REQUEST['s'];
    192208
    193209    $defaults = array(
    194210        'type' => $type,
    195         'page' => $page,
     211        'page' => 1,
    196212        'per_page' => 20,
    197213        'max' => false,
    198214
    199215        'user_id' => $user_id, // Pass a user ID to limit to groups this user has joined
    200         'slug' => false, // Pass a group slug to only return that group
    201         'search_terms' => false // Pass search terms to return only matching groups
     216        'slug' => $slug, // Pass a group slug to only return that group
     217        'search_terms' => $search_terms // Pass search terms to return only matching groups
    202218    );
    203219
    204220    $r = wp_parse_args( $args, $defaults );
    205221    extract( $r );
    206 
    207     if ( '' == $args ) {
    208         /* The following code will auto set parameters based on the page being viewed.
    209          * for example on example.com/members/andy/groups/my-groups/most-popular/
    210          * $type = 'most-popular'
    211          */
    212         if ( 'my-groups' == $bp->current_action ) {
    213             $order = $bp->action_variables[0];
    214             if ( 'recently-joined' == $order )
    215                 $type = 'recently-joined';
    216             else if ( 'most-popular' == $order )
    217                 $type = 'popular';
    218             else if ( 'admin-of' == $order ) {
    219                 $type = 'admin-of';
    220                 $user_id = $bp->displayed_user->id;
    221             } else if ( 'mod-of' == $order ) {
    222                 $type = 'mod-of';
    223                 $user_id = $bp->displayed_user->id;
    224             } else if ( 'alphabetically' == $order )
    225                 $type = 'alphabetical';
    226         } else if ( 'invites' == $bp->current_action ) {
    227             $type = 'invites';
    228         } else if ( $bp->groups->current_group->slug ) {
    229             $type = 'single-group';
    230             $slug = $bp->groups->current_group->slug;
    231         }
    232     }
    233 
    234     if ( isset( $_REQUEST['group-filter-box'] ) || isset( $_REQUEST['s'] ) )
    235         $search_terms = ( isset( $_REQUEST['group-filter-box'] ) ) ? $_REQUEST['group-filter-box'] : $_REQUEST['s'];
    236222
    237223    $groups_template = new BP_Groups_Template( $user_id, $type, $page, $per_page, $max, $slug, $search_terms );
  • trunk/bp-themes/bp-default/_inc/ajax.php

    r2576 r2580  
    1010 */
    1111
    12 function bp_dtheme_object_filter() {
    13     global $bp;
    14 
     12/***
     13 * Each object loop (activity/members/groups/blogs/forums) contains parameters to
     14 * show specific information based on the page we are currently looking at.
     15 * The following function will take into account any cookies set in the JS and allow us
     16 * to override the parameters sent. That way we can change the results returned without reloading the page.
     17 */
     18function bp_dtheme_ajax_querystring( $object = false ) {
     19    global $bp;
     20
     21    if ( empty( $object ) )
     22        return false;
     23
     24    /* Set up the cookies passed on this AJAX request. Store a local var to avoid conflicts */
     25    if ( !empty( $_POST['cookie'] ) )
     26        $_BP_COOKIE = wp_parse_args( str_replace( '; ', '&', urldecode( $_POST['cookie'] ) ) );
     27    else
     28        $_BP_COOKIE = &$_COOKIE;
     29
     30    $qs = false;
     31
     32    /***
     33     * Check if any cookie values are set. If there are then override the default params passed to the
     34     * template loop
     35     */
     36    if ( !empty( $_BP_COOKIE['bp-' . $object . '-filter'] ) && '-1' != $_BP_COOKIE['bp-' . $object . '-filter'] ) {
     37        $qs[] = 'type=' . $_BP_COOKIE['bp-' . $object . '-filter'];
     38        $qs[] = 'action=' . $_BP_COOKIE['bp-' . $object . '-filter']; // Activity stream filtering on action
     39    }
     40
     41    if ( !empty( $_BP_COOKIE['bp-' . $object . '-scope'] ) ) {
     42        if ( 'personal' == $_BP_COOKIE['bp-' . $object . '-scope'] ) {
     43            $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
     44            $qs[] = 'user_id=' . $user_id;
     45        }
     46        $qs[] = 'scope=' . $_BP_COOKIE['bp-' . $object . '-scope']; // Activity stream scope
     47    }
     48
     49    if ( !empty( $_BP_COOKIE['bp-' . $object . '-page'] ) && '-1' != $_BP_COOKIE['bp-' . $object . '-page'] )
     50        $qs[] = 'page=' . $_BP_COOKIE['bp-' . $object . '-page'];
     51
     52    if ( !empty( $_BP_COOKIE['bp-' . $object . '-search-terms'] ) && __( 'Search anything...', 'buddypress' ) != $_BP_COOKIE['bp-' . $object . '-search-terms'] && 'false' != $_BP_COOKIE['bp-' . $object . '-search-terms'] )
     53        $qs[] = 'search_terms=' . $_BP_COOKIE['bp-' . $object . '-search-terms'];
     54
     55    /* Now pass the querystring to override default values. */
     56    if ( !empty( $qs ) )
     57        return apply_filters( 'bp_dtheme_ajax_querystring', join( '&', (array)$qs ), $object, $_BP_COOKIE['bp-' . $object . '-filter'], $_BP_COOKIE['bp-' . $object . '-scope'], $_BP_COOKIE['bp-' . $object . '-page'], $_BP_COOKIE['bp-' . $object . '-search-terms'], $_BP_COOKIE['bp-' . $object . '-extras'] );
     58}
     59
     60function bp_dtheme_object_template_loader() {
    1561    $object = esc_attr( $_POST['object'] );
    16     $filter = esc_attr( $_POST['filter'] );
    17     $page = esc_attr( $_POST['page'] );
    18     $search_terms = esc_attr( $_POST['search_terms'] );
    19 
    20     /**
    21      * Scope is the scope of results to use, either all (everything) or personal (just mine).
    22      * For example if the object is groups, it would be all groups, or just groups I belong to.
    23      */
    24     $scope = esc_attr( $_POST['scope'] );
    25 
    26     /* Plugins can pass extra parameters and use the bp_dtheme_ajax_querystring_content_filter filter to parse them */
    27     $extras = esc_attr( $_POST['extras'] );
    28 
    29     if ( __( 'Search anything...', 'buddypress' ) == $search_terms || 'false' == $search_terms )
    30         $search_terms = false;
    31 
    32     /* Build the querystring */
    33     if ( empty( $filter ) )
    34         $filter = 'active';
    35 
    36     $bp->ajax_querystring = 'type=' . $filter . '&page=' . $page;
    37 
    38     if ( !empty( $search_terms ) )
    39         $bp->ajax_querystring .= '&search_terms=' . $search_terms;
    40 
    41     if ( $scope == 'personal' || $bp->displayed_user->id ) {
    42         $user_id = ( $bp->displayed_user->id ) ? $bp->displayed_user->id : $bp->loggedin_user->id;
    43         $bp->ajax_querystring .= '&user_id=' . $user_id;
    44     }
    45 
    46     $bp->ajax_querystring = apply_filters( 'bp_dtheme_ajax_querystring_content_filter', $bp->ajax_querystring, $extras );
    47 
    4862    locate_template( array( "$object/$object-loop.php" ), true );
    4963}
    50 add_action( 'wp_ajax_members_filter', 'bp_dtheme_object_filter' );
    51 add_action( 'wp_ajax_groups_filter', 'bp_dtheme_object_filter' );
    52 add_action( 'wp_ajax_blogs_filter', 'bp_dtheme_object_filter' );
    53 add_action( 'wp_ajax_forums_filter', 'bp_dtheme_object_filter' );
     64add_action( 'wp_ajax_members_filter', 'bp_dtheme_object_template_loader' );
     65add_action( 'wp_ajax_groups_filter', 'bp_dtheme_object_template_loader' );
     66add_action( 'wp_ajax_blogs_filter', 'bp_dtheme_object_template_loader' );
     67add_action( 'wp_ajax_forums_filter', 'bp_dtheme_object_template_loader' );
     68
     69function bp_dtheme_activity_template_loader() {
     70    global $bp;
     71
     72    /* Buffer the loop in the template to a var for JS to spit out. */
     73    ob_start();
     74    locate_template( array( 'activity/activity-loop.php' ), true );
     75    $result['contents'] = ob_get_contents();
     76    ob_end_clean();
     77
     78    echo json_encode( $result );
     79}
     80add_action( 'wp_ajax_activity_widget_filter', 'bp_dtheme_activity_template_loader' );
     81add_action( 'wp_ajax_activity_get_older_updates', 'bp_dtheme_activity_template_loader' );
    5482
    5583function bp_dtheme_post_update() {
     
    178206add_action( 'wp_ajax_delete_activity', 'bp_dtheme_delete_activity' );
    179207
    180 function bp_dtheme_activity_loop( $scope = false, $filter = false, $per_page = 20, $page = 1 ) {
    181     global $bp;
    182 
    183     /* If we are on a profile page we only want to show that users activity */
    184     if ( $bp->displayed_user->id ) {
    185         $query_string = 'user_id=' . $bp->displayed_user->id;
    186     } else {
    187         if ( !empty( $bp->groups->current_group ) )
    188             $scope = 'all';
    189 
    190         $feed_url = site_url( BP_ACTIVITY_SLUG . '/feed/' );
    191 
    192         switch ( $scope ) {
    193             case BP_FRIENDS_SLUG:
    194                 $friend_ids = implode( ',', friends_get_friend_user_ids( $bp->loggedin_user->id ) );
    195                 $query_string = 'user_id=' . $friend_ids;
    196                 $feed_url = $bp->loggedin_user->domain . BP_ACTIVITY_SLUG . '/' . BP_FRIENDS_SLUG . '/feed/';
    197                 break;
    198             case BP_GROUPS_SLUG:
    199                 $groups = groups_get_user_groups( $bp->loggedin_user->id );
    200                 $group_ids = implode( ',', $groups['groups'] );
    201                 $query_string = 'object=groups&primary_id=' . $group_ids . '&show_hidden=1';
    202                 $feed_url = $bp->loggedin_user->domain . BP_ACTIVITY_SLUG . '/' . BP_GROUPS_SLUG . '/feed/';
    203                 break;
    204             case 'favorites':
    205                 $favs = bp_activity_get_user_favorites( $bp->loggedin_user->id );
    206 
    207                 if ( empty( $favs ) )
    208                     $favorite_ids = false;
    209 
    210                 $favorite_ids = implode( ',', (array)$favs );
    211                 $query_string = 'include=' . $favorite_ids;
    212                 $feed_url = $bp->loggedin_user->domain  . BP_ACTIVITY_SLUG . '/favorites/feed/';
    213                 break;
    214             case 'mentions':
    215                 $query_string = 'show_hidden=1&search_terms=@' . bp_core_get_username( $bp->loggedin_user->id, $bp->loggedin_user->userdata->user_nicename, $bp->loggedin_user->userdata->user_login );
    216                 $feed_url = $bp->loggedin_user->domain . BP_ACTIVITY_SLUG . '/mentions/feed/';
    217 
    218                 /* Reset the number of new @ mentions for the user */
    219                 delete_usermeta( $bp->loggedin_user->id, 'bp_new_mention_count' );
    220                 break;
    221         }
    222     }
    223 
    224     /* Build the filter */
    225     if ( $filter && $filter != '-1' )
    226         $query_string .= '&action=' . $filter;
    227 
    228     /* If we are viewing a group then filter the activity just for this group */
    229     if ( !empty( $bp->groups->current_group ) ) {
    230         $query_string .= '&object=' . $bp->groups->id . '&primary_id=' . $bp->groups->current_group->id;
    231 
    232         /* If we're viewing a non-private group and the user is a member, show the hidden activity for the group */
    233         if ( 'public' != $bp->groups->current_group->status && groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) )
    234             $query_string .= '&show_hidden=1';
    235     }
    236 
    237     /* Add the per_page param */
    238     $query_string .= '&per_page=' . $per_page;
    239 
    240     /* Add the comments param */
    241     if ( $bp->displayed_user->id || 'mentions' == $scope )
    242         $query_string .= '&display_comments=stream';
    243     else
    244         $query_string .= '&display_comments=threaded';
    245 
    246     /* Add the new page param */
    247     $args = explode( '&', trim( $query_string ) );
    248     foreach( (array)$args as $arg ) {
    249         if ( false === strpos( $arg, 'page' ) )
    250             $new_args[] = $arg;
    251     }
    252     $query_string = implode( '&', $new_args ) . '&page=' . $page;
    253 
    254     $bp->ajax_querystring = apply_filters( 'bp_dtheme_ajax_querystring_activity_filter', $query_string, $scope );
    255     $result['query_string'] = $bp->ajax_querystring;
    256     $result['feed_url'] = apply_filters( 'bp_dtheme_ajax_feed_url', $feed_url );
    257 
    258     /* Buffer the loop in the template to a var for JS to spit out. */
    259     ob_start();
    260     locate_template( array( 'activity/activity-loop.php' ), true );
    261     $result['contents'] = ob_get_contents();
    262     ob_end_clean();
    263 
    264     echo json_encode( $result );
    265 }
    266 
    267 function bp_dtheme_ajax_widget_filter() {
    268     bp_dtheme_activity_loop( $_POST['scope'], $_POST['filter'] );
    269 }
    270 add_action( 'wp_ajax_activity_widget_filter', 'bp_dtheme_ajax_widget_filter' );
    271 
    272 function bp_dtheme_ajax_load_older_updates() {
    273     bp_dtheme_activity_loop( false, false, 20, $_POST['page'] );
    274 }
    275 add_action( 'wp_ajax_activity_get_older_updates', 'bp_dtheme_ajax_load_older_updates' );
    276 
    277208function bp_dtheme_mark_activity_favorite() {
    278209    global $bp;
  • trunk/bp-themes/bp-default/_inc/global.js

    r2578 r2580  
    33
    44// Global variable to prevent multiple AJAX requests
    5 var activity_request = null;
     5var bp_ajax_request = null;
    66
    77j(document).ready( function() {
     
    112112
    113113        /* Reset the page */
    114         j.cookie( 'bp-activity-oldestpage', 1 );
     114        j.cookie( 'bp-activity-oldestpage', 1, {path: '/'} );
    115115
    116116        /* Activity Stream Tabs */
     
    131131
    132132        if ( !selected_tab.length )
    133             var scope = 'all';
     133            var scope = null;
    134134        else
    135135            var scope = selected_tab.attr('id').substr( 9, selected_tab.attr('id').length );
     
    232232
    233233            if ( null == j.cookie('bp-activity-oldestpage') )
    234                 j.cookie('bp-activity-oldestpage', 1 );
     234                j.cookie('bp-activity-oldestpage', 1, {path: '/'} );
    235235
    236236            var oldest_page = ( j.cookie('bp-activity-oldestpage') * 1 ) + 1;
     
    244244            {
    245245                j("li.load-more").removeClass('loading');
    246                 j.cookie( 'bp-activity-oldestpage', oldest_page );
     246                j.cookie( 'bp-activity-oldestpage', oldest_page, {path: '/'} );
    247247                j("ul.activity-list").append(response.contents);
    248248
     
    10321032function bp_init_activity() {
    10331033    /* Reset the page */
    1034     j.cookie( 'bp-activity-oldestpage', 1 );
     1034    j.cookie( 'bp-activity-oldestpage', 1, {path: '/'} );
    10351035
    10361036    if ( null != j.cookie('bp-activity-filter') && j('#activity-filter-select').length )
     
    10711071        return false;
    10721072
    1073     if ( null == scope )
    1074         var scope = 'all';
    1075 
    1076     if ( null == filter )
    1077         var filter = 'active';
    1078 
    1079     if ( null == page )
    1080         var page = 1;
    1081 
    1082     if ( null == search_terms )
    1083         var search_terms = false;
    1084 
    1085     if ( null == extras )
    1086         var extras = false;
    1087 
    10881073    if ( j.query.get('s') )
    10891074        search_terms = j.query.get('s');
    10901075
    10911076    /* Save the type and filter to a session cookie */
    1092     j.cookie( 'bp-' + object + '-scope', scope, null );
    1093     j.cookie( 'bp-' + object + '-filter', filter, null );
    1094     j.cookie( 'bp-' + object + '-page', page, null );
    1095     j.cookie( 'bp-' + object + '-search-terms', search_terms, null );
    1096     j.cookie( 'bp-' + object + '-extras', extras, null );
     1077    j.cookie( 'bp-' + object + '-scope', scope, {path: '/'} );
     1078    j.cookie( 'bp-' + object + '-filter', filter, {path: '/'} );
     1079    j.cookie( 'bp-' + object + '-page', page, {path: '/'} );
     1080    j.cookie( 'bp-' + object + '-search-terms', search_terms, {path: '/'} );
     1081    j.cookie( 'bp-' + object + '-extras', extras, {path: '/'} );
    10971082
    10981083    /* Set the correct selected nav and filter */
    1099     j('div.item-list-tabs li').each( function() {
    1100         j(this).removeClass('selected');
    1101     });
    1102     j('div.item-list-tabs li#' + object + '-' + scope + ', div.item-list-tabs#object-nav li.current').addClass('selected');
     1084    if ( null != scope ) {
     1085        j('div.item-list-tabs li').each( function() {
     1086            j(this).removeClass('selected');
     1087        });
     1088        j('div.item-list-tabs li#' + object + '-' + scope + ', div.item-list-tabs#object-nav li.current').addClass('selected');
     1089    }
    11031090    j('div.item-list-tabs li.selected').addClass('loading');
    11041091    j('div.item-list-tabs select option[value=' + filter + ']').attr( 'selected', 'selected' );
     
    11071094        object = 'members';
    11081095
    1109     j.post( ajaxurl, {
     1096    if ( bp_ajax_request )
     1097        bp_ajax_request.abort();
     1098
     1099    bp_ajax_request = j.post( ajaxurl, {
    11101100        action: object + '_filter',
    11111101        'cookie': encodeURIComponent(document.cookie),
     
    11291119/* Activity Loop Requesting */
    11301120function bp_activity_request(scope, filter) {
    1131     if ( null == scope )
    1132         var scope = 'all';
    1133 
    1134     if ( null == filter )
    1135         var filter = '-1';
    1136 
    11371121    /* Save the type and filter to a session cookie */
    1138     j.cookie( 'bp-activity-scope', scope, null );
    1139     j.cookie( 'bp-activity-filter', filter, null );
    1140     j.cookie( 'bp-activity-oldestpage', 1 );
     1122    j.cookie( 'bp-activity-scope', scope, {path: '/'} );
     1123    j.cookie( 'bp-activity-filter', filter, {path: '/'} );
     1124    j.cookie( 'bp-activity-oldestpage', 1, {path: '/'} );
    11411125
    11421126    /* Remove selected and loading classes from tabs */
    1143     j('div.item-list-tabs li').each( function() {
    1144         j(this).removeClass('selected loading');
    1145     });
    1146 
    1147     /* Set the correct selected nav and filter */
    1148     j('li#activity-' + scope + ', div.item-list-tabs li.current').addClass('selected');
     1127    if ( null != scope ) {
     1128        j('div.item-list-tabs li').each( function() {
     1129            j(this).removeClass('selected loading');
     1130        });
     1131        /* Set the correct selected nav and filter */
     1132        j('li#activity-' + scope + ', div.item-list-tabs li.current').addClass('selected');
     1133    }
    11491134    j('div#object-nav.item-list-tabs li.selected, div.activity-type-tabs li.selected').addClass('loading');
    11501135    j('#activity-filter-select select option[value=' + filter + ']').attr( 'selected', 'selected' );
     
    11531138    j('.widget_bp_activity_widget h2 span.ajax-loader').show();
    11541139
    1155     if ( activity_request )
    1156         activity_request.abort();
    1157 
    1158     activity_request = j.post( ajaxurl, {
     1140    if ( bp_ajax_request )
     1141        bp_ajax_request.abort();
     1142
     1143    bp_ajax_request = j.post( ajaxurl, {
    11591144        action: 'activity_widget_filter',
    11601145        'cookie': encodeURIComponent(document.cookie),
     
    12511236
    12521237/* jQuery Cookie plugin */
    1253 eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('o.5=B(9,b,2){6(h b!=\'E\'){2=2||{};6(b===n){b=\'\';2.3=-1}4 3=\'\';6(2.3&&(h 2.3==\'j\'||2.3.k)){4 7;6(h 2.3==\'j\'){7=w u();7.t(7.q()+(2.3*r*l*l*x))}m{7=2.3}3=\'; 3=\'+7.k()}4 8=2.8?\'; 8=\'+(2.8):\'\';4 a=2.a?\'; a=\'+(2.a):\'\';4 c=2.c?\'; c\':\'\';d.5=[9,\'=\',C(b),3,8,a,c].y(\'\')}m{4 e=n;6(d.5&&d.5!=\'\'){4 g=d.5.A(\';\');s(4 i=0;i<g.f;i++){4 5=o.z(g[i]);6(5.p(0,9.f+1)==(9+\'=\')){e=D(5.p(9.f+1));v}}}F e}};',42,42,'||options|expires|var|cookie|if|date|path|name|domain|value|secure|document|cookieValue|length|cookies|typeof||number|toUTCString|60|else|null|jQuery|substring|getTime|24|for|setTime|Date|break|new|1000|join|trim|split|function|encodeURIComponent|decodeURIComponent|undefined|return'.split('|'),0,{}))
     1238jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1;}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}expires='; expires='+date.toUTCString();}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}return cookieValue;}};
    12541239
    12551240/* jQuery querystring plugin */
  • trunk/bp-themes/bp-default/activity/activity-loop.php

    r2485 r2580  
    33<?php do_action( 'bp_before_activity_loop' ) ?>
    44
    5 <?php if ( bp_has_activities( bp_ajax_querystring() ) ) : ?>
     5<?php if ( bp_has_activities( bp_dtheme_ajax_querystring( 'activity' ) ) ) : ?>
    66
    77    <?php /* Show pagination if JS is not enabled, since the "Load More" link will do nothing */ ?>
  • trunk/bp-themes/bp-default/blogs/blogs-loop.php

    r2422 r2580  
    33<?php do_action( 'bp_before_blogs_loop' ) ?>
    44
    5 <?php if ( bp_has_blogs( bp_ajax_querystring() ) ) : ?>
     5<?php if ( bp_has_blogs( bp_dtheme_ajax_querystring( 'blogs' ) ) ) : ?>
    66
    77    <div class="pagination">
  • trunk/bp-themes/bp-default/forums/forums-loop.php

    r2243 r2580  
    1 <?php if ( bp_has_forum_topics( bp_ajax_querystring() ) ) : ?>
     1<?php if ( bp_has_forum_topics( bp_dtheme_ajax_querystring( 'forums' ) ) ) : ?>
    22
    33    <div class="pagination">
  • trunk/bp-themes/bp-default/groups/groups-loop.php

    r2422 r2580  
    33<?php do_action( 'bp_before_groups_loop' ) ?>
    44
    5 <?php if ( bp_has_groups( bp_ajax_querystring() ) ) : ?>
     5<?php if ( bp_has_groups( bp_dtheme_ajax_querystring( 'groups' ) ) ) : ?>
    66
    77    <div class="pagination">
  • trunk/bp-themes/bp-default/members/members-loop.php

    r2422 r2580  
    33<?php do_action( 'bp_before_members_loop' ) ?>
    44
    5 <?php if ( bp_has_members( bp_ajax_querystring() ) ) : ?>
     5<?php if ( bp_has_members( bp_dtheme_ajax_querystring( 'members' ) ) ) : ?>
    66
    77    <div class="pagination">
Note: See TracChangeset for help on using the changeset viewer.