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';