diff --git a/mod/quiz/accessmanager.php b/mod/quiz/accessmanager.php index fe0f6ccde51..4d7ad31b6e1 100644 --- a/mod/quiz/accessmanager.php +++ b/mod/quiz/accessmanager.php @@ -123,6 +123,24 @@ class quiz_access_manager { return $options; } + /** + * Validate the data from any form fields added using {@link add_settings_form_fields()}. + * @param array $errors the errors found so far. + * @param array $data the submitted form data. + * @param array $files information about any uploaded files. + * @param mod_quiz_mod_form $quizform the quiz form object. + * @return array $errors the updated $errors array. + */ + public static function validate_settings_form_fields(array $errors, + array $data, $files, mod_quiz_mod_form $this) { + + foreach (self::get_rule_classes() as $rule) { + $errors = $rule::validate_settings_form_fields($errors, $data, $files, $this); + } + + return $errors; + } + /** * Save any submitted settings when the quiz settings form is submitted. * diff --git a/mod/quiz/accessrule/accessrulebase.php b/mod/quiz/accessrule/accessrulebase.php index 4b585cd8af6..362d7e3f175 100644 --- a/mod/quiz/accessrule/accessrulebase.php +++ b/mod/quiz/accessrule/accessrulebase.php @@ -256,6 +256,20 @@ abstract class quiz_access_rule_base { // By default do nothing. } + /** + * Validate the data from any form fields added using {@link add_settings_form_fields()}. + * @param array $errors the errors found so far. + * @param array $data the submitted form data. + * @param array $files information about any uploaded files. + * @param mod_quiz_mod_form $quizform the quiz form object. + * @return array $errors the updated $errors array. + */ + public static function validate_settings_form_fields(array $errors, + array $data, $files, mod_quiz_mod_form $quizform) { + + return $errors; + } + /** * @return array key => lang string any choices to add to the quiz Browser * security settings menu. diff --git a/mod/quiz/mod_form.php b/mod/quiz/mod_form.php index 90cdb1fa291..a7b98a1fd3c 100644 --- a/mod/quiz/mod_form.php +++ b/mod/quiz/mod_form.php @@ -575,6 +575,9 @@ class mod_quiz_mod_form extends moodleform_mod { } } + // Any other rule plugins. + $errors = quiz_access_manager::validate_settings_form_fields($errors, $data, $files, $this); + return $errors; } }