Skip to:
Content

bbPress.org

Changeset 3637


Ignore:
Timestamp:
11/27/2011 11:05:06 AM (14 years ago)
Author:
johnjamesjacoby
Message:

Use pre-query-filters in shortcodes, and fix topic-tag query. Fixes #1687, props ptahdunbar for original patch.

Location:
branches/plugin
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/plugin/bbp-includes/bbp-core-shortcodes.php

    r3634 r3637  
    141141
    142142        // Unset global ID's
    143         $bbp->current_forum_id = 0;
    144         $bbp->current_topic_id = 0;
    145         $bbp->current_reply_id = 0;
     143        $bbp->current_forum_id     = 0;
     144        $bbp->current_topic_id     = 0;
     145        $bbp->current_reply_id     = 0;
     146        $bbp->current_topic_tag_id = 0;
    146147
    147148        // Reset the post data
     
    248249
    249250        // Set passed attribute to $forum_id for clarity
    250         $forum_id = $attr['id'];
     251        $bbp->current_forum_id = $forum_id = $attr['id'];
    251252
    252253        // Bail if ID passed is not a forum
     
    313314        $this->start( 'bbp_topic_archive' );
    314315
    315         // Query defaults
    316         $topics_query = array(
    317             'author'        => 0,
    318             'show_stickies' => true,
    319             'order'         => 'DESC',
    320         );
    321 
    322         // Load the topic index
    323         bbp_has_topics( $topics_query );
     316        // Filter the query
     317        add_filter( 'bbp_pre_has_topics_query', array( $this, 'display_topic_index_query' ) );
    324318
    325319        // Output template
     
    351345
    352346        // Set passed attribute to $forum_id for clarity
    353         $topic_id = $attr['id'];
     347        $bbp->current_topic_id = $topic_id = $attr['id'];
    354348        $forum_id = bbp_get_topic_forum_id( $topic_id );
    355349
     
    381375        if ( bbp_user_can_view_forum( array( 'forum_id' => $forum_id ) ) ) {
    382376
    383             // Setup the meta_query
    384             $replies_query['meta_query'] = array( array(
    385                 'key'     => '_bbp_topic_id',
    386                 'value'   => $topic_id,
    387                 'compare' => '='
    388             ) );
    389 
    390             // Setup an accurate replies query
    391             bbp_has_replies( $replies_query );
    392 
    393             // Output the single topic
     377            // Filter the query
     378            add_filter( 'bbp_pre_has_replies_query', array( $this, 'display_topic_query' ) );
     379
     380            // Output template
    394381            bbp_get_template_part( 'bbpress/content', 'single-topic' );
    395382
    396383        // Forum is private and user does not have caps
    397384        } elseif ( bbp_is_forum_private( $forum_id, false ) ) {
    398             bbp_get_template_part( 'bbpress/feedback', 'no-access' );
     385            bbp_get_template_part( 'bbpress/feedback', 'no-access'    );
    399386        }
    400387
     
    446433
    447434        // Set passed attribute to $reply_id for clarity
    448         $reply_id = $attr['id'];
     435        $bbp->current_reply_id = $reply_id = $attr['id'];
    449436        $forum_id = bbp_get_reply_forum_id( $reply_id );
    450437
     
    548535     */
    549536    public function display_topics_of_tag( $attr, $content = '' ) {
     537        global $bbp;
    550538
    551539        // Sanity check required info
     
    553541            return $content;
    554542
     543        // Unset globals
     544        $this->unset_globals();
     545
     546        // Start output buffer
     547        $this->start( 'bbp_topics_of_tag' );
     548
    555549        // Set passed attribute to $ag_id for clarity
    556         $tag_id = $attr['id'];
    557 
    558         // Setup tax query
    559         $args = array( 'tax_query' => array( array(
    560             'taxonomy' => bbp_get_topic_tag_tax_id(),
    561             'field'    => 'id',
    562             'terms'    => $tag_id
    563         ) ) );
    564 
    565         // Unset globals
    566         $this->unset_globals();
    567 
    568         // Start output buffer
    569         $this->start( 'bbp_topics_of_tag' );
    570 
    571         // Load the topics
    572         bbp_has_topics( $args );
     550        $bbp->current_topic_tag_id = $tag_id = $attr['id'];
     551
     552        // Filter the query
     553        add_filter( 'bbp_pre_has_topics_query', array( $this, 'display_topics_of_tag_query' ) );
    573554
    574555        // Output template
     
    745726        // Return contents of output buffer
    746727        return $this->end();
     728    }
     729
     730    /** Query Filters *********************************************************/
     731
     732    /**
     733     * Filter the query for the topic index
     734     *
     735     * @since bbPress (rxxxx)
     736     *
     737     * @param array $args
     738     * @return array
     739     */
     740    public function display_topic_index_query( $args = array() ) {
     741        $args['author']        = 0;
     742        $args['show_stickies'] = true;
     743        $args['order']         = 'DESC';
     744        return $args;
     745    }
     746
     747    /**
     748     * Filter the query for the topic index
     749     *
     750     * @since bbPress (rxxxx)
     751     *
     752     * @param array $args
     753     * @return array
     754     */
     755    public function display_topic_query( $args = array() ) {
     756        global $bbp;
     757
     758        $args['meta_query'] = array( array(
     759            'key'     => '_bbp_topic_id',
     760            'value'   => $bbp->current_topic_id,
     761            'compare' => '='
     762        ) );
     763
     764        return $args;
     765    }
     766
     767    /**
     768     * Filter the query for topic tags
     769     *
     770     * @since bbPress (r3637)
     771     *
     772     * @global bbPress $bbp
     773     * @param array $args
     774     * @return array
     775     */
     776    public function display_topics_of_tag_query( $args = array() ) {
     777        global $bbp;
     778
     779        $args['tax_query'] = array( array(
     780            'taxonomy' => bbp_get_topic_tag_tax_id(),
     781            'field'    => 'id',
     782            'terms'    => $bbp->current_topic_tag_id
     783        ) );
     784
     785        return $args;
    747786    }
    748787}
  • branches/plugin/bbp-includes/bbp-topic-template.php

    r3636 r3637  
    7676
    7777    // Default arguments
    78     $default = array (
     78    $default = array(
    7979
    8080        // Narrow query down to bbPress topics
     
    111111        'post_status'    => $default_status,
    112112    );
     113
     114    // Maybe query for topic tags
     115    if ( !bbp_is_query_name( 'bbp_widget' ) && bbp_is_topic_tag() ) {
     116        $default['term']     = bbp_get_topic_tag_slug();
     117        $default['taxonomy'] = bbp_get_topic_tag_tax_id();
     118    }
    113119
    114120    // Filter the default arguments
  • branches/plugin/bbp-themes/bbp-twentyten/css/bbpress.css

    r3635 r3637  
    631631-------------------------------------------------------------- */
    632632
    633 .bbp-topics-front tr.super-sticky td,
    634 .bbp-topics tr.super-sticky td,
    635 .bbp-topics tr.sticky td,
    636 .bbp-forum-content tr.sticky td {
     633.bbp-topics-front ul.super-sticky,
     634.bbp-topics ul.super-sticky,
     635.bbp-topics ul.sticky,
     636.bbp-forum-content ul.sticky {
    637637    background-color: #ffffe0 !important;
    638638    font-size: 1.1em;
  • branches/plugin/bbpress.php

    r3618 r3637  
    231231     */
    232232    public $current_reply_id = 0;
     233
     234    /**
     235     * @var string Current topic tag id
     236     */
     237    public $current_topic_tag_id = 0;
    233238
    234239    /** Users *****************************************************************/
Note: See TracChangeset for help on using the changeset viewer.