From de4cd1e0471b7b52745949553735e5d1adb38cfc Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Fri, 25 Apr 2014 18:02:47 +0100 Subject: [PATCH 1/4] MDL-45273 quiz: move admin settings into classes folder. --- .../admin_review_setting.php} | 112 ++++-------------- .../classes/admin_setting_browsersecurity.php | 50 ++++++++ .../classes/admin_setting_grademethod.php | 50 ++++++++ .../classes/admin_setting_overduehandling.php | 50 ++++++++ mod/quiz/settings.php | 2 - 5 files changed, 176 insertions(+), 88 deletions(-) rename mod/quiz/{settingslib.php => classes/admin_review_setting.php} (62%) create mode 100644 mod/quiz/classes/admin_setting_browsersecurity.php create mode 100644 mod/quiz/classes/admin_setting_grademethod.php create mode 100644 mod/quiz/classes/admin_setting_overduehandling.php diff --git a/mod/quiz/settingslib.php b/mod/quiz/classes/admin_review_setting.php similarity index 62% rename from mod/quiz/settingslib.php rename to mod/quiz/classes/admin_review_setting.php index b5fc49ed5be..215b493d128 100644 --- a/mod/quiz/settingslib.php +++ b/mod/quiz/classes/admin_review_setting.php @@ -15,8 +15,7 @@ // along with Moodle. If not, see . /** - * This page is the entry page into the quiz UI. Displays information about the - * quiz to students and teachers, and lets students see their previous attempts. + * Admin settings class for the quiz review opitions. * * @package mod_quiz * @copyright 2008 Tim Hunt @@ -38,10 +37,10 @@ class mod_quiz_admin_review_setting extends admin_setting { * @var integer should match the constants defined in {@link mod_quiz_display_options}. * again, copied for performance reasons. */ - const DURING = 0x10000; + const DURING = 0x10000; const IMMEDIATELY_AFTER = 0x01000; - const LATER_WHILE_OPEN = 0x00100; - const AFTER_CLOSE = 0x00010; + const LATER_WHILE_OPEN = 0x00100; + const AFTER_CLOSE = 0x00010; /**#@-*/ /** @@ -56,16 +55,26 @@ class mod_quiz_admin_review_setting extends admin_setting { */ public static function fields() { return array( - 'attempt' => get_string('theattempt', 'quiz'), - 'correctness' => get_string('whethercorrect', 'question'), - 'marks' => get_string('marks', 'question'), + 'attempt' => get_string('theattempt', 'quiz'), + 'correctness' => get_string('whethercorrect', 'question'), + 'marks' => get_string('marks', 'question'), 'specificfeedback' => get_string('specificfeedback', 'question'), - 'generalfeedback' => get_string('generalfeedback', 'question'), - 'rightanswer' => get_string('rightanswer', 'question'), - 'overallfeedback' => get_string('overallfeedback', 'quiz'), + 'generalfeedback' => get_string('generalfeedback', 'question'), + 'rightanswer' => get_string('rightanswer', 'question'), + 'overallfeedback' => get_string('overallfeedback', 'quiz'), ); } + /** + * Constructor. + * + * @param string $name unique ascii name, either 'mysetting' for settings that in config, + * or 'myplugin/mysetting' for ones in config_plugins. + * @param string $visiblename localised name + * @param string $description localised long description + * @param mixed $defaultsetting string or array depending on implementation + * @param bool|null $duringstate + */ public function __construct($name, $visiblename, $description, $defaultsetting, $duringstate = null) { $this->duringstate = $duringstate; @@ -80,12 +89,15 @@ class mod_quiz_admin_review_setting extends admin_setting { self::AFTER_CLOSE; } + /** + * @return array name of all the possible times. + */ protected static function times() { return array( - self::DURING => get_string('reviewduring', 'quiz'), + self::DURING => get_string('reviewduring', 'quiz'), self::IMMEDIATELY_AFTER => get_string('reviewimmediately', 'quiz'), - self::LATER_WHILE_OPEN => get_string('reviewopen', 'quiz'), - self::AFTER_CLOSE => get_string('reviewclosed', 'quiz'), + self::LATER_WHILE_OPEN => get_string('reviewopen', 'quiz'), + self::AFTER_CLOSE => get_string('reviewclosed', 'quiz'), ); } @@ -146,75 +158,3 @@ class mod_quiz_admin_review_setting extends admin_setting { $this->description, true, '', get_string('everythingon', 'quiz'), $query); } } - - -/** - * Admin settings class for the quiz grading method. - * - * Just so we can lazy-load the choices. - * - * @copyright 2011 The Open University - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class mod_quiz_admin_setting_grademethod extends admin_setting_configselect_with_advanced { - public function load_choices() { - global $CFG; - - if (is_array($this->choices)) { - return true; - } - - require_once($CFG->dirroot . '/mod/quiz/locallib.php'); - $this->choices = quiz_get_grading_options(); - - return true; - } -} - - -/** - * Admin settings class for the quiz browser security option. - * - * Just so we can lazy-load the choices. - * - * @copyright 2011 The Open University - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class mod_quiz_admin_setting_browsersecurity extends admin_setting_configselect_with_advanced { - public function load_choices() { - global $CFG; - - if (is_array($this->choices)) { - return true; - } - - require_once($CFG->dirroot . '/mod/quiz/locallib.php'); - $this->choices = quiz_access_manager::get_browser_security_choices(); - - return true; - } -} - - -/** - * Admin settings class for the quiz overdue attempt handling method. - * - * Just so we can lazy-load the choices. - * - * @copyright 2011 The Open University - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class mod_quiz_admin_setting_overduehandling extends admin_setting_configselect_with_advanced { - public function load_choices() { - global $CFG; - - if (is_array($this->choices)) { - return true; - } - - require_once($CFG->dirroot . '/mod/quiz/locallib.php'); - $this->choices = quiz_get_overdue_handling_options(); - - return true; - } -} diff --git a/mod/quiz/classes/admin_setting_browsersecurity.php b/mod/quiz/classes/admin_setting_browsersecurity.php new file mode 100644 index 00000000000..6d83ac29a70 --- /dev/null +++ b/mod/quiz/classes/admin_setting_browsersecurity.php @@ -0,0 +1,50 @@ +. + +/** + * Admin settings class for the quiz browser security option. + * + * @package mod_quiz + * @copyright 2008 Tim Hunt + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + + +defined('MOODLE_INTERNAL') || die(); + + +/** + * Admin settings class for the quiz browser security option. + * + * Just so we can lazy-load the choices. + * + * @copyright 2011 The Open University + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_quiz_admin_setting_browsersecurity extends admin_setting_configselect_with_advanced { + public function load_choices() { + global $CFG; + + if (is_array($this->choices)) { + return true; + } + + require_once($CFG->dirroot . '/mod/quiz/locallib.php'); + $this->choices = quiz_access_manager::get_browser_security_choices(); + + return true; + } +} diff --git a/mod/quiz/classes/admin_setting_grademethod.php b/mod/quiz/classes/admin_setting_grademethod.php new file mode 100644 index 00000000000..45e31ce9b87 --- /dev/null +++ b/mod/quiz/classes/admin_setting_grademethod.php @@ -0,0 +1,50 @@ +. + +/** + * Admin settings class for the quiz grading method. + * + * @package mod_quiz + * @copyright 2008 Tim Hunt + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + + +defined('MOODLE_INTERNAL') || die(); + + +/** + * Admin settings class for the quiz grading method. + * + * Just so we can lazy-load the choices. + * + * @copyright 2011 The Open University + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_quiz_admin_setting_grademethod extends admin_setting_configselect_with_advanced { + public function load_choices() { + global $CFG; + + if (is_array($this->choices)) { + return true; + } + + require_once($CFG->dirroot . '/mod/quiz/locallib.php'); + $this->choices = quiz_get_grading_options(); + + return true; + } +} diff --git a/mod/quiz/classes/admin_setting_overduehandling.php b/mod/quiz/classes/admin_setting_overduehandling.php new file mode 100644 index 00000000000..71b1245521e --- /dev/null +++ b/mod/quiz/classes/admin_setting_overduehandling.php @@ -0,0 +1,50 @@ +. + +/** + * Admin settings class for the quiz overdue attempt handling method. + * + * @package mod_quiz + * @copyright 2008 Tim Hunt + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + + +defined('MOODLE_INTERNAL') || die(); + + +/** + * Admin settings class for the quiz overdue attempt handling method. + * + * Just so we can lazy-load the choices. + * + * @copyright 2011 The Open University + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_quiz_admin_setting_overduehandling extends admin_setting_configselect_with_advanced { + public function load_choices() { + global $CFG; + + if (is_array($this->choices)) { + return true; + } + + require_once($CFG->dirroot . '/mod/quiz/locallib.php'); + $this->choices = quiz_get_overdue_handling_options(); + + return true; + } +} diff --git a/mod/quiz/settings.php b/mod/quiz/settings.php index 396d71d961f..8be58554c7b 100644 --- a/mod/quiz/settings.php +++ b/mod/quiz/settings.php @@ -25,8 +25,6 @@ defined('MOODLE_INTERNAL') || die(); -require_once($CFG->dirroot . '/mod/quiz/lib.php'); -require_once($CFG->dirroot . '/mod/quiz/settingslib.php'); require_once($CFG->dirroot . '/mod/quiz/locallib.php'); // First get a list of quiz reports with there own settings pages. If there none, From 9ec7a716611fa5891e3e3eb020091e2645b41264 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Fri, 25 Apr 2014 18:48:05 +0100 Subject: [PATCH 2/4] MDL-45273 remove the need for quiz settings.php to include locallib.php. --- mod/quiz/classes/admin_setting_user_image.php | 50 +++++++++++++++++++ mod/quiz/locallib.php | 11 ++++ mod/quiz/mod_form.php | 6 +-- mod/quiz/settings.php | 11 ++-- 4 files changed, 66 insertions(+), 12 deletions(-) create mode 100644 mod/quiz/classes/admin_setting_user_image.php diff --git a/mod/quiz/classes/admin_setting_user_image.php b/mod/quiz/classes/admin_setting_user_image.php new file mode 100644 index 00000000000..ba265019193 --- /dev/null +++ b/mod/quiz/classes/admin_setting_user_image.php @@ -0,0 +1,50 @@ +. + +/** + * Admin settings class for the choices for how to display the user's image + * + * @package mod_quiz + * @copyright 2008 Tim Hunt + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + + +defined('MOODLE_INTERNAL') || die(); + + +/** + * Admin settings class for the choices for how to display the user's image. + * + * Just so we can lazy-load the choices. + * + * @copyright 2011 The Open University + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_quiz_admin_setting_user_image extends admin_setting_configselect_with_advanced { + public function load_choices() { + global $CFG; + + if (is_array($this->choices)) { + return true; + } + + require_once($CFG->dirroot . '/mod/quiz/locallib.php'); + $this->choices = quiz_get_user_image_options(); + + return true; + } +} diff --git a/mod/quiz/locallib.php b/mod/quiz/locallib.php index d4264b704f8..333b8c59b1c 100644 --- a/mod/quiz/locallib.php +++ b/mod/quiz/locallib.php @@ -1125,6 +1125,17 @@ function quiz_get_overdue_handling_options() { ); } +/** + * @return array string => lang string the options for whether to display the user's picture. + */ +function quiz_get_user_image_options() { + return array( + QUIZ_SHOWIMAGE_NONE => get_string('shownoimage', 'quiz'), + QUIZ_SHOWIMAGE_SMALL => get_string('showsmallimage', 'quiz'), + QUIZ_SHOWIMAGE_LARGE => get_string('showlargeimage', 'quiz'), + ); +} + /** * @param string $state one of the state constants like IN_PROGRESS. * @return string the human-readable state name. diff --git a/mod/quiz/mod_form.php b/mod/quiz/mod_form.php index 98d2aa83be9..efd0e8ac813 100644 --- a/mod/quiz/mod_form.php +++ b/mod/quiz/mod_form.php @@ -252,10 +252,8 @@ class mod_quiz_mod_form extends moodleform_mod { $mform->addElement('header', 'display', get_string('appearance')); // Show user picture. - $mform->addElement('select', 'showuserpicture', get_string('showuserpicture', 'quiz'), array( - QUIZ_SHOWIMAGE_NONE => get_string('shownoimage', 'quiz'), - QUIZ_SHOWIMAGE_SMALL => get_string('showsmallimage', 'quiz'), - QUIZ_SHOWIMAGE_LARGE => get_string('showlargeimage', 'quiz'))); + $mform->addElement('select', 'showuserpicture', get_string('showuserpicture', 'quiz'), + quiz_get_user_image_options()); $mform->addHelpButton('showuserpicture', 'showuserpicture', 'quiz'); $mform->setAdvanced('showuserpicture', $quizconfig->showuserpicture_adv); $mform->setDefault('showuserpicture', $quizconfig->showuserpicture); diff --git a/mod/quiz/settings.php b/mod/quiz/settings.php index 8be58554c7b..9f3db0191e0 100644 --- a/mod/quiz/settings.php +++ b/mod/quiz/settings.php @@ -25,7 +25,7 @@ defined('MOODLE_INTERNAL') || die(); -require_once($CFG->dirroot . '/mod/quiz/locallib.php'); +require_once($CFG->dirroot . '/mod/quiz/lib.php'); // First get a list of quiz reports with there own settings pages. If there none, // we use a simpler overall menu structure. @@ -150,14 +150,9 @@ foreach (mod_quiz_admin_review_setting::fields() as $field => $name) { } // Show the user's picture. -$options = array( - QUIZ_SHOWIMAGE_NONE => get_string('shownoimage', 'quiz'), - QUIZ_SHOWIMAGE_SMALL => get_string('showsmallimage', 'quiz'), - QUIZ_SHOWIMAGE_LARGE => get_string('showlargeimage', 'quiz')); - -$quizsettings->add(new admin_setting_configselect_with_advanced('quiz/showuserpicture', +$quizsettings->add(new mod_quiz_admin_setting_user_image('quiz/showuserpicture', get_string('showuserpicture', 'quiz'), get_string('configshowuserpicture', 'quiz'), - array('value' => QUIZ_SHOWIMAGE_NONE, 'adv' => false), $options)); + array('value' => 0, 'adv' => false), $options)); // Decimal places for overall grades. $options = array(); From 8a347d8011400a5deeec476f9446e10fc63072a4 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Fri, 25 Apr 2014 18:51:03 +0100 Subject: [PATCH 3/4] MDL-45273 only create the quiz settings if necessary. --- mod/quiz/settings.php | 312 +++++++++++++++++++++--------------------- 1 file changed, 157 insertions(+), 155 deletions(-) diff --git a/mod/quiz/settings.php b/mod/quiz/settings.php index 9f3db0191e0..3732336f56c 100644 --- a/mod/quiz/settings.php +++ b/mod/quiz/settings.php @@ -55,169 +55,171 @@ if (empty($reportsbyname) && empty($rulesbyname)) { } $quizsettings = new admin_settingpage('modsettingquiz', $pagetitle, 'moodle/site:config'); -// Introductory explanation that all the settings are defaults for the add quiz form. -$quizsettings->add(new admin_setting_heading('quizintro', '', get_string('configintro', 'quiz'))); +if ($ADMIN->fulltree) { + // Introductory explanation that all the settings are defaults for the add quiz form. + $quizsettings->add(new admin_setting_heading('quizintro', '', get_string('configintro', 'quiz'))); -// Time limit. -$quizsettings->add(new admin_setting_configtext_with_advanced('quiz/timelimit', - get_string('timelimitsec', 'quiz'), get_string('configtimelimitsec', 'quiz'), - array('value' => '0', 'adv' => false), PARAM_INT)); + // Time limit. + $quizsettings->add(new admin_setting_configtext_with_advanced('quiz/timelimit', + get_string('timelimitsec', 'quiz'), get_string('configtimelimitsec', 'quiz'), + array('value' => '0', 'adv' => false), PARAM_INT)); -// What to do with overdue attempts. -$quizsettings->add(new mod_quiz_admin_setting_overduehandling('quiz/overduehandling', - get_string('overduehandling', 'quiz'), get_string('overduehandling_desc', 'quiz'), - array('value' => 'autoabandon', 'adv' => false), null)); + // What to do with overdue attempts. + $quizsettings->add(new mod_quiz_admin_setting_overduehandling('quiz/overduehandling', + get_string('overduehandling', 'quiz'), get_string('overduehandling_desc', 'quiz'), + array('value' => 'autoabandon', 'adv' => false), null)); -// Grace period time. -$quizsettings->add(new admin_setting_configtext_with_advanced('quiz/graceperiod', - get_string('graceperiod', 'quiz'), get_string('graceperiod_desc', 'quiz'), - array('value' => '86400', 'adv' => false), PARAM_INT)); + // Grace period time. + $quizsettings->add(new admin_setting_configtext_with_advanced('quiz/graceperiod', + get_string('graceperiod', 'quiz'), get_string('graceperiod_desc', 'quiz'), + array('value' => '86400', 'adv' => false), PARAM_INT)); -// Minimum grace period used behind the scenes. -$quizsettings->add(new admin_setting_configtext('quiz/graceperiodmin', - get_string('graceperiodmin', 'quiz'), get_string('graceperiodmin_desc', 'quiz'), - 60, PARAM_INT)); + // Minimum grace period used behind the scenes. + $quizsettings->add(new admin_setting_configtext('quiz/graceperiodmin', + get_string('graceperiodmin', 'quiz'), get_string('graceperiodmin_desc', 'quiz'), + 60, PARAM_INT)); -// Number of attempts. -$options = array(get_string('unlimited')); -for ($i = 1; $i <= QUIZ_MAX_ATTEMPT_OPTION; $i++) { - $options[$i] = $i; -} -$quizsettings->add(new admin_setting_configselect_with_advanced('quiz/attempts', - get_string('attemptsallowed', 'quiz'), get_string('configattemptsallowed', 'quiz'), - array('value' => 0, 'adv' => false), $options)); - -// Grading method. -$quizsettings->add(new mod_quiz_admin_setting_grademethod('quiz/grademethod', - get_string('grademethod', 'quiz'), get_string('configgrademethod', 'quiz'), - array('value' => QUIZ_GRADEHIGHEST, 'adv' => false), null)); - -// Maximum grade. -$quizsettings->add(new admin_setting_configtext('quiz/maximumgrade', - get_string('maximumgrade'), get_string('configmaximumgrade', 'quiz'), 10, PARAM_INT)); - -// Shuffle questions. -$quizsettings->add(new admin_setting_configcheckbox_with_advanced('quiz/shufflequestions', - get_string('shufflequestions', 'quiz'), get_string('configshufflequestions', 'quiz'), - array('value' => 0, 'adv' => false))); - -// Questions per page. -$perpage = array(); -$perpage[0] = get_string('never'); -$perpage[1] = get_string('aftereachquestion', 'quiz'); -for ($i = 2; $i <= QUIZ_MAX_QPP_OPTION; ++$i) { - $perpage[$i] = get_string('afternquestions', 'quiz', $i); -} -$quizsettings->add(new admin_setting_configselect_with_advanced('quiz/questionsperpage', - get_string('newpageevery', 'quiz'), get_string('confignewpageevery', 'quiz'), - array('value' => 1, 'adv' => false), $perpage)); - -// Navigation method. -$quizsettings->add(new admin_setting_configselect_with_advanced('quiz/navmethod', - get_string('navmethod', 'quiz'), get_string('confignavmethod', 'quiz'), - array('value' => QUIZ_NAVMETHOD_FREE, 'adv' => true), quiz_get_navigation_options())); - -// Shuffle within questions. -$quizsettings->add(new admin_setting_configcheckbox_with_advanced('quiz/shuffleanswers', - get_string('shufflewithin', 'quiz'), get_string('configshufflewithin', 'quiz'), - array('value' => 1, 'adv' => false))); - -// Preferred behaviour. -$quizsettings->add(new admin_setting_question_behaviour('quiz/preferredbehaviour', - get_string('howquestionsbehave', 'question'), get_string('howquestionsbehave_desc', 'quiz'), - 'deferredfeedback')); - -// Each attempt builds on last. -$quizsettings->add(new admin_setting_configcheckbox_with_advanced('quiz/attemptonlast', - get_string('eachattemptbuildsonthelast', 'quiz'), - get_string('configeachattemptbuildsonthelast', 'quiz'), - array('value' => 0, 'adv' => true))); - -// Review options. -$quizsettings->add(new admin_setting_heading('reviewheading', - get_string('reviewoptionsheading', 'quiz'), '')); -foreach (mod_quiz_admin_review_setting::fields() as $field => $name) { - $default = mod_quiz_admin_review_setting::all_on(); - $forceduring = null; - if ($field == 'attempt') { - $forceduring = true; - } else if ($field == 'overallfeedback') { - $default = $default ^ mod_quiz_admin_review_setting::DURING; - $forceduring = false; + // Number of attempts. + $options = array(get_string('unlimited')); + for ($i = 1; $i <= QUIZ_MAX_ATTEMPT_OPTION; $i++) { + $options[$i] = $i; } - $quizsettings->add(new mod_quiz_admin_review_setting('quiz/review' . $field, - $name, '', $default, $forceduring)); + $quizsettings->add(new admin_setting_configselect_with_advanced('quiz/attempts', + get_string('attemptsallowed', 'quiz'), get_string('configattemptsallowed', 'quiz'), + array('value' => 0, 'adv' => false), $options)); + + // Grading method. + $quizsettings->add(new mod_quiz_admin_setting_grademethod('quiz/grademethod', + get_string('grademethod', 'quiz'), get_string('configgrademethod', 'quiz'), + array('value' => QUIZ_GRADEHIGHEST, 'adv' => false), null)); + + // Maximum grade. + $quizsettings->add(new admin_setting_configtext('quiz/maximumgrade', + get_string('maximumgrade'), get_string('configmaximumgrade', 'quiz'), 10, PARAM_INT)); + + // Shuffle questions. + $quizsettings->add(new admin_setting_configcheckbox_with_advanced('quiz/shufflequestions', + get_string('shufflequestions', 'quiz'), get_string('configshufflequestions', 'quiz'), + array('value' => 0, 'adv' => false))); + + // Questions per page. + $perpage = array(); + $perpage[0] = get_string('never'); + $perpage[1] = get_string('aftereachquestion', 'quiz'); + for ($i = 2; $i <= QUIZ_MAX_QPP_OPTION; ++$i) { + $perpage[$i] = get_string('afternquestions', 'quiz', $i); + } + $quizsettings->add(new admin_setting_configselect_with_advanced('quiz/questionsperpage', + get_string('newpageevery', 'quiz'), get_string('confignewpageevery', 'quiz'), + array('value' => 1, 'adv' => false), $perpage)); + + // Navigation method. + $quizsettings->add(new admin_setting_configselect_with_advanced('quiz/navmethod', + get_string('navmethod', 'quiz'), get_string('confignavmethod', 'quiz'), + array('value' => QUIZ_NAVMETHOD_FREE, 'adv' => true), quiz_get_navigation_options())); + + // Shuffle within questions. + $quizsettings->add(new admin_setting_configcheckbox_with_advanced('quiz/shuffleanswers', + get_string('shufflewithin', 'quiz'), get_string('configshufflewithin', 'quiz'), + array('value' => 1, 'adv' => false))); + + // Preferred behaviour. + $quizsettings->add(new admin_setting_question_behaviour('quiz/preferredbehaviour', + get_string('howquestionsbehave', 'question'), get_string('howquestionsbehave_desc', 'quiz'), + 'deferredfeedback')); + + // Each attempt builds on last. + $quizsettings->add(new admin_setting_configcheckbox_with_advanced('quiz/attemptonlast', + get_string('eachattemptbuildsonthelast', 'quiz'), + get_string('configeachattemptbuildsonthelast', 'quiz'), + array('value' => 0, 'adv' => true))); + + // Review options. + $quizsettings->add(new admin_setting_heading('reviewheading', + get_string('reviewoptionsheading', 'quiz'), '')); + foreach (mod_quiz_admin_review_setting::fields() as $field => $name) { + $default = mod_quiz_admin_review_setting::all_on(); + $forceduring = null; + if ($field == 'attempt') { + $forceduring = true; + } else if ($field == 'overallfeedback') { + $default = $default ^ mod_quiz_admin_review_setting::DURING; + $forceduring = false; + } + $quizsettings->add(new mod_quiz_admin_review_setting('quiz/review' . $field, + $name, '', $default, $forceduring)); + } + + // Show the user's picture. + $quizsettings->add(new mod_quiz_admin_setting_user_image('quiz/showuserpicture', + get_string('showuserpicture', 'quiz'), get_string('configshowuserpicture', 'quiz'), + array('value' => 0, 'adv' => false), $options)); + + // Decimal places for overall grades. + $options = array(); + for ($i = 0; $i <= QUIZ_MAX_DECIMAL_OPTION; $i++) { + $options[$i] = $i; + } + $quizsettings->add(new admin_setting_configselect_with_advanced('quiz/decimalpoints', + get_string('decimalplaces', 'quiz'), get_string('configdecimalplaces', 'quiz'), + array('value' => 2, 'adv' => false), $options)); + + // Decimal places for question grades. + $options = array(-1 => get_string('sameasoverall', 'quiz')); + for ($i = 0; $i <= QUIZ_MAX_Q_DECIMAL_OPTION; $i++) { + $options[$i] = $i; + } + $quizsettings->add(new admin_setting_configselect_with_advanced('quiz/questiondecimalpoints', + get_string('decimalplacesquestion', 'quiz'), + get_string('configdecimalplacesquestion', 'quiz'), + array('value' => -1, 'adv' => true), $options)); + + // Show blocks during quiz attempts. + $quizsettings->add(new admin_setting_configcheckbox_with_advanced('quiz/showblocks', + get_string('showblocks', 'quiz'), get_string('configshowblocks', 'quiz'), + array('value' => 0, 'adv' => true))); + + // Password. + $quizsettings->add(new admin_setting_configtext_with_advanced('quiz/password', + get_string('requirepassword', 'quiz'), get_string('configrequirepassword', 'quiz'), + array('value' => '', 'adv' => true), PARAM_TEXT)); + + // IP restrictions. + $quizsettings->add(new admin_setting_configtext_with_advanced('quiz/subnet', + get_string('requiresubnet', 'quiz'), get_string('configrequiresubnet', 'quiz'), + array('value' => '', 'adv' => true), PARAM_TEXT)); + + // Enforced delay between attempts. + $quizsettings->add(new admin_setting_configtext_with_advanced('quiz/delay1', + get_string('delay1st2nd', 'quiz'), get_string('configdelay1st2nd', 'quiz'), + array('value' => 0, 'adv' => true), PARAM_INT)); + $quizsettings->add(new admin_setting_configtext_with_advanced('quiz/delay2', + get_string('delaylater', 'quiz'), get_string('configdelaylater', 'quiz'), + array('value' => 0, 'adv' => true), PARAM_INT)); + + // Browser security. + $quizsettings->add(new mod_quiz_admin_setting_browsersecurity('quiz/browsersecurity', + get_string('showinsecurepopup', 'quiz'), get_string('configpopup', 'quiz'), + array('value' => '-', 'adv' => true), null)); + + // Allow user to specify if setting outcomes is an advanced setting + if (!empty($CFG->enableoutcomes)) { + $quizsettings->add(new admin_setting_configcheckbox('quiz/outcomes_adv', + get_string('outcomesadvanced', 'quiz'), get_string('configoutcomesadvanced', 'quiz'), + '0')); + } + + // Autosave frequency. + $options = array( + 0 => get_string('donotuseautosave', 'quiz'), + 60 => get_string('oneminute', 'quiz'), + 120 => get_string('numminutes', 'moodle', 2), + 300 => get_string('numminutes', 'moodle', 5), + ); + $quizsettings->add(new admin_setting_configselect('quiz/autosaveperiod', + get_string('autosaveperiod', 'quiz'), get_string('autosaveperiod_desc', 'quiz'), 0, $options)); } -// Show the user's picture. -$quizsettings->add(new mod_quiz_admin_setting_user_image('quiz/showuserpicture', - get_string('showuserpicture', 'quiz'), get_string('configshowuserpicture', 'quiz'), - array('value' => 0, 'adv' => false), $options)); - -// Decimal places for overall grades. -$options = array(); -for ($i = 0; $i <= QUIZ_MAX_DECIMAL_OPTION; $i++) { - $options[$i] = $i; -} -$quizsettings->add(new admin_setting_configselect_with_advanced('quiz/decimalpoints', - get_string('decimalplaces', 'quiz'), get_string('configdecimalplaces', 'quiz'), - array('value' => 2, 'adv' => false), $options)); - -// Decimal places for question grades. -$options = array(-1 => get_string('sameasoverall', 'quiz')); -for ($i = 0; $i <= QUIZ_MAX_Q_DECIMAL_OPTION; $i++) { - $options[$i] = $i; -} -$quizsettings->add(new admin_setting_configselect_with_advanced('quiz/questiondecimalpoints', - get_string('decimalplacesquestion', 'quiz'), - get_string('configdecimalplacesquestion', 'quiz'), - array('value' => -1, 'adv' => true), $options)); - -// Show blocks during quiz attempts. -$quizsettings->add(new admin_setting_configcheckbox_with_advanced('quiz/showblocks', - get_string('showblocks', 'quiz'), get_string('configshowblocks', 'quiz'), - array('value' => 0, 'adv' => true))); - -// Password. -$quizsettings->add(new admin_setting_configtext_with_advanced('quiz/password', - get_string('requirepassword', 'quiz'), get_string('configrequirepassword', 'quiz'), - array('value' => '', 'adv' => true), PARAM_TEXT)); - -// IP restrictions. -$quizsettings->add(new admin_setting_configtext_with_advanced('quiz/subnet', - get_string('requiresubnet', 'quiz'), get_string('configrequiresubnet', 'quiz'), - array('value' => '', 'adv' => true), PARAM_TEXT)); - -// Enforced delay between attempts. -$quizsettings->add(new admin_setting_configtext_with_advanced('quiz/delay1', - get_string('delay1st2nd', 'quiz'), get_string('configdelay1st2nd', 'quiz'), - array('value' => 0, 'adv' => true), PARAM_INT)); -$quizsettings->add(new admin_setting_configtext_with_advanced('quiz/delay2', - get_string('delaylater', 'quiz'), get_string('configdelaylater', 'quiz'), - array('value' => 0, 'adv' => true), PARAM_INT)); - -// Browser security. -$quizsettings->add(new mod_quiz_admin_setting_browsersecurity('quiz/browsersecurity', - get_string('showinsecurepopup', 'quiz'), get_string('configpopup', 'quiz'), - array('value' => '-', 'adv' => true), null)); - -// Allow user to specify if setting outcomes is an advanced setting -if (!empty($CFG->enableoutcomes)) { - $quizsettings->add(new admin_setting_configcheckbox('quiz/outcomes_adv', - get_string('outcomesadvanced', 'quiz'), get_string('configoutcomesadvanced', 'quiz'), - '0')); -} - -// Autosave frequency. -$options = array( - 0 => get_string('donotuseautosave', 'quiz'), - 60 => get_string('oneminute', 'quiz'), - 120 => get_string('numminutes', 'moodle', 2), - 300 => get_string('numminutes', 'moodle', 5), -); -$quizsettings->add(new admin_setting_configselect('quiz/autosaveperiod', - get_string('autosaveperiod', 'quiz'), get_string('autosaveperiod_desc', 'quiz'), 0, $options)); - // Now, depending on whether any reports have their own settings page, add // the quiz setting page to the appropriate place in the tree. if (empty($reportsbyname) && empty($rulesbyname)) { From 31805089497625017e21f78d5f26902ed2aac711 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Tue, 29 Apr 2014 11:56:30 +0100 Subject: [PATCH 4/4] MDL-45273 quiz: Fix codechecker issues. --- mod/quiz/classes/admin_review_setting.php | 26 ++++++++++++++++++----- mod/quiz/locallib.php | 6 ++++-- mod/quiz/settings.php | 2 +- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/mod/quiz/classes/admin_review_setting.php b/mod/quiz/classes/admin_review_setting.php index 215b493d128..6c0e8d6b2a1 100644 --- a/mod/quiz/classes/admin_review_setting.php +++ b/mod/quiz/classes/admin_review_setting.php @@ -33,15 +33,29 @@ defined('MOODLE_INTERNAL') || die(); * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class mod_quiz_admin_review_setting extends admin_setting { - /**#@+ - * @var integer should match the constants defined in {@link mod_quiz_display_options}. - * again, copied for performance reasons. + /** + * @var integer should match the constants defined in + * {@link mod_quiz_display_options}. Copied for performance reasons. */ const DURING = 0x10000; + + /** + * @var integer should match the constants defined in + * {@link mod_quiz_display_options}. Copied for performance reasons. + */ const IMMEDIATELY_AFTER = 0x01000; + + /** + * @var integer should match the constants defined in + * {@link mod_quiz_display_options}. Copied for performance reasons. + */ const LATER_WHILE_OPEN = 0x00100; + + /** + * @var integer should match the constants defined in + * {@link mod_quiz_display_options}. Copied for performance reasons. + */ const AFTER_CLOSE = 0x00010; - /**#@-*/ /** * @var boolean|null forced checked / disabled attributes for the during time. @@ -82,6 +96,7 @@ class mod_quiz_admin_review_setting extends admin_setting { } /** + * Return the combination that means all times. * @return int all times. */ public static function all_on() { @@ -90,7 +105,8 @@ class mod_quiz_admin_review_setting extends admin_setting { } /** - * @return array name of all the possible times. + * Get an array of the names of all the possible times. + * @return array an array of time constant => lang string. */ protected static function times() { return array( diff --git a/mod/quiz/locallib.php b/mod/quiz/locallib.php index 333b8c59b1c..0d49b636e48 100644 --- a/mod/quiz/locallib.php +++ b/mod/quiz/locallib.php @@ -1126,6 +1126,7 @@ function quiz_get_overdue_handling_options() { } /** + * Get the choices for what size user picture to show. * @return array string => lang string the options for whether to display the user's picture. */ function quiz_get_user_image_options() { @@ -1137,8 +1138,9 @@ function quiz_get_user_image_options() { } /** - * @param string $state one of the state constants like IN_PROGRESS. - * @return string the human-readable state name. + * Get the human-readable name for a quiz attempt state. + * @param string $state one of the state constants like {@link quiz_attempt::IN_PROGRESS}. + * @return string The lang string to describe that state. */ function quiz_attempt_state_name($state) { switch ($state) { diff --git a/mod/quiz/settings.php b/mod/quiz/settings.php index 3732336f56c..a5d8fc93457 100644 --- a/mod/quiz/settings.php +++ b/mod/quiz/settings.php @@ -202,7 +202,7 @@ if ($ADMIN->fulltree) { get_string('showinsecurepopup', 'quiz'), get_string('configpopup', 'quiz'), array('value' => '-', 'adv' => true), null)); - // Allow user to specify if setting outcomes is an advanced setting + // Allow user to specify if setting outcomes is an advanced setting. if (!empty($CFG->enableoutcomes)) { $quizsettings->add(new admin_setting_configcheckbox('quiz/outcomes_adv', get_string('outcomesadvanced', 'quiz'), get_string('configoutcomesadvanced', 'quiz'),