Skip to:
Content

BuddyPress.org

Changeset 3933


Ignore:
Timestamp:
01/26/2011 03:28:35 PM (14 years ago)
Author:
johnjamesjacoby
Message:

Introduce Forums tab to user account area, to show topics the user has started, topics the user has replied to, and favorite forum topics. This includes additional template files in bp-default to support new functionality, and edits to the forum_sql filter functions.

Location:
trunk
Files:
3 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-core/bp-core-template.php

    r3923 r3933  
    988988}
    989989
     990function bp_is_user_forums() {
     991    global $bp;
     992
     993    if ( bp_is_current_component( 'forums' ) )
     994        return true;
     995
     996    return false;
     997}
     998
    990999function bp_is_user_groups() {
    9911000    global $bp;
  • trunk/bp-forums/bp-forums-loader.php

    r3917 r3933  
    125125        // Additional menu if friends is active
    126126        $sub_nav[] = array(
    127             'name'            => __( 'Topics Started', 'buddypress' ),
     127            'name'            => __( 'Started', 'buddypress' ),
    128128            'slug'            => 'topics',
    129129            'parent_url'      => $forums_link,
     
    136136        // Additional menu if friends is active
    137137        $sub_nav[] = array(
    138             'name'            => __( 'Replies', 'buddypress' ),
     138            'name'            => __( 'Replied To', 'buddypress' ),
    139139            'slug'            => 'replies',
    140140            'parent_url'      => $forums_link,
    141141            'parent_slug'     => $this->slug,
    142             'screen_function' => 'bp_forums_screen_topics',
     142            'screen_function' => 'bp_forums_screen_replies',
    143143            'position'        => 40,
    144144            'item_css_id'     => 'forums-friends'
     
    147147        // Favorite forums items
    148148        $sub_nav[] = array(
    149             'name'            => __( 'Favorite Topics', 'buddypress' ),
     149            'name'            => __( 'Favorites', 'buddypress' ),
    150150            'slug'            => 'favorites',
    151151            'parent_url'      => $forums_link,
  • trunk/bp-forums/bp-forums-screens.php

    r3917 r3933  
    44    global $bp;
    55
    6     if ( bp_is_current_component( 'forums' ) ) {
     6    if ( bp_is_groups_component() && !bp_current_action() && !bp_current_item() ) {
    77        if ( bp_forum_directory_is_disabled() || !bp_is_active( 'groups' ) )
    88            return false;
     
    6161add_action( 'bp_screens', 'bp_forums_directory_forums_setup' );
    6262
     63function bp_forums_screen_topics() {
     64    global $bp;
     65
     66    do_action( 'bp_forums_screen_topics' );
     67
     68    bp_core_load_template( apply_filters( 'bp_forums_screen_topics', 'members/single/home' ) );
     69}
     70
     71function bp_forums_screen_replies() {
     72    global $bp;
     73
     74    do_action( 'bp_forums_screen_replies' );
     75
     76    bp_core_load_template( apply_filters( 'bp_forums_screen_replies', 'members/single/home' ) );
     77}
     78
     79function bp_forums_screen_favorites() {
     80    global $bp;
     81
     82    do_action( 'bp_forums_screen_favorites' );
     83
     84    bp_core_load_template( apply_filters( 'bp_forums_screen_favorites', 'members/single/home' ) );
     85}
     86
    6387?>
  • trunk/bp-forums/bp-forums-template.php

    r3911 r3933  
    102102            $this->total_topic_count = 0;
    103103        } else {
    104             if ( $forum_id ) {
     104            if ( !empty( $forum_id ) ) {
    105105                $topic_count = bp_forums_get_forum( $forum_id );
    106106                $topic_count = (int)$topic_count->topics;
    107             } else if ( function_exists( 'groups_total_public_forum_topic_count' ) ) {
     107            } else if ( !empty( $bp->groups->current_group ) ) {
    108108                $topic_count = (int)groups_total_public_forum_topic_count( $type );
    109109            } else {
     
    217217     * pass their parameters directly to the loop.
    218218     */
    219     $type = 'newest';
    220     $user_id = 0;
    221     $forum_id = false;
     219    $type         = 'newest';
     220    $user_id      = 0;
     221    $forum_id     = false;
    222222    $search_terms = false;
    223     $no_stickies = 'all';
     223    $no_stickies  = 'all';
    224224
    225225    // User filtering
     
    732732        global $bp, $forum_template;
    733733
    734         $start_num = intval( ( $forum_template->pag_page - 1 ) * $forum_template->pag_num ) + 1;
    735         $from_num = bp_core_number_format( $start_num );
    736         $to_num = bp_core_number_format( ( $start_num + ( $forum_template->pag_num - 1  ) > $forum_template->total_topic_count ) ? $forum_template->total_topic_count : $start_num + ( $forum_template->pag_num - 1 ) );
    737         $total = bp_core_number_format( $forum_template->total_topic_count );
    738 
     734        $start_num  = intval( ( $forum_template->pag_page - 1 ) * $forum_template->pag_num ) + 1;
     735        $from_num   = bp_core_number_format( $start_num );
     736        $to_num     = bp_core_number_format( ( $start_num + ( $forum_template->pag_num - 1  ) > $forum_template->total_topic_count ) ? $forum_template->total_topic_count : $start_num + ( $forum_template->pag_num - 1 ) );
     737        $total      = bp_core_number_format( $forum_template->total_topic_count );
    739738        $pag_filter = false;
     739
    740740        if ( 'tags' == $forum_template->type && !empty( $forum_template->search_terms ) )
    741741            $pag_filter = sprintf( __( ' matching tag "%s"', 'buddypress' ), $forum_template->search_terms );
  • trunk/bp-groups/bp-groups-activity.php

    r3818 r3933  
    3333
    3434    // If the group is not public, hide the activity sitewide.
    35     if ( 'public' == $bp->groups->current_group->status )
     35    if ( isset( $bp->groups->current_group->status ) && 'public' == $bp->groups->current_group->status )
    3636        $hide_sitewide = false;
    3737    else
  • trunk/bp-groups/bp-groups-filters.php

    r3930 r3933  
    6666
    6767    // Only filter the forum SQL on group pages or on the forums directory
    68     if ( bp_is_forums_component() ||
    69             ( !empty( $bp->groups->current_group ) &&
    70                 ( 'public' == $bp->groups->current_group->status ) ||
    71                     ( !empty( $bp->groups->current_group->is_member ) ) ) ) {
    72 
    73         add_filter( 'get_topics_fields',     'groups_add_forum_fields_sql' );
    74         add_filter( 'get_topics_index_hint', 'groups_add_forum_tables_sql' );
    75         add_filter( 'get_topics_where',      'groups_add_forum_where_sql'  );
    76     }
     68    add_filter( 'get_topics_fields',     'groups_add_forum_fields_sql' );
     69    add_filter( 'get_topics_index_hint', 'groups_add_forum_tables_sql' );
     70    add_filter( 'get_topics_where',      'groups_add_forum_where_sql'  );
    7771}
    7872add_filter( 'bbpress_init', 'groups_add_forum_privacy_sql' );
     
    9084    global $bp;
    9185
    92     if ( !is_super_admin() || ( bp_is_single_item() && !bp_group_is_member( $bp->groups->current_group->id ) ) )
    93         $must_be_public = "AND g.status = 'public'";
    94     else
    95         $must_be_public = '';
     86    // Set this for groups
     87    $parts['groups'] = "(gm.meta_key = 'forum_id' AND gm.meta_value = t.forum_id)";
    9688
    97     $bp->groups->filter_sql = $must_be_public . ' AND ' . $sql;
     89    // Restrict to public...
     90    $parts['private'] = "g.status = 'public'";
    9891
    99     return "(gm.meta_key = 'forum_id' AND gm.meta_value = t.forum_id) {$must_be_public} AND {$sql}";
     92    /**
     93     * ...but do some checks to possibly remove public restriction.
     94     *
     95     * Decide if private are visible
     96     */
     97    // Are we in our own profile?
     98    if ( bp_is_my_profile() )
     99        unset( $parts['private'] );
     100
     101    // Are we a super admin?
     102    elseif ( is_super_admin() )
     103        unset( $parts['private'] );
     104
     105    // Are we a member of this group
     106    elseif ( bp_is_single_item() && bp_group_is_member( $bp->groups->current_group->id ) )
     107        unset( $parts['private'] );
     108
     109    // Check the SQL filter that was passed
     110    if ( !empty( $sql ) )
     111        $parts['passed'] = $sql;
     112
     113    // Assemble Voltron
     114    $parts_string = implode( ' AND ', $parts );
     115
     116    // Set it to the global filter
     117    $bp->groups->filter_sql = $parts_string;
     118
     119    // Return the global filter
     120    return $bp->groups->filter_sql;
    100121}
    101122
  • trunk/bp-themes/bp-default/forums/index.php

    r3930 r3933  
    4040                        <?php if ( is_user_logged_in() && bp_get_forum_topic_count_for_user( bp_loggedin_user_id() ) ) : ?>
    4141
    42                             <li id="forums-personal"><a href="<?php echo trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ); ?>"><?php printf( __( 'My Topics (%s)', 'buddypress' ), bp_get_forum_topic_count_for_user( bp_loggedin_user_id() ) ); ?></a></li>
     42                            <li id="forums-personal"><a href="<?php echo trailingslashit( bp_loggedin_user_domain() . bp_get_forums_slug() . '/topics' ); ?>"><?php printf( __( 'My Topics (%s)', 'buddypress' ), bp_get_forum_topic_count_for_user( bp_loggedin_user_id() ) ); ?></a></li>
    4343
    4444                        <?php endif; ?>
  • trunk/bp-themes/bp-default/members/single/home.php

    r3834 r3933  
    5757                    locate_template( array( 'members/single/profile.php'  ), true );
    5858
     59                elseif ( bp_is_user_forums() ) :
     60                    locate_template( array( 'members/single/forums.php'  ), true );
     61
    5962                // If nothing sticks, load a generic template
    6063                else :
Note: See TracChangeset for help on using the changeset viewer.