MDL-71902 mod_quiz: Add locked flag option for quiz options

- Applies locked settings to many other quiz general options.
  For example, allows an admin to lock the browsersecurity level so it
  cannot be changed at an instance level, and will apply the 'default'
  option (which is currently None).
This commit is contained in:
Kevin Pham 2021-06-16 13:15:26 +10:00
parent 2b2897bf10
commit 4141f88361

View file

@ -64,6 +64,7 @@ if ($ADMIN->fulltree) {
get_string('timelimit', 'quiz'), get_string('configtimelimitsec', 'quiz'), get_string('timelimit', 'quiz'), get_string('configtimelimitsec', 'quiz'),
'0', 60); '0', 60);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Delay to notify graded attempts. // Delay to notify graded attempts.
@ -71,15 +72,18 @@ if ($ADMIN->fulltree) {
get_string('attemptgradeddelay', 'quiz'), get_string('attemptgradeddelay_desc', 'quiz'), 5 * HOURSECS, HOURSECS)); get_string('attemptgradeddelay', 'quiz'), get_string('attemptgradeddelay_desc', 'quiz'), 5 * HOURSECS, HOURSECS));
// What to do with overdue attempts. // What to do with overdue attempts.
$quizsettings->add(new mod_quiz_admin_setting_overduehandling('quiz/overduehandling', $setting = new mod_quiz_admin_setting_overduehandling('quiz/overduehandling',
get_string('overduehandling', 'quiz'), get_string('overduehandling_desc', 'quiz'), get_string('overduehandling', 'quiz'), get_string('overduehandling_desc', 'quiz'),
array('value' => 'autosubmit', 'adv' => false), null)); array('value' => 'autosubmit', 'adv' => false), null);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Grace period time. // Grace period time.
$setting = new admin_setting_configduration('quiz/graceperiod', $setting = new admin_setting_configduration('quiz/graceperiod',
get_string('graceperiod', 'quiz'), get_string('graceperiod_desc', 'quiz'), get_string('graceperiod', 'quiz'), get_string('graceperiod_desc', 'quiz'),
'86400'); '86400');
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Minimum grace period used behind the scenes. // Minimum grace period used behind the scenes.
@ -96,16 +100,21 @@ if ($ADMIN->fulltree) {
get_string('attemptsallowed', 'quiz'), get_string('configattemptsallowed', 'quiz'), get_string('attemptsallowed', 'quiz'), get_string('configattemptsallowed', 'quiz'),
0, $options); 0, $options);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Grading method. // Grading method.
$quizsettings->add(new mod_quiz_admin_setting_grademethod('quiz/grademethod', $setting = new mod_quiz_admin_setting_grademethod('quiz/grademethod',
get_string('grademethod', 'quiz'), get_string('configgrademethod', 'quiz'), get_string('grademethod', 'quiz'), get_string('configgrademethod', 'quiz'),
array('value' => QUIZ_GRADEHIGHEST, 'adv' => false), null)); array('value' => QUIZ_GRADEHIGHEST, 'adv' => false), null);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Maximum grade. // Maximum grade.
$quizsettings->add(new admin_setting_configtext('quiz/maximumgrade', $setting = new admin_setting_configtext('quiz/maximumgrade',
get_string('maximumgrade'), get_string('configmaximumgrade', 'quiz'), 10, PARAM_INT)); get_string('maximumgrade'), get_string('configmaximumgrade', 'quiz'), 10, PARAM_INT);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Questions per page. // Questions per page.
$perpage = array(); $perpage = array();
@ -118,6 +127,7 @@ if ($ADMIN->fulltree) {
get_string('newpageevery', 'quiz'), get_string('confignewpageevery', 'quiz'), get_string('newpageevery', 'quiz'), get_string('confignewpageevery', 'quiz'),
1, $perpage); 1, $perpage);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Navigation method. // Navigation method.
@ -125,6 +135,7 @@ if ($ADMIN->fulltree) {
get_string('navmethod', 'quiz'), get_string('confignavmethod', 'quiz'), get_string('navmethod', 'quiz'), get_string('confignavmethod', 'quiz'),
QUIZ_NAVMETHOD_FREE, quiz_get_navigation_options()); QUIZ_NAVMETHOD_FREE, quiz_get_navigation_options());
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Shuffle within questions. // Shuffle within questions.
@ -132,12 +143,15 @@ if ($ADMIN->fulltree) {
get_string('shufflewithin', 'quiz'), get_string('configshufflewithin', 'quiz'), get_string('shufflewithin', 'quiz'), get_string('configshufflewithin', 'quiz'),
1); 1);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Preferred behaviour. // Preferred behaviour.
$quizsettings->add(new admin_setting_question_behaviour('quiz/preferredbehaviour', $setting = new admin_setting_question_behaviour('quiz/preferredbehaviour',
get_string('howquestionsbehave', 'question'), get_string('howquestionsbehave_desc', 'quiz'), get_string('howquestionsbehave', 'question'), get_string('howquestionsbehave_desc', 'quiz'),
'deferredfeedback')); 'deferredfeedback');
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Can redo completed questions. // Can redo completed questions.
$setting = new admin_setting_configselect('quiz/canredoquestions', $setting = new admin_setting_configselect('quiz/canredoquestions',
@ -145,6 +159,7 @@ if ($ADMIN->fulltree) {
0, 0,
array(0 => get_string('no'), 1 => get_string('canredoquestionsyes', 'quiz'))); array(0 => get_string('no'), 1 => get_string('canredoquestionsyes', 'quiz')));
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Each attempt builds on last. // Each attempt builds on last.
@ -153,6 +168,7 @@ if ($ADMIN->fulltree) {
get_string('configeachattemptbuildsonthelast', 'quiz'), get_string('configeachattemptbuildsonthelast', 'quiz'),
0); 0);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Review options. // Review options.
@ -172,9 +188,11 @@ if ($ADMIN->fulltree) {
} }
// Show the user's picture. // Show the user's picture.
$quizsettings->add(new mod_quiz_admin_setting_user_image('quiz/showuserpicture', $setting = new mod_quiz_admin_setting_user_image('quiz/showuserpicture',
get_string('showuserpicture', 'quiz'), get_string('configshowuserpicture', 'quiz'), get_string('showuserpicture', 'quiz'), get_string('configshowuserpicture', 'quiz'),
array('value' => 0, 'adv' => false), null)); array('value' => 0, 'adv' => false), null);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
// Decimal places for overall grades. // Decimal places for overall grades.
$options = array(); $options = array();
@ -185,6 +203,7 @@ if ($ADMIN->fulltree) {
get_string('decimalplaces', 'quiz'), get_string('configdecimalplaces', 'quiz'), get_string('decimalplaces', 'quiz'), get_string('configdecimalplaces', 'quiz'),
2, $options); 2, $options);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Decimal places for question grades. // Decimal places for question grades.
@ -197,6 +216,7 @@ if ($ADMIN->fulltree) {
get_string('configdecimalplacesquestion', 'quiz'), get_string('configdecimalplacesquestion', 'quiz'),
-1, $options); -1, $options);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Show blocks during quiz attempts. // Show blocks during quiz attempts.
@ -204,6 +224,7 @@ if ($ADMIN->fulltree) {
get_string('showblocks', 'quiz'), get_string('configshowblocks', 'quiz'), get_string('showblocks', 'quiz'), get_string('configshowblocks', 'quiz'),
0); 0);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Password. // Password.
@ -212,6 +233,7 @@ if ($ADMIN->fulltree) {
''); '');
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_required_flag_options(admin_setting_flag::ENABLED, false); $setting->set_required_flag_options(admin_setting_flag::ENABLED, false);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// IP restrictions. // IP restrictions.
@ -219,6 +241,7 @@ if ($ADMIN->fulltree) {
get_string('requiresubnet', 'quiz'), get_string('configrequiresubnet', 'quiz'), get_string('requiresubnet', 'quiz'), get_string('configrequiresubnet', 'quiz'),
'', PARAM_TEXT); '', PARAM_TEXT);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Enforced delay between attempts. // Enforced delay between attempts.
@ -226,17 +249,21 @@ if ($ADMIN->fulltree) {
get_string('delay1st2nd', 'quiz'), get_string('configdelay1st2nd', 'quiz'), get_string('delay1st2nd', 'quiz'), get_string('configdelay1st2nd', 'quiz'),
0, 60); 0, 60);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
$setting = new admin_setting_configduration('quiz/delay2', $setting = new admin_setting_configduration('quiz/delay2',
get_string('delaylater', 'quiz'), get_string('configdelaylater', 'quiz'), get_string('delaylater', 'quiz'), get_string('configdelaylater', 'quiz'),
0, 60); 0, 60);
$setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true); $setting->set_advanced_flag_options(admin_setting_flag::ENABLED, true);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting); $quizsettings->add($setting);
// Browser security. // Browser security.
$quizsettings->add(new mod_quiz_admin_setting_browsersecurity('quiz/browsersecurity', $setting = new mod_quiz_admin_setting_browsersecurity('quiz/browsersecurity',
get_string('showinsecurepopup', 'quiz'), get_string('configpopup', 'quiz'), get_string('showinsecurepopup', 'quiz'), get_string('configpopup', 'quiz'),
array('value' => '-', 'adv' => true), null)); array('value' => '-', 'adv' => true), null);
$setting->set_locked_flag_options(admin_setting_flag::ENABLED, false);
$quizsettings->add($setting);
$quizsettings->add(new admin_setting_configtext('quiz/initialnumfeedbacks', $quizsettings->add(new admin_setting_configtext('quiz/initialnumfeedbacks',
get_string('initialnumfeedbacks', 'quiz'), get_string('initialnumfeedbacks_desc', 'quiz'), get_string('initialnumfeedbacks', 'quiz'), get_string('initialnumfeedbacks_desc', 'quiz'),