diff --git a/lang/en/admin.php b/lang/en/admin.php index f363c9314c8..6a1fa391918 100755 --- a/lang/en/admin.php +++ b/lang/en/admin.php @@ -111,7 +111,7 @@ $string['componentinstalled'] = 'Component Installed'; $string['computedfromlogs'] = 'Computed from logs since {$a}.'; $string['condifmodeditdefaults'] = 'The values you set here define the default values that are used in the activity settings form when you create a new activity. You can also configure which activity settings are considered advanced.'; $string['confeditorhidebuttons'] = 'Select the buttons that should be hidden in the HTML editor.'; -$string['configallcountrycodes'] = 'This is the list of countries that may be selected in various places, for example in a user\'s profile. If blank (the default) the list in countries.php in the standard English language pack is used. That is the list from ISO 3166-1. Otherwise, you can specify a comma-separated list of codes, for example \'GB,FR,ES\'. If you add new, non-standard codes here, you will need to add them to countries.php in your language pack.'; +$string['configallcountrycodes'] = 'This is the list of countries that may be selected in various places, for example in a user\'s profile. If blank (the default) the list in countries.php in the standard English language pack is used. That is the list from ISO 3166-1. Otherwise, you can specify a comma-separated list of codes, for example \'GB,FR,ES\'. If you add new, non-standard codes here, you will need to add them to countries.php in \'en\' and your language pack.'; $string['configallowassign'] = 'You can allow people who have the roles on the left side to assign some of the column roles to other people'; $string['configallowblockstodock'] = 'If enabled and supported by the selected theme users can choose to move blocks to a special dock.'; $string['configallowcategorythemes'] = 'If you enable this, then themes can be set at the category level. This will affect all child categories and courses unless they have specifically set their own theme. WARNING: Enabling category themes may affect performance.'; diff --git a/lib/moodlelib.php b/lib/moodlelib.php index dc05d355973..7a8da84e71b 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -5716,10 +5716,12 @@ interface string_manager { public function string_exists($identifier, $component); /** - * Returns a localised list of all country names + * Returns a localised list of all country names, sorted by country keys. + * @param bool $returnall return all or just enabled + * @param string $lang moodle translation language, NULL means use current * @return array two-letter country code => translated name. */ - public function get_list_of_countries(); + public function get_list_of_countries($returnall = false, $lang = NULL); /** * Returns a localised list of languages, sorted by code keys. @@ -5997,12 +5999,34 @@ class core_string_manager implements string_manager { } /** - * Returns a localised list of all country names + * Returns a localised list of all country names, sorted by country keys. + * + * @param bool $returnall return all or just enabled + * @param string $lang moodle translation language, NULL means use current * @return array two-letter country code => translated name. */ - public function get_list_of_countries() { - $lang = current_language(); - return $this->load_component_strings('countries', $lang); + public function get_list_of_countries($returnall = false, $lang = NULL) { + global $CFG; + + if ($lang === NULL) { + $lang = current_language(); + } + + $countries = $this->load_component_strings('core_countries', $lang); + ksort($countries); + + if (!$returnall and !empty($CFG->allcountrycodes)) { + $enabled = explode(',', $CFG->allcountrycodes); + $return = array(); + foreach ($enabled as $c) { + if (isset($countries[$c])) { + $return[$c] = $countries[$c]; + } + } + return $return; + } + + return $countries; } /** @@ -6019,7 +6043,7 @@ class core_string_manager implements string_manager { } if ($standard === 'iso6392') { $langs = $this->load_component_strings('core_iso6392', $lang); - $lang = ksort($langs); + ksort($langs); return $langs; } else { debugging('Unsupported $standard parameter in get_list_of_languages() method: '.$standard); @@ -6214,10 +6238,13 @@ class install_string_manager implements string_manager { } /** - * Returns a localised list of all country names + * Returns a localised list of all country names, sorted by country keys. + * + * @param bool $returnall return all or just enabled + * @param string $lang moodle translation language, NULL means use current * @return array two-letter country code => translated name. */ - public function get_list_of_countries() { + public function get_list_of_countries($returnall = false, $lang = NULL) { //not used in installer return array(); } @@ -6415,11 +6442,11 @@ function get_list_of_charsets() { } /** - * Returns a list of country names in the current language + * Returns a list of all enabled country names in the current translation * @return array two-letter country code => translated name. */ function get_list_of_countries() { - return get_string_manager()->get_list_of_countries(); + return get_string_manager()->get_list_of_countries(false); } /**