From 3a09f4dc643482c9ea15d6f7b065881fab74c997 Mon Sep 17 00:00:00 2001 From: sam marshall Date: Tue, 19 Feb 2013 13:33:58 +0000 Subject: [PATCH] MDL-38035 Activity settings: Support multilang names for custom user fields --- course/editsection_form.php | 4 ++-- course/moodleform_mod.php | 3 ++- lib/conditionlib.php | 17 +++++++++++++---- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/course/editsection_form.php b/course/editsection_form.php index 7fdbdf6d030..93bb9d91e71 100644 --- a/course/editsection_form.php +++ b/course/editsection_form.php @@ -51,6 +51,7 @@ class editsection_form extends moodleform { $mform = $this->_form; $course = $this->_customdata['course']; + $context = context_course::instance($course->id); if (!empty($CFG->enableavailability)) { $mform->addElement('header', '', get_string('availabilityconditions', 'condition')); @@ -62,7 +63,6 @@ class editsection_form extends moodleform { $options[0] = get_string('none'); if ($groupings = $DB->get_records('groupings', array('courseid' => $course->id))) { foreach ($groupings as $grouping) { - $context = context_course::instance($course->id); $options[$grouping->id] = format_string( $grouping->name, true, array('context' => $context)); } @@ -119,7 +119,7 @@ class editsection_form extends moodleform { // Conditions based on user fields $operators = condition_info::get_condition_user_field_operators(); - $useroptions = condition_info::get_condition_user_fields(); + $useroptions = condition_info::get_condition_user_fields(array('context' => $context)); asort($useroptions); $useroptions = array(0 => $strcondnone) + $useroptions; diff --git a/course/moodleform_mod.php b/course/moodleform_mod.php index b4feb9d3f56..201f4844edc 100644 --- a/course/moodleform_mod.php +++ b/course/moodleform_mod.php @@ -564,7 +564,8 @@ abstract class moodleform_mod extends moodleform { // Conditions based on user fields $operators = condition_info::get_condition_user_field_operators(); - $useroptions = condition_info::get_condition_user_fields(); + $useroptions = condition_info::get_condition_user_fields( + array('context' => $this->context)); asort($useroptions); $useroptions = array(0 => $strnone) + $useroptions; diff --git a/lib/conditionlib.php b/lib/conditionlib.php index affc574fb75..d6b5e05431a 100644 --- a/lib/conditionlib.php +++ b/lib/conditionlib.php @@ -599,12 +599,17 @@ abstract class condition_info_base { } /** - * The user fields we can compare + * Returns list of user fields that can be compared. * - * @global moodle_database $DB + * If you specify $formatoptions, then format_string will be called on the + * custom field names. This is necessary for multilang support to work so + * you should include this parameter unless you are going to format the + * text later. + * + * @param array $formatoptions Passed to format_string if provided * @return array Associative array from user field constants to display name */ - public static function get_condition_user_fields() { + public static function get_condition_user_fields($formatoptions = null) { global $DB; $userfields = array( @@ -630,7 +635,11 @@ abstract class condition_info_base { // Go through the custom profile fields now if ($user_info_fields = $DB->get_records('user_info_field')) { foreach ($user_info_fields as $field) { - $userfields[$field->id] = $field->name; + if ($formatoptions) { + $userfields[$field->id] = format_string($field->name, true, $formatoptions); + } else { + $userfields[$field->id] = $field->name; + } } }