/** * Tests the static asort_objects_by_method method. */ public function test_asort_objects_by_method() { $objects = array('b' => new string_test_class('ab'), 1 => new string_test_class('aa'), 0 => new string_test_class('cc')); $result = core_collator::asort_objects_by_method($objects, 'get_protected_name'); $this->assertSame(array(1, 'b', 0), array_keys($objects)); $this->assertSame(array('aa', 'ab', 'cc'), $this->get_ordered_names($objects, 'get_protected_name')); $this->assertTrue($result); $objects = array('b' => new string_test_class('a20'), 1 => new string_test_class('a1'), 0 => new string_test_class('a100')); $result = core_collator::asort_objects_by_method($objects, 'get_protected_name', core_collator::SORT_NATURAL); $this->assertSame(array(1, 'b', 0), array_keys($objects)); $this->assertSame(array('a1', 'a20', 'a100'), $this->get_ordered_names($objects, 'get_protected_name')); $this->assertTrue($result); }
/** * Returns a list of valid and compatible themes * * @return array */ function get_list_of_themes() { global $CFG; $themes = array(); if (!empty($CFG->themelist)) { // Use admin's list of themes. $themelist = explode(',', $CFG->themelist); } else { $themelist = array_keys(core_component::get_plugin_list("theme")); } foreach ($themelist as $key => $themename) { $theme = theme_config::load($themename); $themes[$themename] = $theme; } core_collator::asort_objects_by_method($themes, 'get_theme_name'); return $themes; }
/** * Sort plugins so enabled plugins are displayed first and all others are displayed in the end sorted by rank. * @return \core\plugininfo\media[] */ protected function get_sorted_plugins() { $pluginmanager = core_plugin_manager::instance(); $plugins = $pluginmanager->get_plugins_of_type('media'); $enabledplugins = $pluginmanager->get_enabled_plugins('media'); // Sort plugins so enabled plugins are displayed first and all others are displayed in the end sorted by rank. \core_collator::asort_objects_by_method($plugins, 'get_rank', \core_collator::SORT_NUMERIC); $order = array_values($enabledplugins); $order = array_merge($order, array_diff(array_reverse(array_keys($plugins)), $order)); $sortedplugins = array(); foreach ($order as $name) { $sortedplugins[$name] = $plugins[$name]; } return $sortedplugins; }