From e258e86f15d9346bf0db547598a54314b7aaacd1 Mon Sep 17 00:00:00 2001 From: Rodrigo Mady Date: Wed, 9 Aug 2023 20:34:38 -0300 Subject: [PATCH] MDL-77967 user: Add format text to custom profile fields name --- user/lib.php | 2 +- user/profile/lib.php | 11 +++++++++++ user/tests/externallib_test.php | 29 +++++++++++++++++++++++++++-- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/user/lib.php b/user/lib.php index b9cc2d777e0..2790ca8c80e 100644 --- a/user/lib.php +++ b/user/lib.php @@ -401,7 +401,7 @@ function user_get_user_details($user, $course = null, array $userfields = array( foreach ($fields as $formfield) { if ($formfield->show_field_content()) { $userdetails['customfields'][] = [ - 'name' => $formfield->field->name, + 'name' => $formfield->display_name(), 'value' => $formfield->data, 'displayvalue' => $formfield->display_data(), 'type' => $formfield->field->datatype, diff --git a/user/profile/lib.php b/user/profile/lib.php index 41ce7d92a2b..0be911def8a 100644 --- a/user/profile/lib.php +++ b/user/profile/lib.php @@ -146,6 +146,17 @@ class profile_field_base { return format_text($this->data, FORMAT_MOODLE, $options); } + /** + * Display the name of the profile field. + * + * @return string + */ + public function display_name() { + $options = new stdClass(); + $options->para = false; + return format_text($this->field->name, FORMAT_MOODLE, $options); + } + /** * Print out the form field in the edit profile page * @param MoodleQuickForm $mform instance of the moodleform class diff --git a/user/tests/externallib_test.php b/user/tests/externallib_test.php index 3e1ddc64e1e..1c6a9e86670 100644 --- a/user/tests/externallib_test.php +++ b/user/tests/externallib_test.php @@ -188,11 +188,14 @@ class externallib_test extends externallib_advanced_testcase { // Create complex user profile field supporting multi-lang. filter_set_global_state('multilang', TEXTFILTER_ON); + $name = 'Employment status'. + 'Estado de Empleo'; $statuses = 'UE\nSE\nOtherOtro'; $generator->create_custom_profile_field( [ 'datatype' => 'menu', - 'shortname' => 'employmentstatus', 'name' => 'Employment status', + 'shortname' => 'employmentstatus', + 'name' => $name, 'param1' => $statuses ] ); @@ -310,6 +313,7 @@ class externallib_test extends externallib_advanced_testcase { $this->assertCount(1, $returneduser['customfields']); $dbvalue = explode('\n', $statuses)[2]; $this->assertEquals($dbvalue, $returneduser['customfields'][0]['value']); + $this->assertEquals('Employment status', $returneduser['customfields'][0]['name']); $this->assertEquals('Other', $returneduser['customfields'][0]['displayvalue']); } } @@ -345,6 +349,21 @@ class externallib_test extends externallib_advanced_testcase { $return = new \stdClass(); + $generator = self::getDataGenerator(); + // Create complex user profile field supporting multi-lang. + filter_set_global_state('multilang', TEXTFILTER_ON); + $name = 'Employment status'. + 'Estado de Empleo'; + $statuses = 'UE\nSE\nOtherOtro'; + $generator->create_custom_profile_field( + [ + 'datatype' => 'menu', + 'shortname' => 'employmentstatus', + 'name' => $name, + 'param1' => $statuses + ] + ); + // Create the course and fetch its context. $return->course = self::getDataGenerator()->create_course(); $return->user1 = array( @@ -361,7 +380,8 @@ class externallib_test extends externallib_advanced_testcase { 'description' => 'This is a description for user 1', 'descriptionformat' => FORMAT_MOODLE, 'city' => 'Perth', - 'country' => 'AU' + 'country' => 'AU', + 'profile_field_employmentstatus' => explode('\n', $statuses)[2], ); $return->user1 = self::getDataGenerator()->create_user($return->user1); if (!empty($CFG->usetags)) { @@ -447,6 +467,11 @@ class externallib_test extends externallib_advanced_testcase { $this->assertEquals(FORMAT_HTML, $enrolleduser['descriptionformat']); $this->assertEquals($data->user1->city, $enrolleduser['city']); $this->assertEquals($data->user1->country, $enrolleduser['country']); + // Default language was used for the user. + $this->assertEquals($CFG->lang, $enrolleduser['lang']); + $this->assertEquals('Employment status', $enrolleduser['customfields'][0]['name']); + $this->assertEquals('Other', $enrolleduser['customfields'][0]['displayvalue']); + if (!empty($CFG->usetags)) { $this->assertEquals(implode(', ', $data->user1->interests), $enrolleduser['interests']); }