Skip to:
Content

bbPress.org

Changeset 4033


Ignore:
Timestamp:
06/29/2012 12:15:12 AM (9 years ago)
Author:
johnjamesjacoby
Message:

Widgets:

  • Remove 'bbp_widget' checks.
  • Turn widgets into new WP_Query's to prevent stomping main forum/topic/reply queries.
  • Fixes #1867.
  • See #1865.
Location:
branches/plugin/bbp-includes
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/plugin/bbp-includes/bbp-common-functions.php

    r4023 r4033  
    292292    global $wp_query;
    293293
    294     // Make sure to not paginate widget queries
    295     if ( !bbp_is_query_name( 'bbp_widget' ) ) {
    296 
    297         // Check the query var
    298         if ( get_query_var( 'paged' ) ) {
    299             $paged = get_query_var( 'paged' );
    300 
    301         // Check query paged
    302         } elseif ( !empty( $wp_query->query['paged'] ) ) {
    303             $paged = $wp_query->query['paged'];
    304         }
    305 
    306         // Paged found
    307         if ( !empty( $paged ) ) {
    308             return (int) $paged;
    309         }
    310     }
     294    // Check the query var
     295    if ( get_query_var( 'paged' ) ) {
     296        $paged = get_query_var( 'paged' );
     297
     298    // Check query paged
     299    } elseif ( !empty( $wp_query->query['paged'] ) ) {
     300        $paged = $wp_query->query['paged'];
     301    }
     302
     303    // Paged found
     304    if ( !empty( $paged ) )
     305        return (int) $paged;
    311306
    312307    // Default to first page
  • branches/plugin/bbp-includes/bbp-core-widgets.php

    r3966 r4033  
    367367     * @uses current_user_can() To check if the current user can read
    368368     *                           private() To resety name
    369      * @uses bbp_set_query_name() To set the query name to 'bbp_widget'
    370369     * @uses bbp_reset_query_name() To reset the query name
    371370     * @uses bbp_has_forums() The main forum loop
     
    381380        $title        = apply_filters( 'bbp_forum_widget_title', $instance['title'] );
    382381        $parent_forum = !empty( $instance['parent_forum'] ) ? $instance['parent_forum'] : '0';
    383 
    384         $forums_query = array(
     382        $widget_query = new WP_Query( array(
    385383            'post_parent'    => $parent_forum,
     384            'post_type'      => bbp_get_forum_post_type(),
    386385            'posts_per_page' => get_option( '_bbp_forums_per_page', 50 ),
    387386            'orderby'        => 'menu_order',
    388387            'order'          => 'ASC'
    389         );
    390 
    391         bbp_set_query_name( 'bbp_widget' );
    392 
    393         if ( bbp_has_forums( $forums_query ) ) :
     388        ) );
     389
     390        if ( $widget_query->have_posts() ) :
    394391
    395392            echo $before_widget;
     
    398395            <ul>
    399396
    400                 <?php while ( bbp_forums() ) : bbp_the_forum(); ?>
    401 
    402                     <li><a class="bbp-forum-title" href="<?php bbp_forum_permalink(); ?>" title="<?php bbp_forum_title(); ?>"><?php bbp_forum_title(); ?></a></li>
     397                <?php while ( $widget_query->have_posts() ) : $widget_query->the_post(); ?>
     398
     399                    <li><a class="bbp-forum-title" href="<?php bbp_forum_permalink( $widget_query->post->ID ); ?>" title="<?php bbp_forum_title( $widget_query->post->ID ); ?>"><?php bbp_forum_title( $widget_query->post->ID ); ?></a></li>
    403400
    404401                <?php endwhile; ?>
     
    516513     * @param array $instance
    517514     * @uses apply_filters() Calls 'bbp_topic_widget_title' with the title
    518      * @uses bbp_set_query_name() To set the query name to 'bbp_widget'
    519      * @uses bbp_reset_query_name() To reset the query name
    520      * @uses bbp_has_topics() The main topic loop
    521      * @uses bbp_topics() To check whether there are more topics available
    522      *                     in the loop
    523      * @uses bbp_the_topic() Loads up the current topic in the loop
    524515     * @uses bbp_topic_permalink() To display the topic permalink
    525516     * @uses bbp_topic_title() To display the topic title
     
    540531
    541532        // Query defaults
    542         $topics_query = array(
     533        $widget_query = new WP_Query( array(
    543534            'author'         => 0,
     535            'post_type'      => bbp_get_topic_post_type(),
    544536            'post_parent'    => $parent_forum,
    545537            'posts_per_page' => $max_shown > $pop_check ? $max_shown : $pop_check,
    546             'posts_per_page' => $max_shown,
     538            'post_status'    => join( ',', array( bbp_get_public_status_id(), bbp_get_closed_status_id() ) ),
    547539            'show_stickies'  => false,
    548540            'order'          => 'DESC',
    549         );
    550 
    551         bbp_set_query_name( 'bbp_widget' );
     541        ) );
    552542
    553543        // Topics exist
    554         if ( bbp_has_topics( $topics_query ) ) :
     544        if ( $widget_query->have_posts() ) :
    555545           
    556546            // Sort by time
     
    562552                <ul>
    563553
    564                     <?php while ( bbp_topics() ) : bbp_the_topic(); ?>
    565 
    566                         <li>
    567                             <a class="bbp-forum-title" href="<?php bbp_topic_permalink(); ?>" title="<?php bbp_topic_title(); ?>"><?php bbp_topic_title(); ?></a><?php if ( 'on' == $show_date ) bbp_get_topic_last_active_time(); ?>
    568                         </li>
     554                    <?php while ( $widget_query->have_posts() ) :
     555
     556                        $widget_query->the_post();
     557                        $topic_id = bbp_get_topic_id( $widget_query->post->ID ); ?>
     558
     559                        <li><a class="bbp-forum-title" href="<?php bbp_topic_permalink( $topic_id ); ?>" title="<?php bbp_topic_title( $topic_id ); ?>"><?php bbp_topic_title( $topic_id ); ?></a><?php if ( 'on' == $show_date ) : ?><div><?php bbp_topic_last_active_time( $topic_id ); endif; ?></div></li>
    569560
    570561                    <?php endwhile; ?>
     
    580571                echo $before_title . $title . $after_title;
    581572
    582                 while ( bbp_topics() ) {
    583                     bbp_the_topic();
    584                     $topics[bbp_get_topic_id()] = bbp_get_topic_reply_count();
     573                while ( $widget_query->have_posts() ) {
     574                    $topics[$widget_query->post->ID] = bbp_get_topic_reply_count( $widget_query->post->ID );
    585575                }
    586576
     
    594584                    <?php foreach ( $topics as $topic_id => $topic_reply_count ) : ?>
    595585
    596                         <li><a class="bbp-topic-title" href="<?php bbp_topic_permalink( $topic_id ); ?>" title="<?php bbp_topic_title( $topic_id ); ?>"><?php bbp_topic_title( $topic_id ); ?></a><?php if ( 'on' == $show_date ) bbp_get_topic_last_active_time( $topic_id ); ?></li>
     586                        <li><a class="bbp-topic-title" href="<?php bbp_topic_permalink( $topic_id ); ?>" title="<?php bbp_topic_title( $topic_id ); ?>"><?php bbp_topic_title( $topic_id ); ?></a><?php if ( 'on' == $show_date ) : ?><div><?php bbp_topic_last_active_time( $topic_id ); endif; ?></div></li>
    597587
    598588                    <?php
     
    710700     * @param array $instance
    711701     * @uses apply_filters() Calls 'bbp_reply_widget_title' with the title
    712      * @uses bbp_set_query_name() To set the query name to 'bbp_widget'
    713      * @uses bbp_reset_query_name() To reset the query name
    714      * @uses bbp_has_replies() The main reply loop
    715      * @uses bbp_replies() To check whether there are more replies available
    716      *                     in the loop
    717      * @uses bbp_the_reply() Loads up the current reply in the loop
    718702     * @uses bbp_get_reply_author_link() To get the reply author link
    719703     * @uses bbp_get_reply_author() To get the reply author name
     
    729713        extract( $args );
    730714
    731         $title     = apply_filters( 'bbp_replies_widget_title', $instance['title'] );
    732         $max_shown = !empty( $instance['max_shown'] ) ? $instance['max_shown'] : '5';
    733         $show_date = !empty( $instance['show_date'] ) ? 'on'                   : false;
    734 
    735         // Query defaults
    736         $replies_query = array(
     715        $title        = apply_filters( 'bbp_replies_widget_title', $instance['title'] );
     716        $max_shown    = !empty( $instance['max_shown'] ) ? $instance['max_shown']    : '5';
     717        $show_date    = !empty( $instance['show_date'] ) ? 'on'                      : false;
     718        $post_types   = !empty( $instance['post_type'] ) ? array( bbp_get_topic_post_type(), bbp_get_reply_post_type() ) : bbp_get_reply_post_type();
     719        $widget_query = new WP_Query( array(
     720            'post_type'      => $post_types,
    737721            'post_status'    => join( ',', array( bbp_get_public_status_id(), bbp_get_closed_status_id() ) ),
    738             'posts_per_page' => $max_shown,
    739             'order'          => 'DESC'
    740         );
    741 
    742         // Set the query name
    743         bbp_set_query_name( 'bbp_widget' );
     722            'posts_per_page' => $max_shown
     723        ) );
    744724
    745725        // Get replies and display them
    746         if ( bbp_has_replies( $replies_query ) ) :
     726        if ( $widget_query->have_posts() ) :
    747727
    748728            echo $before_widget;
     
    751731            <ul>
    752732
    753                 <?php while ( bbp_replies() ) : bbp_the_reply(); ?>
     733                <?php while ( $widget_query->have_posts() ) : $widget_query->the_post(); ?>
    754734
    755735                    <li>
    756 
    757736                        <?php
    758                         $author_link = bbp_get_reply_author_link( array( 'type' => 'both', 'size' => 14 ) );
    759                         $reply_link  = '<a class="bbp-reply-topic-title" href="' . esc_url( bbp_get_reply_url() ) . '" title="' . bbp_get_reply_excerpt( bbp_get_reply_id(), 50 ) . '">' . bbp_get_reply_topic_title() . '</a>';
     737
     738                        $reply_id    = bbp_get_reply_id( $widget_query->post->ID );
     739                        $author_link = bbp_get_reply_author_link( array( 'post_id' => $reply_id, 'type' => 'both', 'size' => 14 ) );
     740                        $reply_link  = '<a class="bbp-reply-topic-title" href="' . esc_url( bbp_get_reply_url( $reply_id ) ) . '" title="' . bbp_get_reply_excerpt( $reply_id, 50 ) . '">' . bbp_get_reply_topic_title( $reply_id ) . '</a>';
    760741
    761742                        /* translators: bbpress replies widget: 1: reply author, 2: reply link, 3: reply date, 4: reply time */
    762743                        if ( $show_date == 'on' ) {
    763                             printf( _x( '%1$s on %2$s, %3$s, %4$s', 'widgets', 'bbpress' ), $author_link, $reply_link, get_the_date(), get_the_time() );
     744                            printf( _x( '%1$s on %2$s %3$s, %4$s', 'widgets', 'bbpress' ), $author_link, $reply_link, '<div>' . get_the_date(), get_the_time() . '</div>' );
    764745                        } else {
    765                             printf( _x( '%1$s on %2$s',             'widgets', 'bbpress' ), $author_link, $reply_link );
     746                            printf( _x( '%1$s on %2$s',            'widgets', 'bbpress' ), $author_link, $reply_link );
    766747                        }
    767748
     
    777758
    778759        endif;
    779 
    780         bbp_reset_query_name();
    781760    }
    782761
  • branches/plugin/bbp-includes/bbp-reply-template.php

    r3975 r4033  
    7171
    7272    // Skip topic_id if in the replies widget query
    73     if ( !bbp_is_query_name( 'bbp_widget' ) ) {
    74         $parent_args['meta_query'] = array( array(
    75             'key'     => '_bbp_topic_id',
    76             'value'   => bbp_get_topic_id(),
    77             'compare' => '='
    78         ) );
    79 
    80         // What are the default allowed statuses (based on user caps)
    81         if ( bbp_get_view_all( 'edit_others_replies' ) ) {
    82             $default_status = join( ',', array( bbp_get_public_status_id(), bbp_get_closed_status_id(), bbp_get_spam_status_id(), bbp_get_trash_status_id() ) );
    83         }
    84 
    85     // Prevent debug notice
    86     } else {
    87         $parent_args = array();
    88     }
     73    $parent_args['meta_query'] = array( array(
     74        'key'     => '_bbp_topic_id',
     75        'value'   => bbp_get_topic_id(),
     76        'compare' => '='
     77    ) );
     78
     79    // What are the default allowed statuses (based on user caps)
     80    if ( bbp_get_view_all( 'edit_others_replies' ) )
     81        $default_status = join( ',', array( bbp_get_public_status_id(), bbp_get_closed_status_id(), bbp_get_spam_status_id(), bbp_get_trash_status_id() ) );
    8982
    9083    // Default query args
     
    120113
    121114    // Only add pagination if query returned results
    122     if ( !bbp_is_query_name( 'bbp_widget' ) && (int) $bbp->reply_query->found_posts && (int) $bbp->reply_query->posts_per_page ) {
     115    if ( (int) $bbp->reply_query->found_posts && (int) $bbp->reply_query->posts_per_page ) {
    123116
    124117        // If pretty permalinks are enabled, make our pagination pretty
  • branches/plugin/bbp-includes/bbp-template-functions.php

    r3984 r4033  
    195195 * @uses current_user_can() To check if the current user can edit the user
    196196 * @uses apply_filters() Calls 'enable_edit_any_user_configuration' with true
    197  * @uses bbp_is_query_name() Check if query name is 'bbp_widget'
    198197 * @uses bbp_get_view_query_args() To get the view query args
    199198 * @uses bbp_get_forum_post_type() To get the forum post type
     
    287286
    288287        // Set author_name as current user's nicename to get correct posts
    289         if ( !bbp_is_query_name( 'bbp_widget' ) ) {
    290             $posts_query->set( 'author_name', $user->user_nicename );
    291         }
     288        $posts_query->set( 'author_name', $user->user_nicename );
    292289
    293290        // Set the displayed user global to this user
  • branches/plugin/bbp-includes/bbp-topic-template.php

    r3981 r4033  
    8686
    8787    // What are the default allowed statuses (based on user caps)
    88     if ( !bbp_is_query_name( 'bbp_widget' ) && bbp_get_view_all() )
     88    if ( bbp_get_view_all() )
    8989        $default_post_status = join( ',', array( bbp_get_public_status_id(), bbp_get_closed_status_id(), bbp_get_spam_status_id(), bbp_get_trash_status_id() ) );
    9090    else
     
    111111
    112112    // Maybe query for topic tags
    113     if ( !bbp_is_query_name( 'bbp_widget' ) && bbp_is_topic_tag() ) {
     113    if ( bbp_is_topic_tag() ) {
    114114        $default['term']     = bbp_get_topic_tag_slug();
    115115        $default['taxonomy'] = bbp_get_topic_tag_tax_id();
     
    226226
    227227    // Only add pagination if query returned results
    228     if ( !bbp_is_query_name( 'bbp_widget' ) && ( (int) $bbp->topic_query->post_count || (int) $bbp->topic_query->found_posts ) && (int) $bbp->topic_query->posts_per_page ) {
     228    if ( ( (int) $bbp->topic_query->post_count || (int) $bbp->topic_query->found_posts ) && (int) $bbp->topic_query->posts_per_page ) {
    229229
    230230        // Limit the number of topics shown based on maximum allowed pages
Note: See TracChangeset for help on using the changeset viewer.