diff --git src/bp-core/bp-core-functions.php src/bp-core/bp-core-functions.php
index d3bcbde..c536ac2 100644
|
|
|
function bp_core_get_table_prefix() {
|
| 108 | 108 | * your own awkward callback function for usort(). |
| 109 | 109 | * |
| 110 | 110 | * @since 2.2.0 |
| | 111 | * @since 2.7.0 Added $preserve_keys parameter. |
| | 112 | * |
| | 113 | * @param array $items The items to be sorted. Its constituent items |
| | 114 | * can be either associative arrays or objects. |
| | 115 | * @param string|int $key The array index or property name to sort by. |
| | 116 | * @param string $type Sort type. 'alpha' for alphabetical, 'num' |
| | 117 | * for numeric. Default: 'alpha'. |
| | 118 | * @param bool $preserve_keys Whether to keep the keys or not. |
| 111 | 119 | * |
| 112 | | * @param array $items The items to be sorted. Its constituent items can be either associative arrays or objects. |
| 113 | | * @param string|int $key The array index or property name to sort by. |
| 114 | | * @param string $type Sort type. 'alpha' for alphabetical, 'num' for numeric. Default: 'alpha'. |
| 115 | 120 | * @return array $items The sorted array. |
| 116 | 121 | */ |
| 117 | | function bp_sort_by_key( $items, $key, $type = 'alpha' ) { |
| 118 | | usort( $items, array( new BP_Core_Sort_By_Key_Callback( $key, $type ), 'sort_callback' ) ); |
| | 122 | function bp_sort_by_key( $items, $key, $type = 'alpha', $preserve_keys = false ) { |
| | 123 | if ( true === $preserve_keys ) { |
| | 124 | uasort( $items, array( new BP_Core_Sort_By_Key_Callback( $key, $type ), 'sort_callback' ) ); |
| | 125 | } else { |
| | 126 | usort( $items, array( new BP_Core_Sort_By_Key_Callback( $key, $type ), 'sort_callback' ) ); |
| | 127 | } |
| 119 | 128 | |
| 120 | 129 | return $items; |
| 121 | 130 | } |
diff --git tests/phpunit/testcases/core/functions.php tests/phpunit/testcases/core/functions.php
index 64d6088..0c004d6 100644
|
|
|
class BP_Tests_Core_Functions extends BP_UnitTestCase {
|
| 429 | 429 | } |
| 430 | 430 | |
| 431 | 431 | /** |
| | 432 | * @group bp_sort_by_key |
| | 433 | */ |
| | 434 | public function test_bp_sort_by_key_arrays_num_preserve_keys() { |
| | 435 | $items = array( |
| | 436 | 'p' => array( |
| | 437 | 'foo' => 'bar', |
| | 438 | 'value' => 5, |
| | 439 | ), |
| | 440 | 'q' => array( |
| | 441 | 'foo' => 'bar', |
| | 442 | 'value' => 10, |
| | 443 | ), |
| | 444 | 'r' => array( |
| | 445 | 'foo' => 'bar', |
| | 446 | 'value' => 1, |
| | 447 | ), |
| | 448 | ); |
| | 449 | |
| | 450 | $expected = array( |
| | 451 | 'r' => array( |
| | 452 | 'foo' => 'bar', |
| | 453 | 'value' => 1, |
| | 454 | ), |
| | 455 | 'p' => array( |
| | 456 | 'foo' => 'bar', |
| | 457 | 'value' => 5, |
| | 458 | ), |
| | 459 | 'q' => array( |
| | 460 | 'foo' => 'bar', |
| | 461 | 'value' => 10, |
| | 462 | ), |
| | 463 | ); |
| | 464 | |
| | 465 | $this->assertEquals( $expected, bp_sort_by_key( $items, 'value', 'num', true ) ); |
| | 466 | } |
| | 467 | |
| | 468 | /** |
| | 469 | * @group bp_sort_by_key |
| | 470 | */ |
| | 471 | public function test_bp_sort_by_key_num_should_respect_0_preserve_keys() { |
| | 472 | $items = array( |
| | 473 | 's' => array( |
| | 474 | 'foo' => 'bar', |
| | 475 | 'value' => 2, |
| | 476 | ), |
| | 477 | 't' => array( |
| | 478 | 'foo' => 'bar', |
| | 479 | 'value' => 0, |
| | 480 | ), |
| | 481 | 'u' => array( |
| | 482 | 'foo' => 'bar', |
| | 483 | 'value' => 4, |
| | 484 | ), |
| | 485 | ); |
| | 486 | |
| | 487 | $expected = array( |
| | 488 | 't' => array( |
| | 489 | 'foo' => 'bar', |
| | 490 | 'value' => 0, |
| | 491 | ), |
| | 492 | 's' => array( |
| | 493 | 'foo' => 'bar', |
| | 494 | 'value' => 2, |
| | 495 | ), |
| | 496 | 'u' => array( |
| | 497 | 'foo' => 'bar', |
| | 498 | 'value' => 4, |
| | 499 | ), |
| | 500 | ); |
| | 501 | |
| | 502 | $this->assertEquals( $expected, bp_sort_by_key( $items, 'value', 'num', true ) ); |
| | 503 | } |
| | 504 | |
| | 505 | /** |
| 432 | 506 | * @group pagination |
| 433 | 507 | * @group bp_sanitize_pagination_arg |
| 434 | 508 | */ |