MDL-80818 QuickForm: Freeze all elements with the same name

There are some radio buttons in activity Completion Conditions settings
that must be frozen altogether, because all of them have the same name.
This commit is contained in:
Amaia Anabitarte
2024-03-27 16:28:53 +01:00
committed by Amaia Anabitarte
parent fa4a79d6d7
commit b459df584c
2 changed files with 4 additions and 2 deletions
+3 -2
View File
@@ -1570,15 +1570,16 @@ class HTML_QuickForm extends HTML_Common {
$elementList = array_flip($elementList);
}
$frozen = [];
foreach (array_keys($this->_elements) as $key) {
$name = $this->_elements[$key]->getName();
if ($this->_freezeAll || isset($elementList[$name])) {
$this->_elements[$key]->freeze();
unset($elementList[$name]);
$frozen[$name] = true;
}
}
if (!empty($elementList)) {
if (count($elementList) != count($frozen)) {
return self::raiseError(null, QUICKFORM_NONEXIST_ELEMENT, null, E_USER_WARNING, "Nonexistant element(s): '" . implode("', '", array_keys($elementList)) . "' in HTML_QuickForm::freeze()", 'HTML_QuickForm_Error', true);
}
return true;
+1
View File
@@ -38,6 +38,7 @@ MDL-77164 - PHPdocs corrections
MDL-78145 - PHP 8.2 compliance. Added a missing class property that still need to be declared
to avoid dynamic properties deprecated error warning.
And also remove the $_elementIdx because it is not needed in Moodle code.
MDL-80818 - Freezing all elements with the same name (e.g. radio buttons)
Pear
====