Skip to:
Content

BuddyPress.org

Ticket #2650: 2650.patch

File 2650.patch, 6.7 KB (added by boonebgorges, 16 years ago)
  • bp-forums.php

     
    133133                'user_id' => false,
    134134                'page' => 1,
    135135                'per_page' => 15,
     136                'include' => false, // Comma-separated list of topic IDs.
    136137                'exclude' => false,
    137138                'show_stickies' => 'all',
    138139                'filter' => false // if $type = tag then filter is the tag name, otherwise it's terms to search on.
     
    140141
    141142        $r = wp_parse_args( $args, $defaults );
    142143        extract( $r, EXTR_SKIP );
     144                       
     145        if ( $exclude ) {
     146                $exclude = '-' . str_replace(',', ',-', $exclude);
     147                $exclude = str_replace('--', '-', $exclude);
     148                if ( $include )
     149                        $include = (string) $include . ",$exclude";
     150                else
     151                        $include = $exclude;
     152        }
    143153
    144154        switch ( $type ) {
    145155                case 'newest':
    146                         $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_author_id' => $user_id, 'per_page' => $per_page, 'page' => $page, 'number' => $per_page, 'exclude' => $exclude, 'topic_title' => $filter, 'sticky' => $show_stickies ), 'get_latest_topics' );
     156                        $query = new BB_Query( 'topic', array( 'forum_id' => 'forum_id', 'topic_id' => $include, 'topic_author_id' => $user_id,  'per_page' => $per_page, 'page' => $page, 'number' => $per_page, 'topic_title' => $filter, 'sticky' => $show_stickies ), 'get_latest_topics' );
    147157                        $topics =& $query->results;
    148158                break;
    149159
    150160                case 'popular':
    151                         $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_author_id' => $user_id, 'per_page' => $per_page, 'page' => $page, 'order_by' => 't.topic_posts', 'topic_title' => $filter, 'sticky' => $show_stickies ) );
     161                        $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_id' => $include, 'topic_author_id' => $user_id, 'per_page' => $per_page, 'page' => $page, 'order_by' => 't.topic_posts', 'topic_title' => $filter, 'sticky' => $show_stickies ) );
    152162                        $topics =& $query->results;
    153163                break;
    154164
    155165                case 'unreplied':
    156                         $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_author_id' => $user_id, 'post_count' => 1, 'per_page' => $per_page, 'page' => $page, 'order_by' => 't.topic_time', 'topic_title' => $filter, 'sticky' => $show_stickies ) );
     166                        $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_id' => $include, 'topic_author_id' => $user_id, 'post_count' => 1, 'per_page' => $per_page, 'page' => $page, 'order_by' => 't.topic_time', 'topic_title' => $filter, 'sticky' => $show_stickies ) );
    157167                        $topics =& $query->results;
    158168                break;
    159169
    160170                case 'tags':
    161                         $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_author_id' => $user_id, 'tag' => $filter, 'per_page' => $per_page, 'page' => $page, 'order_by' => 't.topic_time', 'sticky' => $show_stickies ) );
     171                        $query = new BB_Query( 'topic', array( 'forum_id' => $forum_id, 'topic_id' => $include, 'topic_author_id' => $user_id, 'tag' => $filter, 'per_page' => $per_page, 'page' => $page, 'order_by' => 't.topic_time', 'sticky' => $show_stickies ) );
    162172                        $topics =& $query->results;
    163173                break;
    164174        }
  • bp-forums/bp-forums-templatetags.php

     
    1818        var $sort_by;
    1919        var $order;
    2020
    21         function BP_Forums_Template_Forum( $type, $forum_id, $user_id, $page, $per_page, $max, $no_stickies, $search_terms ) {
     21        function BP_Forums_Template_Forum( $type, $forum_id, $user_id, $page, $per_page, $max, $no_stickies, $search_terms, $include, $exclude ) {
    2222                global $bp;
    2323
    2424                $this->pag_page     = isset( $_REQUEST['p'] ) ? intval( $_REQUEST['p'] ) : $page;
     
    2828
    2929                switch ( $type ) {
    3030                        case 'newest': default:
    31                                 $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'forum_id' => $forum_id, 'filter' => $search_terms, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies ) );
     31                                $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'forum_id' => $forum_id, 'filter' => $search_terms, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies, 'include' => $include, 'exclude' => $exclude ) );
    3232                                break;
    3333
    3434                        case 'popular':
    35                                 $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'type' => 'popular', 'filter' => $search_terms, 'forum_id' => $forum_id, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies ) );
     35                                $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'type' => 'popular', 'filter' => $search_terms, 'forum_id' => $forum_id, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies, 'include' => $include, 'exclude' => $exclude ) );
    3636                                break;
    3737
    3838                        case 'unreplied':
    39                                 $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'type' => 'unreplied', 'filter' => $search_terms, 'forum_id' => $forum_id, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies ) );
     39                                $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'type' => 'unreplied', 'filter' => $search_terms, 'forum_id' => $forum_id, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies, 'include' => $include, 'exclude' => $exclude ) );
    4040                                break;
    4141
    4242                        case 'tags':
    43                                 $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'type' => 'tags', 'filter' => $search_terms, 'forum_id' => $forum_id, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies ) );
     43                                $this->topics = bp_forums_get_forum_topics( array( 'user_id' => $user_id, 'type' => 'tags', 'filter' => $search_terms, 'forum_id' => $forum_id, 'page' => $this->pag_page, 'per_page' => $this->pag_num, 'show_stickies' => $no_stickies, 'include' => $include, 'exclude' => $exclude ) );
    4444                                break;
    4545                }
    4646
     
    166166        $forum_id = false;
    167167        $search_terms = false;
    168168        $no_stickies = 'all';
     169        $include = false;
     170        $exclude = false;
    169171
    170172        /* User filtering */
    171173        if ( !empty( $bp->displayed_user->id ) )
     
    198200                'per_page' => 20,
    199201                'max' => false,
    200202                'no_stickies' => $no_stickies,
    201                 'search_terms' => $search_terms
     203                'search_terms' => $search_terms,
     204                'include' => $include,
     205                'exclude' => $exclude
    202206        );
    203207
    204208        $r = wp_parse_args( $args, $defaults );
     
    210214                $type = 'tags';
    211215        }
    212216
    213         $forum_template = new BP_Forums_Template_Forum( $type, $forum_id, $user_id, $page, $per_page, $max, $no_stickies, $search_terms );
     217        $forum_template = new BP_Forums_Template_Forum( $type, $forum_id, $user_id, $page, $per_page, $max, $no_stickies, $search_terms, $include, $exclude );
    214218        return apply_filters( 'bp_has_topics', $forum_template->has_topics(), &$forum_template );
    215219}
    216220