From edafea1f78e5cbb22fe53405ec6c4ebdabf784e9 Mon Sep 17 00:00:00 2001 From: Nathaniel Catchpole <catch@35733.no-reply.drupal.org> Date: Mon, 8 Sep 2014 11:37:15 +0100 Subject: [PATCH] Issue #2332739 by YesCT, alexpott: Remove SortArray::sortByWeightAndTitle. --- .../Drupal/Component/Utility/SortArray.php | 28 ----- core/lib/Drupal/Core/Language/Language.php | 11 +- .../Tests/Component/Utility/SortArrayTest.php | 102 ------------------ .../Tests/Core/Language/LanguageUnitTest.php | 6 +- 4 files changed, 11 insertions(+), 136 deletions(-) diff --git a/core/lib/Drupal/Component/Utility/SortArray.php b/core/lib/Drupal/Component/Utility/SortArray.php index a8d9f0009e89..79688ec89699 100644 --- a/core/lib/Drupal/Component/Utility/SortArray.php +++ b/core/lib/Drupal/Component/Utility/SortArray.php @@ -92,34 +92,6 @@ public static function sortByTitleProperty($a, $b) { return static::sortByKeyString($a, $b, '#title'); } - /** - * Sorts a structured array firstly by weight, then by title. - * - * @param array $a - * The first item to compare. - * @param array $b - * The second item to compare. - * @param string $weight_key - * (optional) The weight key to use. Defaults to 'weight'. - * @param string $title_key - * (optional) The title key to use. Defaults to 'title'. - * - * @return int - * The comparison result for uasort(). - */ - public static function sortByWeightAndTitleKey($a, $b, $weight_key = 'weight', $title_key = 'title') { - $a = (array) $a; - $b = (array) $b; - - $weight_cmp = static::sortByKeyInt($a, $b, $weight_key); - - if ($weight_cmp === 0) { - return static::sortByKeyString($a, $b, $title_key); - } - - return $weight_cmp; - } - /** * Sorts a string array item by an arbitrary key. * diff --git a/core/lib/Drupal/Core/Language/Language.php b/core/lib/Drupal/Core/Language/Language.php index d8df0cb96afc..38553e4ee20b 100644 --- a/core/lib/Drupal/Core/Language/Language.php +++ b/core/lib/Drupal/Core/Language/Language.php @@ -206,12 +206,17 @@ public function setNegotiationMethodId($method_id) { /** * Sort language objects. * - * @param array $languages + * @param \Drupal\Core\Language\LanguageInterface[] $languages * The array of language objects keyed by langcode. */ public static function sort(&$languages) { - uasort($languages, function ($a, $b) { - return SortArray::sortByWeightAndTitleKey($a, $b, 'weight', 'name'); + uasort($languages, function (LanguageInterface $a, LanguageInterface $b) { + $a_weight = $a->getWeight(); + $b_weight = $b->getWeight(); + if ($a_weight == $b_weight) { + return strnatcasecmp($a->getName(), $b->getName()); + } + return ($a_weight < $b_weight) ? -1 : 1; }); } diff --git a/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php b/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php index ed1357baee31..c2804e449e43 100644 --- a/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php +++ b/core/tests/Drupal/Tests/Component/Utility/SortArrayTest.php @@ -314,106 +314,4 @@ public function providerSortByTitleProperty() { return $tests; } - /** - * Tests SortArray::sortByWeightAndTitleKey() input against expected output. - * - * @dataProvider providerTestSortByWeightAndTitleKey - * - * @param array $a - * The first input item for comparison. - * @param array $b - * The second item for comparison. - * @param integer $expected - * The expected output from calling the method. - */ - public function testSortByWeightAndTitleKey($a, $b, $expected) { - $result = SortArray::sortByWeightAndTitleKey($a, $b); - $this->assertEquals($expected, $result); - } - - /** - * Data provider for testSortByWeightAndTitleKey. - * - * @return array - * An array of test data. - */ - public function providerTestSortByWeightAndTitleKey() { - $stdclass_title_1 = new \stdClass(); - $stdclass_title_1->title = 'a'; - - $stdclass_title_2 = new \stdClass(); - $stdclass_title_2->title = 'b'; - - $stdclass_weight_1 = new \stdClass(); - $stdclass_weight_1->weight = 1; - - $stdclass_weight_2 = new \stdClass(); - $stdclass_weight_2->weight = 2; - - $stdclass_weight_3 = clone $stdclass_weight_1; - - return array( - array( - array(), - array(), - 0 - ), - array( - array('weight' => 1), - array('weight' => 2), - -1 - ), - array( - array('weight' => 2), - array('weight' => 1), - 1 - ), - array( - array('title' => 'b', 'weight' => 1), - array('title' => 'a', 'weight' => 2), - -1 - ), - array( - array('title' => 'a', 'weight' => 2), - array('title' => 'b', 'weight' => 1), - 1 - ), - array( - array('title' => 'a', 'weight' => 1), - array('title' => 'b', 'weight' => 1), - -1 - ), - array( - array('title' => 'b', 'weight' => 1), - array('title' => 'a', 'weight' => 1), - 1 - ), - array( - array('title' => 'a'), - array('title' => 'b'), - -1 - ), - array( - array('title' => 'A'), - array('title' => 'a'), - 0 - ), - array( - $stdclass_title_1, - $stdclass_title_2, - -1 - ), - array( - $stdclass_weight_1, - $stdclass_weight_2, - -1 - ), - array( - $stdclass_weight_1, - $stdclass_weight_3, - 0 - ), - ); - } - } diff --git a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php index 100e5c04d5fd..a221eb1ba03e 100644 --- a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php +++ b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php @@ -91,14 +91,14 @@ public function testGetNegotiationMethodId() { } /** - * Tests sorting an array of Language objects. + * Tests sorting an array of language objects. * * @covers ::sort() * * @dataProvider providerTestSortArrayOfLanguages * - * @param \Drupal\Core\Language\Language[] $languages - * An array of \Drupal\Core\Language\Language objects. + * @param \Drupal\Core\Language\LanguageInterface[] $languages + * An array of language objects. * @param array $expected * The expected array of keys. */ -- GitLab