Making WordPress.org


Ignore:
Timestamp:
09/05/2016 11:33:22 PM (10 years ago)
Author:
jmdodd
Message:

Support Forums: First pass at fixing plugin and theme feeds for support topics and reviews.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-directory-compat.php

    r3962 r3972  
    2020        var $authors      = null;
    2121        var $contributors = null;
     22        var $query        = null;
    2223
    2324        public function init() {
    2425                if ( defined( 'WPORG_SUPPORT_FORUMS_BLOGID' ) && get_current_blog_id() == WPORG_SUPPORT_FORUMS_BLOGID ) {
     26                        // Intercept feed requests prior to bbp_request_feed_trap.
     27                        add_filter( 'bbp_request', array( $this, 'request' ), 9 );
     28
    2529                        // Define the taxonomy and query vars for this view.
    2630                        add_action( 'plugins_loaded', array( $this, 'always_load' ) );
     
    4246                        add_action( 'bbp_new_topic_post_extras', array( $this, 'topic_post_extras' ) );
    4347                }
     48        }
     49
     50        /**
     51         * Handle view feeds for this compat.
     52         */
     53        public function request( $query_vars ) {
     54                if ( isset( $query_vars['feed'] ) && isset( $query_vars[ $this->query_var() ] ) ) {
     55
     56                        // Compat views are hooked in a special order, and need help with feed queries.
     57                        if ( isset( $query_vars['bbp_view'] ) && in_array( $query_vars['bbp_view'], array( $this->compat(), 'reviews' ) ) ) {
     58                                $this->query = $query_vars;
     59                                add_filter( 'bbp_get_view_query_args', array( $this, 'get_view_query_args_for_feed' ), 10, 2 );
     60                        }
     61                }
     62                return $query_vars;
     63        }
     64
     65        public function get_view_query_args_for_feed( $retval, $view ) {
     66                switch ( $this->query['bbp_view'] ) {
     67                        // Return new topics from the support forum.
     68                        case $this->compat() :
     69                                return array(
     70                                        'post_parent'    => $this->forum_id(),
     71                                        'tax_query'      => array( array(
     72                                                'taxonomy'   => $this->taxonomy(),
     73                                                'field'      => 'slug',
     74                                                'terms'      => $this->query[ $this->query_var() ],
     75                                        ) ),
     76                                        'show_stickies'  => false,
     77                                );
     78                                break;
     79
     80                        // Return new topics from the reviews forum.
     81                        case 'reviews' :
     82                                return array(
     83                                        'post_parent'    => Plugin::REVIEWS_FORUM_ID,
     84                                        'tax_query'      => array( array(
     85                                                'taxonomy'   => $this->taxonomy(),
     86                                                'field'      => 'slug',
     87                                                'terms'      => $this->query[ $this->query_var() ],
     88                                        ) ),
     89                                        'show_stickies'  => false,
     90                                );
     91                                break;
     92                }
     93                return $retval;
    4494        }
    4595
Note: See TracChangeset for help on using the changeset viewer.