mirror of
https://github.com/moodle/moodle.git
synced 2025-08-04 16:36:37 +02:00
MDL-29627 quiz old popup int column => new browsersecurity column.
The new column store more meaningful string constants.
This commit is contained in:
parent
0eafc98852
commit
4344c5d5d9
15 changed files with 170 additions and 46 deletions
|
@ -116,7 +116,7 @@ class quiz_access_manager {
|
|||
* @return array key => lang string.
|
||||
*/
|
||||
public static function get_browser_security_choices() {
|
||||
$options = array(0 => get_string('none', 'quiz'));
|
||||
$options = array('-' => get_string('none', 'quiz'));
|
||||
foreach (self::get_rule_classes() as $rule) {
|
||||
$options += $rule::get_browser_security_choices();
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ class quizaccess_safebrowser extends quiz_access_rule_base {
|
|||
|
||||
public static function make(quiz $quizobj, $timenow, $canignoretimelimits) {
|
||||
|
||||
if ($quizobj->get_quiz()->popup != 2) {
|
||||
if ($quizobj->get_quiz()->browsersecurity !== 'safebrowser') {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -83,6 +83,6 @@ class quizaccess_safebrowser extends quiz_access_rule_base {
|
|||
return array();
|
||||
}
|
||||
|
||||
return array(2 => get_string('requiresafeexambrowser', 'quiz'));
|
||||
return array('safebrowser' => get_string('requiresafeexambrowser', 'quiz'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ class quizaccess_safebrowser_test extends UnitTestCase {
|
|||
// Nothing very testable in this class, just test that it obeys the general access rule contact.
|
||||
public function test_safebrowser_access_rule() {
|
||||
$quiz = new stdClass();
|
||||
$quiz->popup = 1;
|
||||
$quiz->browsersecurity = 'safebrowser';
|
||||
$quiz->questions = '';
|
||||
$cm = new stdClass();
|
||||
$cm->id = 0;
|
||||
|
|
|
@ -54,7 +54,7 @@ class quizaccess_securewindow extends quiz_access_rule_base {
|
|||
|
||||
public static function make(quiz $quizobj, $timenow, $canignoretimelimits) {
|
||||
|
||||
if ($quizobj->get_quiz()->popup != 1) {
|
||||
if ($quizobj->get_quiz()->browsersecurity !== 'securewindow') {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -89,6 +89,6 @@ class quizaccess_securewindow extends quiz_access_rule_base {
|
|||
* security settings menu.
|
||||
*/
|
||||
public static function get_browser_security_choices() {
|
||||
return array(1 => get_string('popupwithjavascriptsupport', 'quiz'));
|
||||
return array('securewindow' => get_string('popupwithjavascriptsupport', 'quiz'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ class quizaccess_securewindow_test extends UnitTestCase {
|
|||
// Nothing very testable in this class, just test that it obeys the general access rule contact.
|
||||
public function test_securewindow_access_rule() {
|
||||
$quiz = new stdClass();
|
||||
$quiz->popup = 1;
|
||||
$quiz->browsersecurity = 'securewindow';
|
||||
$quiz->questions = '';
|
||||
$cm = new stdClass();
|
||||
$cm->id = 0;
|
||||
|
|
|
@ -49,7 +49,7 @@ class backup_quiz_activity_structure_step extends backup_questions_activity_stru
|
|||
'questionsperpage', 'shufflequestions', 'shuffleanswers',
|
||||
'questions', 'sumgrades', 'grade', 'timecreated',
|
||||
'timemodified', 'timelimit', 'password', 'subnet',
|
||||
'popup', 'delay1', 'delay2', 'showuserpicture',
|
||||
'browsersecurity', 'delay1', 'delay2', 'showuserpicture',
|
||||
'showblocks'));
|
||||
|
||||
$qinstances = new backup_nested_element('question_instances');
|
||||
|
|
|
@ -195,6 +195,21 @@ class restore_quiz_activity_structure_step extends restore_questions_activity_st
|
|||
mod_quiz_display_options::AFTER_CLOSE : 0);
|
||||
}
|
||||
|
||||
// The old popup column from from <= 2.1 need to be mapped to
|
||||
// the new browsersecurity. MDL-29627
|
||||
if (!isset($data->browsersecurity)) {
|
||||
if (empty($data->popup)) {
|
||||
$data->browsersecurity = '-';
|
||||
} else if ($data->popup == 1) {
|
||||
$data->browsersecurity = 'securewindow';
|
||||
} else if ($data->popup == 2) {
|
||||
$data->browsersecurity = 'safebrowser';
|
||||
} else {
|
||||
$data->preferredbehaviour = '-';
|
||||
}
|
||||
unset($data->popup);
|
||||
}
|
||||
|
||||
// insert the quiz record
|
||||
$newitemid = $DB->insert_record('quiz', $data);
|
||||
// immediately after inserting "activity" record, call this
|
||||
|
|
|
@ -36,9 +36,9 @@
|
|||
<FIELD NAME="timemodified" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="timecreated" NEXT="timelimit"/>
|
||||
<FIELD NAME="timelimit" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="true" DEFAULT="0" SEQUENCE="false" PREVIOUS="timemodified" NEXT="password"/>
|
||||
<FIELD NAME="password" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="timelimit" NEXT="subnet"/>
|
||||
<FIELD NAME="subnet" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="password" NEXT="popup"/>
|
||||
<FIELD NAME="popup" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" PREVIOUS="subnet" NEXT="delay1"/>
|
||||
<FIELD NAME="delay1" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" PREVIOUS="popup" NEXT="delay2"/>
|
||||
<FIELD NAME="subnet" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" PREVIOUS="password" NEXT="browsersecurity"/>
|
||||
<FIELD NAME="browsersecurity" TYPE="char" LENGTH="32" NOTNULL="true" SEQUENCE="false" PREVIOUS="subnet" NEXT="delay1"/>
|
||||
<FIELD NAME="delay1" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" PREVIOUS="browsersecurity" NEXT="delay2"/>
|
||||
<FIELD NAME="delay2" TYPE="int" LENGTH="10" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" PREVIOUS="delay1" NEXT="showuserpicture"/>
|
||||
<FIELD NAME="showuserpicture" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" COMMENT="Option to show the user's picture during the attempt and on the review page." PREVIOUS="delay2" NEXT="showblocks"/>
|
||||
<FIELD NAME="showblocks" TYPE="int" LENGTH="4" NOTNULL="true" UNSIGNED="false" DEFAULT="0" SEQUENCE="false" COMMENT="Whether blocks should be shown on the attempt.php and review.php pages." PREVIOUS="showuserpicture"/>
|
||||
|
|
|
@ -1121,6 +1121,76 @@ function xmldb_quiz_upgrade($oldversion) {
|
|||
// Moodle v2.1.0 release upgrade line
|
||||
// Put any upgrade step following this
|
||||
|
||||
if ($oldversion < 2011100600) {
|
||||
|
||||
// Define field browsersecurity to be added to quiz
|
||||
$table = new xmldb_table('quiz');
|
||||
$field = new xmldb_field('browsersecurity', XMLDB_TYPE_CHAR, '32', null,
|
||||
XMLDB_NOTNULL, null, '[unknownvalue]', 'subnet');
|
||||
|
||||
// Conditionally launch add field browsersecurity
|
||||
if (!$dbman->field_exists($table, $field)) {
|
||||
$dbman->add_field($table, $field);
|
||||
}
|
||||
|
||||
// quiz savepoint reached
|
||||
upgrade_mod_savepoint(true, 2011100600, 'quiz');
|
||||
}
|
||||
|
||||
if ($oldversion < 2011100601) {
|
||||
$DB->set_field('quiz', 'browsersecurity', '-', array('popup' => 0));
|
||||
$DB->set_field('quiz', 'browsersecurity', 'securewindow', array('popup' => 1));
|
||||
$DB->set_field('quiz', 'browsersecurity', 'safebrowser', array('popup' => 2));
|
||||
|
||||
upgrade_mod_savepoint(true, 2011100601, 'quiz');
|
||||
}
|
||||
|
||||
if ($oldversion < 2011100602) {
|
||||
|
||||
// Changing the default of field browsersecurity on table quiz to drop it
|
||||
$table = new xmldb_table('quiz');
|
||||
$field = new xmldb_field('browsersecurity', XMLDB_TYPE_CHAR, '32', null,
|
||||
XMLDB_NOTNULL, null, null, 'subnet');
|
||||
|
||||
// Launch change of default for field browsersecurity
|
||||
$dbman->change_field_default($table, $field);
|
||||
|
||||
// quiz savepoint reached
|
||||
upgrade_mod_savepoint(true, 2011100602, 'quiz');
|
||||
}
|
||||
|
||||
if ($oldversion < 2011100603) {
|
||||
|
||||
// Define field popup to be dropped from quiz
|
||||
$table = new xmldb_table('quiz');
|
||||
$field = new xmldb_field('popup');
|
||||
|
||||
// Conditionally launch drop field popup
|
||||
if ($dbman->field_exists($table, $field)) {
|
||||
$dbman->drop_field($table, $field);
|
||||
}
|
||||
|
||||
// quiz savepoint reached
|
||||
upgrade_mod_savepoint(true, 2011100603, 'quiz');
|
||||
}
|
||||
|
||||
if ($oldversion < 2011100604) {
|
||||
switch (get_config('quiz', 'popup')) {
|
||||
case 1:
|
||||
set_config('browsersecurity', 'securewindow', 'quiz');
|
||||
case 2:
|
||||
set_config('browsersecurity', 'safebrowser', 'quiz');
|
||||
default:
|
||||
set_config('browsersecurity', '-', 'quiz');
|
||||
}
|
||||
unset_config('quiz', 'popup');
|
||||
|
||||
set_config('browsersecurity_adv', get_config('quiz', 'popup_adv'), 'quiz');
|
||||
unset_config('quiz', 'popup_adv');
|
||||
|
||||
upgrade_mod_savepoint(true, 2011100604, 'quiz');
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,16 @@ define('QUIZ_MAX_DECIMAL_OPTION', 5);
|
|||
define('QUIZ_MAX_Q_DECIMAL_OPTION', 7);
|
||||
/**#@-*/
|
||||
|
||||
/**#@+
|
||||
* Options determining how the grades from individual attempts are combined to give
|
||||
* the overall grade for a user
|
||||
*/
|
||||
define('QUIZ_GRADEHIGHEST', '1');
|
||||
define('QUIZ_GRADEAVERAGE', '2');
|
||||
define('QUIZ_ATTEMPTFIRST', '3');
|
||||
define('QUIZ_ATTEMPTLAST', '4');
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* If start and end date for the quiz are more than this many seconds apart
|
||||
* they will be represented by two separate events in the calendar
|
||||
|
|
|
@ -41,16 +41,6 @@ require_once($CFG->libdir . '/eventslib.php');
|
|||
require_once($CFG->libdir . '/filelib.php');
|
||||
|
||||
|
||||
/**#@+
|
||||
* Options determining how the grades from individual attempts are combined to give
|
||||
* the overall grade for a user
|
||||
*/
|
||||
define('QUIZ_GRADEHIGHEST', '1');
|
||||
define('QUIZ_GRADEAVERAGE', '2');
|
||||
define('QUIZ_ATTEMPTFIRST', '3');
|
||||
define('QUIZ_ATTEMPTLAST', '4');
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* We show the countdown timer if there is less than this amount of time left before the
|
||||
* the quiz close date. (1 hour)
|
||||
|
|
|
@ -282,11 +282,11 @@ class mod_quiz_mod_form extends moodleform_mod {
|
|||
$mform->disabledIf('delay2', 'attempts', 'eq', 2);
|
||||
|
||||
// 'Secure' window.
|
||||
$mform->addElement('select', 'popup', get_string('browsersecurity', 'quiz'),
|
||||
$mform->addElement('select', 'browsersecurity', get_string('browsersecurity', 'quiz'),
|
||||
quiz_access_manager::get_browser_security_choices());
|
||||
$mform->addHelpButton('popup', 'browsersecurity', 'quiz');
|
||||
$mform->setAdvanced('popup', $quizconfig->popup_adv);
|
||||
$mform->setDefault('popup', $quizconfig->popup);
|
||||
$mform->addHelpButton('browsersecurity', 'browsersecurity', 'quiz');
|
||||
$mform->setAdvanced('browsersecurity', $quizconfig->browsersecurity_adv);
|
||||
$mform->setDefault('browsersecurity', $quizconfig->browsersecurity);
|
||||
|
||||
// Any other rule plugins.
|
||||
quiz_access_manager::add_settings_form_fields($this, $mform);
|
||||
|
|
|
@ -27,26 +27,17 @@
|
|||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
require_once($CFG->dirroot . '/mod/quiz/lib.php');
|
||||
require_once($CFG->dirroot . '/mod/quiz/locallib.php');
|
||||
require_once($CFG->dirroot . '/mod/quiz/settingslib.php');
|
||||
|
||||
// First get a list of quiz reports with there own settings pages. If there none,
|
||||
// we use a simpler overall menu structure.
|
||||
$reports = get_plugin_list_with_file('quiz', 'settings.php', false);
|
||||
$reportsbyname = array();
|
||||
if ($reports = get_plugin_list('quiz')) {
|
||||
foreach ($reports as $report => $reportdir) {
|
||||
if (file_exists("$reportdir/settings.php")) {
|
||||
$strreportname = get_string($report . 'report', 'quiz_'.$report);
|
||||
// Deal with reports which are lacking the language string
|
||||
if ($strreportname[0] == '[') {
|
||||
$textlib = textlib_get_instance();
|
||||
$strreportname = $textlib->strtotitle($report . ' report');
|
||||
}
|
||||
$reportsbyname[$strreportname] = $report;
|
||||
}
|
||||
}
|
||||
ksort($reportsbyname);
|
||||
}
|
||||
|
||||
// Create the quiz settings page.
|
||||
if (empty($reportsbyname)) {
|
||||
|
@ -74,9 +65,9 @@ $quizsettings->add(new admin_setting_configselect_with_advanced('quiz/attempts',
|
|||
array('value' => 0, 'fix' => false), $options));
|
||||
|
||||
// Grading method.
|
||||
$quizsettings->add(new admin_setting_configselect_with_advanced('quiz/grademethod',
|
||||
$quizsettings->add(new mod_quiz_admin_setting_grademethod('quiz/grademethod',
|
||||
get_string('grademethod', 'quiz'), get_string('configgrademethod', 'quiz'),
|
||||
array('value' => QUIZ_GRADEHIGHEST, 'fix' => false), quiz_get_grading_options()));
|
||||
array('value' => QUIZ_GRADEHIGHEST, 'fix' => false), null));
|
||||
|
||||
// Maximum grade
|
||||
$quizsettings->add(new admin_setting_configtext('quiz/maximumgrade',
|
||||
|
@ -178,9 +169,9 @@ $quizsettings->add(new admin_setting_configtext_with_advanced('quiz/delay2',
|
|||
array('value' => 0, 'fix' => true), PARAM_INTEGER));
|
||||
|
||||
// 'Secure' window.
|
||||
$quizsettings->add(new admin_setting_configcheckbox_with_advanced('quiz/popup',
|
||||
$quizsettings->add(new mod_quiz_admin_setting_browsersecurity('quiz/browsersecurity',
|
||||
get_string('showinsecurepopup', 'quiz'), get_string('configpopup', 'quiz'),
|
||||
array('value' => 0, 'adv' => true)));
|
||||
array('value' => '-', 'adv' => true), null));
|
||||
|
||||
// Now, depending on whether any reports have their own settings page, add
|
||||
// the quiz setting page to the appropriate place in the tree.
|
||||
|
|
|
@ -29,7 +29,7 @@ defined('MOODLE_INTERNAL') || die();
|
|||
|
||||
|
||||
/**
|
||||
* Quiz specific admin settings class.
|
||||
* Admin settings class for the quiz review opitions.
|
||||
*
|
||||
* @copyright 2008 Tim Hunt
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
|
@ -147,3 +147,51 @@ 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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,6 +25,6 @@
|
|||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
$module->version = 2011070100;
|
||||
$module->version = 2011100604;
|
||||
$module->requires = 2011060313;
|
||||
$module->cron = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue