Changeset 7087 for trunk/bp-groups/bp-groups-classes.php
- Timestamp:
- 05/19/2013 12:09:30 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-groups/bp-groups-classes.php
r7084 r7087 333 333 334 334 $defaults = array( 335 'type' => 'newest', 335 'type' => null, 336 'orderby' => 'date_created', 337 'order' => 'DESC', 336 338 'per_page' => null, 337 339 'page' => null, … … 342 344 'populate_extras' => true, 343 345 'exclude' => false, 344 'show_hidden' => false 346 'show_hidden' => false, 345 347 ); 346 348 … … 401 403 } 402 404 403 switch ( $r['type'] ) { 404 case 'newest': 405 default: 406 $sql['order'] = " ORDER BY g.date_created DESC"; 407 break; 408 case 'active': 409 $sql[] = "ORDER BY last_activity DESC"; 410 break; 411 case 'popular': 412 $sql[] = "ORDER BY CONVERT(gm1.meta_value, SIGNED) DESC"; 413 break; 414 case 'alphabetical': 415 $sql[] = "ORDER BY g.name ASC"; 416 break; 417 case 'random': 418 $sql[] = "ORDER BY rand()"; 419 break; 405 /** Order/orderby ********************************************/ 406 407 $order = $r['order']; 408 $orderby = $r['orderby']; 409 410 // If a 'type' parameter was passed, parse it and overwrite 411 // 'order' and 'orderby' params passed to the function 412 if ( ! empty( $r['type'] ) ) { 413 $order_orderby = self::convert_type_to_order_orderby( $r['type'] ); 414 415 // If an invalid type is passed, $order_orderby will be 416 // an array with empty values. In this case, we stick 417 // with the default values of $order and $orderby 418 if ( ! empty( $order_orderby['order'] ) ) { 419 $order = $order_orderby['order']; 420 } 421 422 if ( ! empty( $order_orderby['orderby'] ) ) { 423 $orderby = $order_orderby['orderby']; 424 } 425 } 426 427 // Sanitize 'order' 428 $order = bp_esc_sql_order( $order ); 429 430 // Convert 'orderby' into the proper ORDER BY term 431 $orderby = self::convert_orderby_to_order_by_term( $orderby ); 432 433 // Random order is a special case 434 if ( 'rand()' === $orderby ) { 435 $sql[] = "ORDER BY rand()"; 436 } else { 437 $sql[] = "ORDER BY {$orderby} {$order}"; 420 438 } 421 439 … … 541 559 } 542 560 561 /** 562 * Convert the 'type' parameter to 'order' and 'orderby' 563 * 564 * @since BuddyPress (1.8) 565 * @access protected 566 * @param string $type The 'type' shorthand param 567 * @return array 'order' and 'orderby' 568 */ 569 protected function convert_type_to_order_orderby( $type = '' ) { 570 $order = $orderby = ''; 571 572 switch ( $type ) { 573 case 'newest' : 574 $order = 'DESC'; 575 $orderby = 'date_created'; 576 break; 577 578 case 'active' : 579 $order = 'DESC'; 580 $orderby = 'last_activity'; 581 break; 582 583 case 'popular' : 584 $order = 'DESC'; 585 $orderby = 'total_member_count'; 586 break; 587 588 case 'alphabetical' : 589 $order = 'ASC'; 590 $orderby = 'name'; 591 break; 592 593 case 'random' : 594 $order = ''; 595 $orderby = 'random'; 596 break; 597 } 598 599 return array( 'order' => $order, 'orderby' => $orderby ); 600 } 601 602 /** 603 * Convert the 'orderby' param into a proper SQL term/column 604 * 605 * @since BuddyPress (1.8) 606 * @access protected 607 * @param string $orderby 608 * @return string $order_by_term 609 */ 610 protected function convert_orderby_to_order_by_term( $orderby ) { 611 $order_by_term = ''; 612 613 switch ( $orderby ) { 614 case 'date_created' : 615 default : 616 $order_by_term = 'g.date_created'; 617 break; 618 619 case 'last_activity' : 620 $order_by_term = 'last_activity'; 621 break; 622 623 case 'total_group_members' : 624 $order_by_term = 'CONVERT(gm1.meta_value, SIGNED)'; 625 break; 626 627 case 'name' : 628 $order_by_term = 'g.name'; 629 break; 630 631 case 'random' : 632 $order_by_term = 'rand()'; 633 break; 634 } 635 636 return $order_by_term; 637 } 543 638 544 639 function get_by_most_forum_topics( $limit = null, $page = null, $user_id = 0, $search_terms = false, $populate_extras = true, $exclude = false ) {
Note: See TracChangeset
for help on using the changeset viewer.