Commit edafea1f authored by catch's avatar catch

Issue #2332739 by YesCT, alexpott: Remove SortArray::sortByWeightAndTitle.

parent 34246f43
......@@ -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.
*
......
......@@ -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;
});
}
......
......@@ -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
),
);
}
}
......@@ -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.
*/
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment