From 1965c0caf0e652ddfbb59521973806e9b350b285 Mon Sep 17 00:00:00 2001 From: Paul Holden Date: Tue, 16 Jul 2024 11:27:21 +0100 Subject: [PATCH] MDL-82494 user: correct profile field name formatting method. Add optional `$escape` parameter to allow for unescaped return. --- .upgradenotes/MDL-82494-2024071610270239.yml | 7 +++++++ lib/myprofilelib.php | 2 +- .../classes/local/helpers/user_profile_fields.php | 7 ++----- user/profile/lib.php | 10 ++++++---- user/tests/externallib_test.php | 4 ++++ 5 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 .upgradenotes/MDL-82494-2024071610270239.yml diff --git a/.upgradenotes/MDL-82494-2024071610270239.yml b/.upgradenotes/MDL-82494-2024071610270239.yml new file mode 100644 index 00000000000..c3017db21d6 --- /dev/null +++ b/.upgradenotes/MDL-82494-2024071610270239.yml @@ -0,0 +1,7 @@ +issueNumber: MDL-82494 +notes: + core_user: + - message: > + The user profile field `display_name()` method now accepts an optional + `$escape` parameter to define whether to escape the returned name + type: changed diff --git a/lib/myprofilelib.php b/lib/myprofilelib.php index 71b86242389..7bcae3edf6f 100644 --- a/lib/myprofilelib.php +++ b/lib/myprofilelib.php @@ -333,7 +333,7 @@ function core_myprofile_navigation(core_user\output\myprofile\tree $tree, $user, foreach ($fields as $formfield) { if ($formfield->show_field_content()) { $node = new core_user\output\myprofile\node('contact', 'custom_field_' . $formfield->field->shortname, - format_string($formfield->field->name), null, null, $formfield->display_data()); + $formfield->display_name(), null, null, $formfield->display_data()); $tree->add_node($node); } } diff --git a/reportbuilder/classes/local/helpers/user_profile_fields.php b/reportbuilder/classes/local/helpers/user_profile_fields.php index 3899225976c..420885968db 100644 --- a/reportbuilder/classes/local/helpers/user_profile_fields.php +++ b/reportbuilder/classes/local/helpers/user_profile_fields.php @@ -18,7 +18,6 @@ declare(strict_types=1); namespace core_reportbuilder\local\helpers; -use core\context\system; use core\lang_string; use core_text; use core_reportbuilder\local\filters\{boolean_select, date, select, text}; @@ -132,8 +131,7 @@ class user_profile_fields { $columns[] = (new column( 'profilefield_' . core_text::strtolower($profilefield->field->shortname), - new lang_string('customfieldcolumn', 'core_reportbuilder', - format_string($profilefield->field->name, true, ['escape' => false, 'context' => system::instance()])), + new lang_string('customfieldcolumn', 'core_reportbuilder', $profilefield->display_name(false)), $this->entityname )) ->add_joins($this->get_joins()) @@ -218,8 +216,7 @@ class user_profile_fields { $filter = (new filter( $classname, 'profilefield_' . core_text::strtolower($profilefield->field->shortname), - new lang_string('customfieldcolumn', 'core_reportbuilder', - format_string($profilefield->field->name, true, ['escape' => false, 'context' => system::instance()])), + new lang_string('customfieldcolumn', 'core_reportbuilder', $profilefield->display_name(false)), $this->entityname, $userinfosql, $userinfoparams, diff --git a/user/profile/lib.php b/user/profile/lib.php index 8fa15e2bac6..fe67d0feed4 100644 --- a/user/profile/lib.php +++ b/user/profile/lib.php @@ -149,11 +149,13 @@ class profile_field_base { /** * Display the name of the profile field. * + * @param bool $escape * @return string */ - public function display_name(): string { - return format_text($this->field->name, FORMAT_MOODLE, [ - 'para' => false, + public function display_name(bool $escape = true): string { + return format_string($this->field->name, true, [ + 'context' => context_system::instance(), + 'escape' => $escape, ]); } @@ -1008,7 +1010,7 @@ function get_profile_field_list(): array { if (!isset($data[$categoryname])) { $data[$categoryname] = []; } - $data[$categoryname][$field->inputname] = $field->field->name; + $data[$categoryname][$field->inputname] = $field->display_name(); } } return $data; diff --git a/user/tests/externallib_test.php b/user/tests/externallib_test.php index f2ed8b46f80..8d9ae6fd6cd 100644 --- a/user/tests/externallib_test.php +++ b/user/tests/externallib_test.php @@ -194,6 +194,8 @@ final class externallib_test extends externallib_advanced_testcase { // Create complex user profile field supporting multi-lang. filter_set_global_state('multilang', TEXTFILTER_ON); + filter_set_applies_to_strings('multilang', true); + $name = 'Employment status'. 'Estado de Empleo'; $statuses = 'UE\nSE\nOtherOtro'; @@ -360,6 +362,8 @@ final class externallib_test extends externallib_advanced_testcase { // Create complex user profile field supporting multi-lang. filter_set_global_state('multilang', TEXTFILTER_ON); + filter_set_applies_to_strings('multilang', true); + $name = 'Employment status' . 'Estado de Empleo'; $statuses = 'UE\nSE\nOtherOtro';