Changeset 5625
- Timestamp:
- 07/07/2017 05:38:42 PM (8 years ago)
- Location:
- sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-directory-compat.php
r5563 r5625 371 371 ( bbp_is_single_view() && ! in_array( bbp_get_view_id(), $this->compat_views() ) ) 372 372 || 373 ( bbp_is_single_user_topics() || bbp_is_single_user_replies() || get_query_var( 'wporg_single_user_reviews' ) ) 373 ( bbp_is_single_user_topics() || bbp_is_single_user_replies() ) 374 || 375 get_query_var( 'wporg_single_user_reviews' ) 376 || 377 get_query_var( 'wporg_single_user_active_topics' ) 378 || 379 get_query_var( 'wporg_single_user_topics_replied_to' ) 374 380 ) { 375 381 $terms = get_the_terms( $topic_id, $this->taxonomy() ); -
sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-performance-optimizations.php
r5162 r5625 199 199 add_filter( 'posts_where', array( $this, 'posts_in_last_year' ) ); 200 200 } 201 return $r; 202 } 203 204 // Only look at the last year of topics for user's "Active Topics" view. 205 if ( get_query_var( 'wporg_single_user_active_topics' ) ) { 206 add_filter( 'posts_where', array( $this, 'posts_in_last_year' ) ); 201 207 return $r; 202 208 } -
sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-support-compat.php
r5286 r5625 30 30 add_filter( 'bbp_request', array( $this, 'request' ), 9 ); 31 31 32 // Add views for plugin committer/contributor.32 // Add query vars and rewrite rules for plugin committer/contributor. 33 33 add_filter( 'query_vars', array( $this, 'add_query_var' ) ); 34 34 add_action( 'bbp_add_rewrite_rules', array( $this, 'add_rewrite_rules' ) ); … … 37 37 // on parse_query at priority 2. 38 38 add_action( 'parse_query', array( $this, 'parse_query' ), 0 ); 39 40 // Parse user's reviews query.41 add_action( 'parse_query', array( $this, 'parse_user_reviews_query' ) );42 add_filter( 'bbp_after_has_topics_parse_args', array( $this, 'parse_user_reviews_query_args' ) );43 add_filter( 'bbp_topic_pagination', array( $this, 'parse_user_reviews_pagination_args' ) );44 add_filter( 'bbp_before_title_parse_args', array( $this, 'parse_user_reviews_title_args' ) );45 39 46 40 // Exclude compat forums from forum dropdown. … … 215 209 216 210 /** 217 * Set WP_Query::bbp_is_single_user_profile to false on user's reviews page. 218 * 219 * @param WP_Query $query Current query object. 220 */ 221 public function parse_user_reviews_query( $query ) { 222 if ( get_query_var( 'wporg_single_user_reviews' ) ) { 223 $query->bbp_is_single_user_profile = false; 224 } 225 } 226 227 /** 228 * Set forum ID for user's reviews query. 229 * 230 * @param array $args WP_Query arguments. 231 * @return array Filtered query arguments. 232 */ 233 public function parse_user_reviews_query_args( $args ) { 234 if ( get_query_var( 'wporg_single_user_reviews' ) ) { 235 $args['post_parent'] = Plugin::REVIEWS_FORUM_ID; 236 } elseif ( bbp_is_single_user_topics() ) { 237 $args['post_parent__not_in'] = array( Plugin::REVIEWS_FORUM_ID ); 238 } 239 240 return $args; 241 } 242 243 /** 244 * Set 'base' argument for pagination links on user's reviews page. 245 * 246 * @param array $args Pagination arguments. 247 * @return array Filtered pagination arguments. 248 */ 249 public function parse_user_reviews_pagination_args( $args ) { 250 if ( get_query_var( 'wporg_single_user_reviews' ) ) { 251 $args['base'] = bbp_get_user_profile_url( bbp_get_displayed_user_id() ) . 'reviews/'; 252 $args['base'] .= bbp_get_paged_slug() . '/%#%/'; 253 } 254 255 return $args; 256 } 257 258 /** 259 * Set title for user's reviews page. 260 * 261 * @param array $title Title parts. 262 * @return array Filtered title parts. 263 */ 264 public function parse_user_reviews_title_args( $title ) { 265 if ( get_query_var( 'wporg_single_user_reviews' ) ) { 266 if ( bbp_is_user_home() ) { 267 $title['text'] = __( 'Your Reviews', 'wporg-forums' ); 268 } else { 269 $title['text'] = get_userdata( bbp_get_user_id() )->display_name; 270 /* translators: user's display name */ 271 $title['format'] = __( "%s's Reviews", 'wporg-forums' ); 272 } 273 } 274 275 return $title; 276 } 277 211 * Add query vars for plugin committer/contributor views. 212 * 213 * @param array $query_vars Query vars. 214 * @return array Filtered query vars. 215 */ 278 216 public function add_query_var( $query_vars ) { 279 217 $query_vars[] = 'wporg_user_login'; 280 $query_vars[] = 'wporg_single_user_reviews';281 218 return $query_vars; 282 219 } 283 220 221 /** 222 * Add rewrite rules for plugin committer/contributor views. 223 */ 284 224 public function add_rewrite_rules() { 285 225 $priority = 'top'; … … 287 227 $plugin_committer_rule = bbp_get_view_slug() . '/plugin-committer/([^/]+)/'; 288 228 $plugin_contributor_rule = bbp_get_view_slug() . '/plugin-contributor/([^/]+)/'; 289 $user_reviews_rule = bbp_get_user_slug() . '/([^/]+)/reviews/';290 229 291 230 $feed_id = 'feed'; 292 231 $view_id = bbp_get_view_rewrite_id(); 293 $user_id = bbp_get_user_rewrite_id();294 232 $paged_id = bbp_get_paged_rewrite_id(); 295 233 … … 310 248 add_rewrite_rule( $plugin_contributor_rule . $paged_rule, 'index.php?' . $view_id . '=plugin-contributor&wporg_user_login=$matches[1]&' . $paged_id . '=$matches[2]', $priority ); 311 249 add_rewrite_rule( $plugin_contributor_rule . $feed_rule, 'index.php?' . $view_id . '=plugin-contributor&wporg_user_login=$matches[1]&' . $feed_id . '=$matches[2]', $priority ); 312 313 // Add user's reviews rewrite rules.314 add_rewrite_rule( $user_reviews_rule . $base_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_reviews=1', $priority );315 add_rewrite_rule( $user_reviews_rule . $paged_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_reviews=1&' . $paged_id . '=$matches[2]', $priority );316 add_rewrite_rule( $user_reviews_rule . $feed_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_reviews=1&' . $feed_id . '=$matches[2]', $priority );317 250 } 318 251 -
sites/trunk/wordpress.org/public_html/wp-content/plugins/support-forums/inc/class-users.php
r5605 r5625 18 18 // Only allow 3 published topics from a user in the first 24 hours. 19 19 add_action( 'bbp_new_topic_pre_insert', array( $this, 'limit_new_user_topics' ) ); 20 21 // Add query vars and rewrite rules for user's topic and review queries. 22 add_filter( 'query_vars', array( $this, 'add_query_vars' ) ); 23 add_action( 'bbp_add_rewrite_rules', array( $this, 'add_rewrite_rules' ) ); 24 25 // Parse user's topic and review queries. 26 add_action( 'parse_query', array( $this, 'parse_user_topics_query' ) ); 27 add_filter( 'posts_groupby', array( $this, 'parse_user_topics_posts_groupby' ), 10, 2 ); 28 add_filter( 'bbp_after_has_topics_parse_args', array( $this, 'parse_user_topics_query_args' ) ); 29 add_filter( 'bbp_topic_pagination', array( $this, 'parse_user_topics_pagination_args' ) ); 30 add_filter( 'bbp_replies_pagination', array( $this, 'parse_user_topics_pagination_args' ) ); 31 add_filter( 'bbp_before_title_parse_args', array( $this, 'parse_user_topics_title_args' ) ); 20 32 } 21 33 … … 88 100 } 89 101 102 /** 103 * Add query vars for user's "Reviews Written", "Active Topics", 104 * and "Topics Replied To" pages. 105 * 106 * @param array $query_vars Query vars. 107 * @return array Filtered query vars. 108 */ 109 public function add_query_vars( $query_vars ) { 110 $query_vars[] = 'wporg_single_user_reviews'; 111 $query_vars[] = 'wporg_single_user_active_topics'; 112 $query_vars[] = 'wporg_single_user_topics_replied_to'; 113 return $query_vars; 114 } 115 116 /** 117 * Add rewrite rules for user's "Reviews Written", "Active Topics", 118 * and "Topics Replied To" pages. 119 */ 120 public function add_rewrite_rules() { 121 $priority = 'top'; 122 123 $user_reviews_rule = bbp_get_user_slug() . '/([^/]+)/reviews/'; 124 $user_active_topics_rule = bbp_get_user_slug() . '/([^/]+)/active/'; 125 $user_topics_replied_to_rule = bbp_get_user_slug() . '/([^/]+)/replied-to/'; 126 127 $feed_id = 'feed'; 128 $user_id = bbp_get_user_rewrite_id(); 129 $paged_id = bbp_get_paged_rewrite_id(); 130 131 $feed_slug = 'feed'; 132 $paged_slug = bbp_get_paged_slug(); 133 134 $base_rule = '?$'; 135 $feed_rule = $feed_slug . '/?$'; 136 $paged_rule = $paged_slug . '/?([0-9]{1,})/?$'; 137 138 // Add user's "Reviews Written" page rewrite rules. 139 add_rewrite_rule( $user_reviews_rule . $base_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_reviews=1', $priority ); 140 add_rewrite_rule( $user_reviews_rule . $paged_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_reviews=1&' . $paged_id . '=$matches[2]', $priority ); 141 add_rewrite_rule( $user_reviews_rule . $feed_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_reviews=1&' . $feed_id . '=$matches[2]', $priority ); 142 143 // Add user's "Active Topics" page rewrite rules. 144 add_rewrite_rule( $user_active_topics_rule . $base_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_active_topics=1', $priority ); 145 add_rewrite_rule( $user_active_topics_rule . $paged_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_active_topics=1&' . $paged_id . '=$matches[2]', $priority ); 146 add_rewrite_rule( $user_active_topics_rule . $feed_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_active_topics=1&' . $feed_id . '=$matches[2]', $priority ); 147 148 // Add user's "Topics Replied To" page rewrite rules. 149 add_rewrite_rule( $user_topics_replied_to_rule . $base_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_topics_replied_to=1', $priority ); 150 add_rewrite_rule( $user_topics_replied_to_rule . $paged_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_topics_replied_to=1&' . $paged_id . '=$matches[2]', $priority ); 151 add_rewrite_rule( $user_topics_replied_to_rule . $feed_rule, 'index.php?' . $user_id . '=$matches[1]&wporg_single_user_topics_replied_to=1&' . $feed_id . '=$matches[2]', $priority ); 152 } 153 154 /** 155 * Set WP_Query::bbp_is_single_user_profile to false on user's "Reviews Written", 156 * "Active Topics", and "Topics Replied To" pages. 157 * 158 * @param WP_Query $query Current query object. 159 */ 160 public function parse_user_topics_query( $query ) { 161 if ( 162 get_query_var( 'wporg_single_user_reviews' ) 163 || 164 get_query_var( 'wporg_single_user_active_topics' ) 165 || 166 get_query_var( 'wporg_single_user_topics_replied_to' ) 167 ) { 168 $query->bbp_is_single_user_profile = false; 169 } 170 } 171 172 /** 173 * Filter the GROUP BY clause on user's "Topics Replied To" page 174 * in order to group replies by topic. 175 * 176 * @param string $groupby The GROUP BY clause of the query. 177 * @param WP_Query $query The WP_Query instance. 178 * @return string Filtered GROUP BY clause. 179 */ 180 public function parse_user_topics_posts_groupby( $groupby, $query ) { 181 global $wpdb; 182 183 if ( 'reply' === $query->get( 'post_type' ) && get_query_var( 'wporg_single_user_topics_replied_to' ) ) { 184 $groupby = "$wpdb->posts.post_parent"; 185 } 186 187 return $groupby; 188 } 189 190 /** 191 * Set forum ID for user's Reviews query. 192 * 193 * @param array $args WP_Query arguments. 194 * @return array Filtered query arguments. 195 */ 196 public function parse_user_topics_query_args( $args ) { 197 if ( get_query_var( 'wporg_single_user_reviews' ) ) { 198 $args['post_parent'] = Plugin::REVIEWS_FORUM_ID; 199 } elseif ( bbp_is_single_user_topics() || get_query_var( 'wporg_single_user_active_topics' ) ) { 200 $args['post_parent__not_in'] = array( Plugin::REVIEWS_FORUM_ID ); 201 } 202 203 return $args; 204 } 205 206 /** 207 * Set 'base' argument for pagination links on user's "Reviews Written", 208 * "Active Topics", and "Topics Replied To" pages. 209 * 210 * @param array $args Pagination arguments. 211 * @return array Filtered pagination arguments. 212 */ 213 public function parse_user_topics_pagination_args( $args ) { 214 if ( get_query_var( 'wporg_single_user_reviews' ) ) { 215 $args['base'] = bbp_get_user_profile_url( bbp_get_displayed_user_id() ) . 'reviews/'; 216 $args['base'] .= bbp_get_paged_slug() . '/%#%/'; 217 } 218 219 if ( get_query_var( 'wporg_single_user_active_topics' ) ) { 220 $args['base'] = bbp_get_user_profile_url( bbp_get_displayed_user_id() ) . 'active/'; 221 $args['base'] .= bbp_get_paged_slug() . '/%#%/'; 222 } 223 224 if ( get_query_var( 'wporg_single_user_topics_replied_to' ) ) { 225 $args['base'] = bbp_get_user_profile_url( bbp_get_displayed_user_id() ) . 'replied-to/'; 226 $args['base'] .= bbp_get_paged_slug() . '/%#%/'; 227 } 228 229 return $args; 230 } 231 232 /** 233 * Set title for user's "Reviews Written", "Active Topics", 234 * and "Topics Replied To" pages. 235 * 236 * @param array $title Title parts. 237 * @return array Filtered title parts. 238 */ 239 public function parse_user_topics_title_args( $title ) { 240 if ( get_query_var( 'wporg_single_user_reviews' ) ) { 241 if ( bbp_is_user_home() ) { 242 $title['text'] = __( 'Your Reviews Written', 'wporg-forums' ); 243 } else { 244 $title['text'] = get_userdata( bbp_get_user_id() )->display_name; 245 /* translators: user's display name */ 246 $title['format'] = __( "%s's Reviews Written", 'wporg-forums' ); 247 } 248 } 249 250 if ( get_query_var( 'wporg_single_user_active_topics' ) ) { 251 if ( bbp_is_user_home() ) { 252 $title['text'] = __( 'Your Active Topics', 'wporg-forums' ); 253 } else { 254 $title['text'] = get_userdata( bbp_get_user_id() )->display_name; 255 /* translators: user's display name */ 256 $title['format'] = __( "%s's Active Topics", 'wporg-forums' ); 257 } 258 } 259 260 if ( get_query_var( 'wporg_single_user_topics_replied_to' ) ) { 261 if ( bbp_is_user_home() ) { 262 $title['text'] = __( "Topics You've Replied To", 'wporg-forums' ); 263 } else { 264 $title['text'] = get_userdata( bbp_get_user_id() )->display_name; 265 /* translators: user's display name */ 266 $title['format'] = __( 'Topics %s Has Replied To', 'wporg-forums' ); 267 } 268 } 269 270 return $title; 271 } 272 90 273 }
Note: See TracChangeset
for help on using the changeset viewer.