| | 256 | |
| | 257 | /** |
| | 258 | * Is this the main members query? |
| | 259 | * |
| | 260 | * @since BuddyPress (1.9) |
| | 261 | * |
| | 262 | * @return boolean |
| | 263 | */ |
| | 264 | public function is_main_query() { |
| | 265 | return (bool) ( self::get_main_query() === $this ); |
| | 266 | } |
| | 267 | |
| | 268 | /** |
| | 269 | * @since BuddyPress (1.9) |
| | 270 | */ |
| | 271 | public function set_main_query( $members_query = '' ) { |
| | 272 | $bp = buddypress(); |
| | 273 | |
| | 274 | // Bail if no members component (how did this happen) |
| | 275 | if ( empty( $bp->members->id ) ) { |
| | 276 | return; |
| | 277 | } |
| | 278 | |
| | 279 | // Use the current object if no query passed |
| | 280 | if ( empty( $members_query ) ) { |
| | 281 | $members_query = $this; |
| | 282 | } |
| | 283 | |
| | 284 | // Set the main query |
| | 285 | $bp->main_queries[ $bp->members->id ] = $members_query; |
| | 286 | } |
| | 287 | |
| | 288 | /** Static Methods ********************************************************/ |
| | 289 | |
| | 290 | /** |
| | 291 | * @since BuddyPress (1.9) |
| | 292 | */ |
| | 293 | public static function get_main_query() { |
| | 294 | $bp = buddypress(); |
| | 295 | |
| | 296 | // Bail if no members component (how did this happen) |
| | 297 | if ( empty( $bp->members->id ) ) { |
| | 298 | return false; |
| | 299 | } |
| | 300 | |
| | 301 | // Bail if no main query already set |
| | 302 | if ( empty( $bp->main_queries[ $bp->members->id ] ) ) { |
| | 303 | return false; |
| | 304 | } |
| | 305 | |
| | 306 | // Get and return the main members query |
| | 307 | return $bp->main_queries[ $bp->members->id ]; |
| | 308 | } |
| | 309 | |
| | 310 | /** |
| | 311 | * |
| | 312 | * @since BuddyPress (1.9) |
| | 313 | * @global type $members_template |
| | 314 | */ |
| | 315 | public static function reset_query() { |
| | 316 | global $members_template; |
| | 317 | |
| | 318 | $main_query = self::get_main_query(); |
| | 319 | |
| | 320 | if ( false !== $main_query ) { |
| | 321 | $members_template = $main_query; |
| | 322 | } else { |
| | 323 | unset( $members_template ); |
| | 324 | } |
| | 325 | } |
| | 328 | /** |
| | 329 | * Destroy the previous members query and set up a new members query. |
| | 330 | * |
| | 331 | * This should be used after {@link bp_has_members()} and before another {@link |
| | 332 | * bp_has_members()}. This will remove obscure bugs that occur when the previous |
| | 333 | * BP_Core_Members_Template object is not destroyed properly before another is |
| | 334 | * set up. (This is akin to wp_reset_query() in WordPress core.) |
| | 335 | * |
| | 336 | * @since BuddyPress (1.9) |
| | 337 | * |
| | 338 | * @uses $members_template |
| | 339 | * @uses BP_Core_Members_Template::reset_query() |
| | 340 | */ |
| | 341 | function bp_reset_members_query() { |
| | 342 | global $members_template; |
| | 343 | |
| | 344 | $members_template->reset_query(); |
| | 345 | } |
| | 346 | |
| 318 | | $members_template = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras, $exclude, $meta_key, $meta_value, $page_arg ); |
| | 407 | // Query for members |
| | 408 | $members_query = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras, $exclude, $meta_key, $meta_value, $page_arg ); |
| | 409 | |
| | 410 | // Setup the main query |
| | 411 | if ( empty( $members_template ) ) { |
| | 412 | $members_query->set_main_query(); |
| | 413 | } |
| | 414 | |
| | 415 | // Setup the members template with the most recent query |
| | 416 | $members_template = $members_query; |
| | 417 | |
| | 418 | // Clean up |
| | 419 | unset( $members_query ); |
| | 420 | |