mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 12:32:08 +02:00
MDL-45828 cache: definitions now sorted in the admin UI
This commit is contained in:
parent
ec36fafc0f
commit
6e247996ea
2
cache/renderer.php
vendored
2
cache/renderer.php
vendored
@ -235,6 +235,8 @@ class core_cache_renderer extends plugin_renderer_base {
|
||||
);
|
||||
$table->data = array();
|
||||
|
||||
core_collator::asort_array_of_arrays_by_key($definitions, 'name');
|
||||
|
||||
$none = new lang_string('none', 'cache');
|
||||
foreach ($definitions as $id => $definition) {
|
||||
$actions = cache_administration_helper::get_definition_actions($context, $definition);
|
||||
|
@ -284,6 +284,46 @@ class core_collator {
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Locale aware sort of array of arrays.
|
||||
*
|
||||
* Given an array like:
|
||||
* $array = array(
|
||||
* array('name' => 'bravo'),
|
||||
* array('name' => 'charlie'),
|
||||
* array('name' => 'alpha')
|
||||
* );
|
||||
*
|
||||
* If you call:
|
||||
* core_collator::asort_array_of_arrays_by_key($array, 'name')
|
||||
*
|
||||
* You will be returned $array sorted by the name key of the subarrays. e.g.
|
||||
* $array = array(
|
||||
* array('name' => 'alpha'),
|
||||
* array('name' => 'bravo'),
|
||||
* array('name' => 'charlie')
|
||||
* );
|
||||
*
|
||||
* @param array $array An array of objects to sort (handled by reference)
|
||||
* @param string $key The key to use for comparison
|
||||
* @param int $sortflag One of
|
||||
* core_collator::SORT_NUMERIC,
|
||||
* core_collator::SORT_STRING,
|
||||
* core_collator::SORT_NATURAL,
|
||||
* core_collator::SORT_REGULAR
|
||||
* optionally "|" core_collator::CASE_SENSITIVE
|
||||
* @return bool True on success
|
||||
*/
|
||||
public static function asort_array_of_arrays_by_key(array &$array, $key, $sortflag = core_collator::SORT_STRING) {
|
||||
$original = $array;
|
||||
foreach ($array as $initkey => $item) {
|
||||
$array[$initkey] = $item[$key];
|
||||
}
|
||||
$result = self::asort($array, $sortflag);
|
||||
self::restore_array($array, $original);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Locale aware sorting, the key associations are kept, keys are sorted alphabetically.
|
||||
*
|
||||
|
@ -198,6 +198,48 @@ class core_collator_testcase extends advanced_testcase {
|
||||
$this->assertTrue($result);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the sorting of an array of arrays by key.
|
||||
*/
|
||||
public function test_asort_array_of_arrays_by_key() {
|
||||
$array = array(
|
||||
'a' => array('name' => 'bravo'),
|
||||
'b' => array('name' => 'charlie'),
|
||||
'c' => array('name' => 'alpha')
|
||||
);
|
||||
$this->assertSame(array('a', 'b', 'c'), array_keys($array));
|
||||
$this->assertTrue(core_collator::asort_array_of_arrays_by_key($array, 'name'));
|
||||
$this->assertSame(array('c', 'a', 'b'), array_keys($array));
|
||||
|
||||
$array = array(
|
||||
'a' => array('name' => 'b'),
|
||||
'b' => array('name' => 1),
|
||||
'c' => array('name' => 0)
|
||||
);
|
||||
$this->assertSame(array('a', 'b', 'c'), array_keys($array));
|
||||
$this->assertTrue(core_collator::asort_array_of_arrays_by_key($array, 'name'));
|
||||
$this->assertSame(array('c', 'b', 'a'), array_keys($array));
|
||||
|
||||
$array = array(
|
||||
'a' => array('name' => 'áb'),
|
||||
'b' => array('name' => 'ab'),
|
||||
1 => array('name' => 'aa'),
|
||||
'd' => array('name' => 'cc'),
|
||||
0 => array('name' => 'Áb')
|
||||
);
|
||||
$this->assertSame(array('a', 'b', 1, 'd', 0), array_keys($array));
|
||||
$this->assertTrue(core_collator::asort_array_of_arrays_by_key($array, 'name'));
|
||||
$this->assertSame(array(1, 'b', 'a', 0, 'd'), array_keys($array));
|
||||
$this->assertSame(array(
|
||||
1 => array('name' => 'aa'),
|
||||
'b' => array('name' => 'ab'),
|
||||
'a' => array('name' => 'áb'),
|
||||
0 => array('name' => 'Áb'),
|
||||
'd' => array('name' => 'cc')
|
||||
), $array);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of sorted names.
|
||||
* @param array $objects
|
||||
|
Loading…
x
Reference in New Issue
Block a user