From e275af31748c2fda0a389b501fc91d5c22628957 Mon Sep 17 00:00:00 2001 From: Davo Smith Date: Thu, 4 Apr 2024 16:10:58 +0100 Subject: [PATCH] Minor M4.4 compatibility fixes --- .github/workflows/moodle-ci.yml | 4 +- README.txt | 1 + .../moodle2/backup_realtimequiz_stepslib.php | 40 +++--- ...store_realtimequiz_activity_task.class.php | 12 +- .../moodle2/restore_realtimequiz_stepslib.php | 2 +- classes/event/edit_page_viewed.php | 6 +- classes/event/responses_viewed.php | 6 +- classes/privacy/provider.php | 20 +-- db/access.php | 54 ++++---- db/upgrade.php | 12 +- edit.php | 54 ++++---- editquestion.php | 42 +++--- editquestion_form.php | 21 +-- index.php | 28 ++-- lib.php | 40 +++--- locallib.php | 72 +++++----- mod_form.php | 2 +- quizdata.php | 15 +- responses.php | 74 +++++----- tests/behat/attemptquiz.feature | 16 +-- .../behat/attemptquiz_number_students.feature | 7 +- tests/behat/editquestions.feature | 18 +-- tests/generator/lib.php | 4 +- tests/privacy_provider_test.php | 10 +- version.php | 4 +- view.php | 20 +-- view_student.js | 128 +++++++++--------- view_teacher.js | 16 +-- 28 files changed, 369 insertions(+), 359 deletions(-) diff --git a/.github/workflows/moodle-ci.yml b/.github/workflows/moodle-ci.yml index f405ad8..05c3a11 100644 --- a/.github/workflows/moodle-ci.yml +++ b/.github/workflows/moodle-ci.yml @@ -31,7 +31,7 @@ jobs: matrix: include: - php: '8.2' - moodle-branch: 'master' + moodle-branch: 'main' database: 'pgsql' - php: '8.2' moodle-branch: 'MOODLE_403_STABLE' @@ -71,7 +71,7 @@ jobs: - name: Initialise moodle-plugin-ci run: | - composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^4 + composer create-project -n --no-dev --prefer-dist moodlehq/moodle-plugin-ci ci ^3 echo $(cd ci/bin; pwd) >> $GITHUB_PATH echo $(cd ci/vendor/bin; pwd) >> $GITHUB_PATH sudo locale-gen en_AU.UTF-8 diff --git a/README.txt b/README.txt index e5f3c47..fa6ac53 100644 --- a/README.txt +++ b/README.txt @@ -13,6 +13,7 @@ The teacher can, at a later date, go back through the results and, for each ques Changes: -------- +2024-04-04 - 3.4.4.1 - Minor M4.4 compatibility fixes 2023-10-02 - 3.4.4.0 - update GitHub actions ready for 4.3 release 2023-04-14 - 3.4.3.0 - Minor M4.2 compatibility fixes (remove legacy log functions in events) 2022-11-19 - 3.4.2.0 - Minor M4.1 compatibility fixes, fix layout in M4.0+ diff --git a/backup/moodle2/backup_realtimequiz_stepslib.php b/backup/moodle2/backup_realtimequiz_stepslib.php index 095ebc8..306b6ed 100644 --- a/backup/moodle2/backup_realtimequiz_stepslib.php +++ b/backup/moodle2/backup_realtimequiz_stepslib.php @@ -44,29 +44,29 @@ protected function define_structure() { // Define each element separated. - $realtimequiz = new backup_nested_element('realtimequiz', array('id'), array( - 'name', 'intro', 'introformat', 'timecreated', 'timemodified', 'questiontime' - )); + $realtimequiz = new backup_nested_element('realtimequiz', ['id'], [ + 'name', 'intro', 'introformat', 'timecreated', 'timemodified', 'questiontime', + ]); $sessions = new backup_nested_element('sessions'); - $session = new backup_nested_element('session', array('id'), array( - 'name', 'timestamp' - )); + $session = new backup_nested_element('session', ['id'], [ + 'name', 'timestamp', + ]); $questions = new backup_nested_element('questions'); - $question = new backup_nested_element('question', array('id'), array( - 'questionnum', 'questiontext', 'questiontextformat', 'questiontime' - )); + $question = new backup_nested_element('question', ['id'], [ + 'questionnum', 'questiontext', 'questiontextformat', 'questiontime', + ]); $answers = new backup_nested_element('answers'); - $answer = new backup_nested_element('answer', array('id'), array( - 'answertext', 'correct' - )); + $answer = new backup_nested_element('answer', ['id'], [ + 'answertext', 'correct', + ]); $submissions = new backup_nested_element('submissions'); - $submission = new backup_nested_element('submission', array('id'), array( - 'sessionid', 'userid', 'answerid' - )); + $submission = new backup_nested_element('submission', ['id'], [ + 'sessionid', 'userid', 'answerid', + ]); // Build the tree. if ($userinfo) { @@ -88,13 +88,13 @@ protected function define_structure() { // Define sources. - $realtimequiz->set_source_table('realtimequiz', array('id' => backup::VAR_ACTIVITYID)); - $question->set_source_table('realtimequiz_question', array('quizid' => backup::VAR_PARENTID)); - $answer->set_source_table('realtimequiz_answer', array('questionid' => backup::VAR_PARENTID)); + $realtimequiz->set_source_table('realtimequiz', ['id' => backup::VAR_ACTIVITYID]); + $question->set_source_table('realtimequiz_question', ['quizid' => backup::VAR_PARENTID]); + $answer->set_source_table('realtimequiz_answer', ['questionid' => backup::VAR_PARENTID]); if ($userinfo) { - $session->set_source_table('realtimequiz_session', array('quizid' => backup::VAR_PARENTID)); - $submission->set_source_table('realtimequiz_submitted', array('questionid' => backup::VAR_PARENTID)); + $session->set_source_table('realtimequiz_session', ['quizid' => backup::VAR_PARENTID]); + $submission->set_source_table('realtimequiz_submitted', ['questionid' => backup::VAR_PARENTID]); } // Define id annotations. diff --git a/backup/moodle2/restore_realtimequiz_activity_task.class.php b/backup/moodle2/restore_realtimequiz_activity_task.class.php index 44cb4e3..bd20eb0 100644 --- a/backup/moodle2/restore_realtimequiz_activity_task.class.php +++ b/backup/moodle2/restore_realtimequiz_activity_task.class.php @@ -51,10 +51,10 @@ protected function define_my_steps() { * processed by the link decoder */ public static function define_decode_contents() { - $contents = array(); + $contents = []; - $contents[] = new restore_decode_content('realtimequiz', array('intro')); - $contents[] = new restore_decode_content('realtimequiz_question', array('questiontext')); + $contents[] = new restore_decode_content('realtimequiz', ['intro']); + $contents[] = new restore_decode_content('realtimequiz_question', ['questiontext']); return $contents; } @@ -64,7 +64,7 @@ public static function define_decode_contents() { * to the activity to be executed by the link decoder */ public static function define_decode_rules() { - $rules = array(); + $rules = []; // List of realtimequizs in course. $rules[] = new restore_decode_rule('REALTIMEQUIZINDEX', '/mod/realtimequiz/index.php?id=$1', 'course'); @@ -82,7 +82,7 @@ public static function define_decode_rules() { * @return restore_log_rule[] */ public static function define_restore_log_rules() { - $rules = array(); + $rules = []; return $rules; } @@ -99,7 +99,7 @@ public static function define_restore_log_rules() { * @return restore_log_rule[] */ public static function define_restore_log_rules_for_course() { - $rules = array(); + $rules = []; return $rules; } diff --git a/backup/moodle2/restore_realtimequiz_stepslib.php b/backup/moodle2/restore_realtimequiz_stepslib.php index 097abc6..85c9592 100644 --- a/backup/moodle2/restore_realtimequiz_stepslib.php +++ b/backup/moodle2/restore_realtimequiz_stepslib.php @@ -38,7 +38,7 @@ class restore_realtimequiz_activity_structure_step extends restore_activity_stru */ protected function define_structure() { - $paths = array(); + $paths = []; $userinfo = $this->get_setting_value('userinfo'); $paths[] = new restore_path_element('realtimequiz', '/activity/realtimequiz'); diff --git a/classes/event/edit_page_viewed.php b/classes/event/edit_page_viewed.php index c4d4360..0756904 100644 --- a/classes/event/edit_page_viewed.php +++ b/classes/event/edit_page_viewed.php @@ -63,7 +63,7 @@ public static function get_name() { * @return string */ public function get_description() { - return "The user with id '$this->userid' viewed the edit page for the realtime quiz with " . + return "The user with id '$this->userid' viewed the edit page for the realtime quiz with ". "course module id '$this->contextinstanceid'."; } @@ -73,14 +73,14 @@ public function get_description() { * @return \moodle_url */ public function get_url() { - return new \moodle_url('/mod/realtimequiz/edit.php', array('id' => $this->contextinstanceid)); + return new \moodle_url('/mod/realtimequiz/edit.php', ['id' => $this->contextinstanceid]); } /** * Custom validation. * - * @throws \coding_exception * @return void + * @throws \coding_exception */ protected function validate_data() { parent::validate_data(); diff --git a/classes/event/responses_viewed.php b/classes/event/responses_viewed.php index e8a730c..9498007 100644 --- a/classes/event/responses_viewed.php +++ b/classes/event/responses_viewed.php @@ -65,7 +65,7 @@ public static function get_name() { * @return string */ public function get_description() { - return "The user with id '$this->userid' viewed the responses for the realtime quiz with " . + return "The user with id '$this->userid' viewed the responses for the realtime quiz with ". "course module id '$this->contextinstanceid'."; } @@ -75,14 +75,14 @@ public function get_description() { * @return \moodle_url */ public function get_url() { - return new \moodle_url('/mod/realtimequiz/responses.php', array('id' => $this->contextinstanceid)); + return new \moodle_url('/mod/realtimequiz/responses.php', ['id' => $this->contextinstanceid]); } /** * Custom validation. * - * @throws \coding_exception * @return void + * @throws \coding_exception */ protected function validate_data() { parent::validate_data(); diff --git a/classes/privacy/provider.php b/classes/privacy/provider.php index ff2ae59..11e738a 100644 --- a/classes/privacy/provider.php +++ b/classes/privacy/provider.php @@ -38,15 +38,15 @@ * @package mod_realtimequiz */ class provider implements \core_privacy\local\metadata\provider, - \core_privacy\local\request\plugin\provider, - \core_privacy\local\request\core_userlist_provider { + \core_privacy\local\request\plugin\provider, + \core_privacy\local\request\core_userlist_provider { /** * Get details of user data stored by this plugin * @param collection $collection * @return collection */ - public static function get_metadata(collection $collection) : collection { + public static function get_metadata(collection $collection): collection { $collection->add_database_table( 'realtimequiz_submitted', [ @@ -82,7 +82,7 @@ private static function get_modid() { * @return contextlist * @throws \dml_exception */ - public static function get_contexts_for_userid(int $userid) : contextlist { + public static function get_contexts_for_userid(int $userid): contextlist { $contextlist = new contextlist(); $modid = self::get_modid(); if (!$modid) { @@ -125,7 +125,7 @@ public static function export_user_data(approved_contextlist $contextlist) { } $user = $contextlist->get_user(); - list($contextsql, $contextparams) = $DB->get_in_or_equal($contextlist->get_contextids(), SQL_PARAMS_NAMED); + [$contextsql, $contextparams] = $DB->get_in_or_equal($contextlist->get_contextids(), SQL_PARAMS_NAMED); $sql = "SELECT cm.id AS cmid, sess.name AS sessionname, @@ -239,7 +239,7 @@ public static function delete_data_for_user(approved_contextlist $contextlist) { } $questionids = $DB->get_fieldset_select('realtimequiz_question', 'id', 'quizid = ?', [$cm->instance]); if ($questionids) { - list($qsql, $params) = $DB->get_in_or_equal($questionids, SQL_PARAMS_NAMED); + [$qsql, $params] = $DB->get_in_or_equal($questionids, SQL_PARAMS_NAMED); $params['userid'] = $userid; $DB->delete_records_select('realtimequiz_submitted', "questionid $qsql AND userid = :userid", $params); } @@ -249,7 +249,7 @@ public static function delete_data_for_user(approved_contextlist $contextlist) { /** * Get the list of users who have data within a context. * - * @param userlist $userlist The userlist containing the list of users who have data in this context/plugin combination. + * @param userlist $userlist The userlist containing the list of users who have data in this context/plugin combination. */ public static function get_users_in_context(userlist $userlist) { $context = $userlist->get_context(); @@ -263,7 +263,7 @@ public static function get_users_in_context(userlist $userlist) { $params = [ 'modid' => $modid, 'contextlevel' => CONTEXT_MODULE, - 'contextid' => $context->id, + 'contextid' => $context->id, ]; // Quiz responses. @@ -283,7 +283,7 @@ public static function get_users_in_context(userlist $userlist) { /** * Delete multiple users within a single context. * - * @param approved_userlist $userlist The approved context and user information to delete information for. + * @param approved_userlist $userlist The approved context and user information to delete information for. */ public static function delete_data_for_users(approved_userlist $userlist) { global $DB; @@ -298,7 +298,7 @@ public static function delete_data_for_users(approved_userlist $userlist) { // Prepare SQL to gather all completed IDs. $userids = $userlist->get_userids(); - list($insql, $inparams) = $DB->get_in_or_equal($userids, SQL_PARAMS_NAMED); + [$insql, $inparams] = $DB->get_in_or_equal($userids, SQL_PARAMS_NAMED); // Delete quiz responses. $DB->delete_records_select( diff --git a/db/access.php b/db/access.php index 966048f..453a52e 100644 --- a/db/access.php +++ b/db/access.php @@ -24,66 +24,66 @@ defined('MOODLE_INTERNAL') || die(); -$capabilities = array( +$capabilities = [ // Can start a quiz and move on to the next question // NB: must have 'attempt' as well to be able to see the questions. - 'mod/realtimequiz:control' => array( + 'mod/realtimequiz:control' => [ 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, - 'legacy' => array( + 'legacy' => [ 'teacher' => CAP_ALLOW, 'editingteacher' => CAP_ALLOW, - 'manager' => CAP_ALLOW - ) - ), + 'manager' => CAP_ALLOW, + ], + ], // Can try to answer the quiz. - 'mod/realtimequiz:attempt' => array( + 'mod/realtimequiz:attempt' => [ 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, - 'legacy' => array( + 'legacy' => [ 'student' => CAP_ALLOW, 'teacher' => CAP_ALLOW, 'editingteacher' => CAP_ALLOW, - 'manager' => CAP_ALLOW - ) - ), + 'manager' => CAP_ALLOW, + ], + ], // Can see who gave what answer. - 'mod/realtimequiz:seeresponses' => array( + 'mod/realtimequiz:seeresponses' => [ 'captype' => 'read', 'contextlevel' => CONTEXT_MODULE, - 'legacy' => array( + 'legacy' => [ 'teacher' => CAP_ALLOW, 'editingteacher' => CAP_ALLOW, - 'manager' => CAP_ALLOW - ) - ), + 'manager' => CAP_ALLOW, + ], + ], // Can add / delete / update questions. - 'mod/realtimequiz:editquestions' => array( + 'mod/realtimequiz:editquestions' => [ 'captype' => 'write', 'contextlevel' => CONTEXT_MODULE, - 'legacy' => array( + 'legacy' => [ 'editingteacher' => CAP_ALLOW, - 'manager' => CAP_ALLOW - ) - ), + 'manager' => CAP_ALLOW, + ], + ], // Can add an instance of this module to a course. - 'mod/realtimequiz:addinstance' => array( + 'mod/realtimequiz:addinstance' => [ 'captype' => 'write', 'contextlevel' => CONTEXT_COURSE, - 'legacy' => array( + 'legacy' => [ 'editingteacher' => CAP_ALLOW, 'coursecreator' => CAP_ALLOW, - 'manager' => CAP_ALLOW - ) - ) -); + 'manager' => CAP_ALLOW, + ], + ], +]; diff --git a/db/upgrade.php b/db/upgrade.php index d3d6776..bed11ae 100644 --- a/db/upgrade.php +++ b/db/upgrade.php @@ -46,17 +46,20 @@ function xmldb_realtimequiz_upgrade($oldversion) { $dbman->add_field($table, $field); } - $field = new xmldb_field('introformat', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, FORMAT_HTML, 'intro'); + $field = new xmldb_field('introformat', XMLDB_TYPE_INTEGER, '4', null, XMLDB_NOTNULL, null, FORMAT_HTML, + 'intro'); if (!$dbman->field_exists($table, $field)) { $dbman->add_field($table, $field); } - $field = new xmldb_field('timecreated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0', 'introformat'); + $field = new xmldb_field('timecreated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0', + 'introformat'); if (!$dbman->field_exists($table, $field)) { $dbman->add_field($table, $field); } - $field = new xmldb_field('timemodified', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0', 'timecreated'); + $field = new xmldb_field('timemodified', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, '0', + 'timecreated'); if (!$dbman->field_exists($table, $field)) { $dbman->add_field($table, $field); } @@ -68,7 +71,8 @@ function xmldb_realtimequiz_upgrade($oldversion) { // Define field questiontextformat to be added to realtimequiz_question. $table = new xmldb_table('realtimequiz_question'); - $field = new xmldb_field('questiontextformat', XMLDB_TYPE_INTEGER, FORMAT_PLAIN, null, null, null, '1', 'questiontext'); + $field = new xmldb_field('questiontextformat', XMLDB_TYPE_INTEGER, FORMAT_PLAIN, null, null, null, '1', + 'questiontext'); // Conditionally launch add field questiontextformat. if (!$dbman->field_exists($table, $field)) { diff --git a/edit.php b/edit.php index 827605a..7546adc 100644 --- a/edit.php +++ b/edit.php @@ -39,16 +39,16 @@ if ($id) { $cm = get_coursemodule_from_id('realtimequiz', $id, 0, false, MUST_EXIST); - $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); - $quiz = $DB->get_record('realtimequiz', array('id' => $cm->instance), '*', MUST_EXIST); + $course = $DB->get_record('course', ['id' => $cm->course], '*', MUST_EXIST); + $quiz = $DB->get_record('realtimequiz', ['id' => $cm->instance], '*', MUST_EXIST); $quizid = $quiz->id; } else { - $quiz = $DB->get_record('realtimequiz', array('id' => $quizid), '*', MUST_EXIST); - $course = $DB->get_record('course', array('id' => $quiz->course), '*', MUST_EXIST); + $quiz = $DB->get_record('realtimequiz', ['id' => $quizid], '*', MUST_EXIST); + $course = $DB->get_record('course', ['id' => $quiz->course], '*', MUST_EXIST); $cm = get_coursemodule_from_instance('realtimequiz', $quiz->id, $course->id, false, MUST_EXIST); } -$PAGE->set_url(new moodle_url('/mod/realtimequiz/edit.php', array('id' => $cm->id))); +$PAGE->set_url(new moodle_url('/mod/realtimequiz/edit.php', ['id' => $cm->id])); require_login($course->id, false, $cm); @@ -62,13 +62,13 @@ // Log this visit. if ($CFG->version > 2014051200) { // Moodle 2.7+. - $params = array( + $params = [ 'courseid' => $course->id, 'context' => $context, - 'other' => array( - 'quizid' => $quiz->id - ) - ); + 'other' => [ + 'quizid' => $quiz->id, + ], + ]; $event = \mod_realtimequiz\event\edit_page_viewed::create($params); $event->trigger(); } else { @@ -89,7 +89,7 @@ function realtimequiz_list_questions($quizid, $cm) { echo '

'.get_string('questionslist', 'realtimequiz').'

'; - $questions = $DB->get_records('realtimequiz_question', array('quizid' => $quizid), 'questionnum'); + $questions = $DB->get_records('realtimequiz_question', ['quizid' => $quizid], 'questionnum'); $questioncount = count($questions); $expectednumber = 1; echo '
    '; @@ -100,7 +100,8 @@ function realtimequiz_list_questions($quizid, $cm) { $DB->update_record('realtimequiz_question', $question); } - $editurl = new moodle_url('/mod/realtimequiz/editquestion.php', array('quizid' => $quizid, 'questionid' => $question->id)); + $editurl = new moodle_url('/mod/realtimequiz/editquestion.php', + ['quizid' => $quizid, 'questionid' => $question->id]); $qtext = format_string($question->questiontext); echo "
  1. "; echo html_writer::link($editurl, $qtext); @@ -130,7 +131,7 @@ function realtimequiz_list_questions($quizid, $cm) { $expectednumber++; } echo '
'; - $url = new moodle_url('/mod/realtimequiz/editquestion.php', array('quizid' => $quizid)); + $url = new moodle_url('/mod/realtimequiz/editquestion.php', ['quizid' => $quizid]); echo $OUTPUT->single_button($url, get_string('addquestion', 'realtimequiz'), 'GET'); } @@ -146,7 +147,7 @@ function realtimequiz_list_questions($quizid, $cm) { function realtimequiz_confirm_deletequestion($quizid, $questionid, $context) { global $DB; - $question = $DB->get_record('realtimequiz_question', array('id' => $questionid, 'quizid' => $quizid), '*', MUST_EXIST); + $question = $DB->get_record('realtimequiz_question', ['id' => $questionid, 'quizid' => $quizid], '*', MUST_EXIST); echo '

'.get_string('deletequestion', 'realtimequiz').'

'; echo '

'.get_string('checkdelete', 'realtimequiz').'

'; @@ -156,7 +157,7 @@ function realtimequiz_confirm_deletequestion($quizid, $questionid, $context) { echo $questiontext; echo '

'; - $url = new moodle_url('/mod/realtimequiz/edit.php', array('quizid' => $quizid)); + $url = new moodle_url('/mod/realtimequiz/edit.php', ['quizid' => $quizid]); echo '
'; echo ''; echo ''; @@ -196,16 +197,16 @@ function realtimequiz_confirm_deletequestion($quizid, $questionid, $context) { require_sesskey(); if (optional_param('yes', false, PARAM_BOOL)) { - if ($question = $DB->get_record('realtimequiz_question', array('id' => $questionid, 'quizid' => $quiz->id))) { - $answers = $DB->get_records('realtimequiz_answer', array('questionid' => $question->id)); + if ($question = $DB->get_record('realtimequiz_question', ['id' => $questionid, 'quizid' => $quiz->id])) { + $answers = $DB->get_records('realtimequiz_answer', ['questionid' => $question->id]); if (!empty($answers)) { foreach ($answers as $answer) { // Get each answer for that question. // Delete any submissions for that answer. - $DB->delete_records('realtimequiz_submitted', array('answerid' => $answer->id)); + $DB->delete_records('realtimequiz_submitted', ['answerid' => $answer->id]); } } - $DB->delete_records('realtimequiz_answer', array('questionid' => $question->id)); // Delete each answer. - $DB->delete_records('realtimequiz_question', array('id' => $question->id)); + $DB->delete_records('realtimequiz_answer', ['questionid' => $question->id]); // Delete each answer. + $DB->delete_records('realtimequiz_question', ['id' => $question->id]); // Delete files embedded in the heading. $fs = get_file_storage(); @@ -218,13 +219,13 @@ function realtimequiz_confirm_deletequestion($quizid, $questionid, $context) { } else if ($action == 'moveup') { - $thisquestion = $DB->get_record('realtimequiz_question', array('id' => $questionid)); + $thisquestion = $DB->get_record('realtimequiz_question', ['id' => $questionid]); if ($thisquestion) { $questionnum = $thisquestion->questionnum; if ($questionnum > 1) { - $swapquestion = $DB->get_record('realtimequiz_question', array( - 'quizid' => $quizid, 'questionnum' => ($questionnum - 1) - )); + $swapquestion = $DB->get_record('realtimequiz_question', [ + 'quizid' => $quizid, 'questionnum' => ($questionnum - 1), + ]); if ($swapquestion) { $upd = new stdClass; $upd->id = $thisquestion->id; @@ -242,10 +243,11 @@ function realtimequiz_confirm_deletequestion($quizid, $questionid, $context) { $action = 'listquestions'; } else if ($action == 'movedown') { - $thisquestion = $DB->get_record('realtimequiz_question', array('id' => $questionid)); + $thisquestion = $DB->get_record('realtimequiz_question', ['id' => $questionid]); if ($thisquestion) { $questionnum = $thisquestion->questionnum; - $swapquestion = $DB->get_record('realtimequiz_question', array('quizid' => $quizid, 'questionnum' => ($questionnum + 1))); + $swapquestion = $DB->get_record('realtimequiz_question', + ['quizid' => $quizid, 'questionnum' => ($questionnum + 1)]); if ($swapquestion) { $upd = new stdClass; $upd->id = $thisquestion->id; diff --git a/editquestion.php b/editquestion.php index 6f04f1e..de50e6b 100644 --- a/editquestion.php +++ b/editquestion.php @@ -34,11 +34,11 @@ $numanswers += 3; } -$quiz = $DB->get_record('realtimequiz', array('id' => $quizid), '*', MUST_EXIST); +$quiz = $DB->get_record('realtimequiz', ['id' => $quizid], '*', MUST_EXIST); $cm = get_coursemodule_from_instance('realtimequiz', $quiz->id, 0, false, MUST_EXIST); -$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); +$course = $DB->get_record('course', ['id' => $cm->course], '*', MUST_EXIST); -$url = new moodle_url('/mod/realtimequiz/editquestion.php', array('quizid' => $quizid)); +$url = new moodle_url('/mod/realtimequiz/editquestion.php', ['quizid' => $quizid]); if ($questionid) { $url->param('questionid', $questionid); } @@ -50,12 +50,12 @@ require_capability('mod/realtimequiz:editquestions', $context); if ($questionid) { - $question = $DB->get_record('realtimequiz_question', array('id' => $questionid, 'quizid' => $quizid), '*', MUST_EXIST); + $question = $DB->get_record('realtimequiz_question', ['id' => $questionid, 'quizid' => $quizid], '*', MUST_EXIST); $question->questionid = $question->id; - $question->answers = $DB->get_records('realtimequiz_answer', array('questionid' => $question->id), 'id'); + $question->answers = $DB->get_records('realtimequiz_answer', ['questionid' => $question->id], 'id'); $question->answercorrect = 0; - $question->answertext = array(); - $question->answerid = array(); + $question->answertext = []; + $question->answerid = []; $i = 1; foreach ($question->answers as $answer) { if ($answer->correct) { @@ -70,43 +70,43 @@ $question = new stdClass(); $question->id = 0; $question->quizid = $quiz->id; - $question->questionnum = $DB->count_records('realtimequiz_question', array('quizid' => $quiz->id)) + 1; + $question->questionnum = $DB->count_records('realtimequiz_question', ['quizid' => $quiz->id]) + 1; $question->questiontext = ''; $question->questiontextformat = FORMAT_HTML; $question->questiontime = 0; - $question->answers = array(); + $question->answers = []; $question->answercorrect = 1; $heading = get_string('addingquestion', 'mod_realtimequiz'); } $maxbytes = get_max_upload_file_size($CFG->maxbytes, $course->maxbytes); -$editoroptions = array( +$editoroptions = [ 'subdirs' => false, 'maxbytes' => $maxbytes, 'maxfiles' => -1, 'changeformat' => 0, 'context' => $context, 'noclean' => 0, - 'trusttext' => true -); + 'trusttext' => true, +]; $numanswers = max(count($question->answers), $numanswers); -$form = new realtimequiz_editquestion_form(null, array('editoroptions' => $editoroptions, 'numanswers' => $numanswers)); +$form = new realtimequiz_editquestion_form(null, ['editoroptions' => $editoroptions, 'numanswers' => $numanswers]); $question = file_prepare_standard_editor($question, 'questiontext', $editoroptions, $context, 'mod_realtimequiz', 'question', $question->id); $form->set_data($question); -$return = new moodle_url('/mod/realtimequiz/edit.php', array('quizid' => $quiz->id)); +$return = new moodle_url('/mod/realtimequiz/edit.php', ['quizid' => $quiz->id]); if ($form->is_cancelled()) { redirect($return); } if ($data = $form->get_data()) { if (isset($data->save) || isset($data->saveadd)) { - $updquestion = (object)array( + $updquestion = (object)[ 'quizid' => $quizid, 'questionnum' => $question->questionnum, 'questiontext' => 'toupdate', 'questiontextformat' => FORMAT_HTML, 'questiontime' => $data->questiontime, - ); + ]; if (!empty($question->id)) { $updquestion->id = $question->id; @@ -134,7 +134,7 @@ $changed = $changed || $updanswer->correct != $oldanswer->correct; if ($changed) { if ($updanswer->answertext === "") { - $DB->delete_records('realtimequiz_answer', array('id' => $updanswer->id)); + $DB->delete_records('realtimequiz_answer', ['id' => $updanswer->id]); } else { $DB->update_record('realtimequiz_answer', $updanswer); } @@ -146,18 +146,18 @@ } if (isset($data->saveadd)) { - redirect(new moodle_url('/mod/realtimequiz/editquestion.php', array('quizid' => $quizid))); + redirect(new moodle_url('/mod/realtimequiz/editquestion.php', ['quizid' => $quizid])); } redirect($return); } } -$jsmodule = array( +$jsmodule = [ 'name' => 'mod_realtimequiz', 'fullpath' => new moodle_url('/mod/realtimequiz/editquestions.js'), -); -$PAGE->requires->js_init_call('M.mod_realtimequiz.init_editpage', array(), false, $jsmodule); +]; +$PAGE->requires->js_init_call('M.mod_realtimequiz.init_editpage', [], false, $jsmodule); $PAGE->set_heading($heading.$question->questionnum); $PAGE->set_title(get_string('pluginname', 'mod_realtimequiz')); diff --git a/editquestion_form.php b/editquestion_form.php index adffb91..709ad31 100644 --- a/editquestion_form.php +++ b/editquestion_form.php @@ -49,7 +49,8 @@ protected function definition() { $mform->addElement('header', 'general', get_string('general', 'form')); - $mform->addElement('editor', 'questiontext_editor', get_string('questiontext', 'mod_realtimequiz'), null, $editoroptions); + $mform->addElement('editor', 'questiontext_editor', get_string('questiontext', 'mod_realtimequiz'), null, + $editoroptions); $mform->addRule('questiontext_editor', null, 'required', null, 'client'); $mform->addElement('text', 'questiontime', get_string('editquestiontime', 'mod_realtimequiz'), 0); @@ -57,25 +58,25 @@ protected function definition() { // Answers. for ($i = 1; $i <= $numanswers; $i++) { - $ansgroup = array( + $ansgroup = [ $mform->createElement('radio', 'answercorrect', '', '', $i, - array('class' => 'realtimequiz_answerradio')), - $mform->createElement('text', "answertext[$i]", '', array('size' => 30)), - ); - $mform->addGroup($ansgroup, 'answer', get_string('answer', 'realtimequiz').$i, array(' '), false); + ['class' => 'realtimequiz_answerradio']), + $mform->createElement('text', "answertext[$i]", '', ['size' => 30]), + ]; + $mform->addGroup($ansgroup, 'answer', get_string('answer', 'realtimequiz').$i, [' '], false); $mform->setType("answertext[$i]", PARAM_RAW); } $mform->addElement('radio', 'answercorrect', get_string('nocorrect', 'realtimequiz'), '', 0, - array('class' => 'realtimequiz_answerradio')); + ['class' => 'realtimequiz_answerradio']); $mform->addElement('submit', 'addanswers', get_string('addanswers', 'realtimequiz')); // Action buttons. - $actiongrp = array( + $actiongrp = [ $mform->createElement('submit', 'save', get_string('updatequestion', 'realtimequiz')), $mform->createElement('submit', 'saveadd', get_string('saveadd', 'realtimequiz')), $mform->createElement('cancel'), - ); - $mform->addGroup($actiongrp, 'buttonar', '', array(' '), false); + ]; + $mform->addGroup($actiongrp, 'buttonar', '', [' '], false); $mform->closeHeaderBefore('buttonar'); } diff --git a/index.php b/index.php index 6368d5f..2692bc6 100644 --- a/index.php +++ b/index.php @@ -28,16 +28,16 @@ $id = required_param('id', PARAM_INT); // Course. -$course = $DB->get_record('course', array('id' => $id), '*', MUST_EXIST); +$course = $DB->get_record('course', ['id' => $id], '*', MUST_EXIST); -$PAGE->set_url(new moodle_url('/mod/realtimequiz/index.php', array('id' => $course->id))); +$PAGE->set_url(new moodle_url('/mod/realtimequiz/index.php', ['id' => $course->id])); require_course_login($course); $PAGE->set_pagelayout('incourse'); if ($CFG->version > 2014051200) { // Moodle 2.7+. - $params = array( - 'context' => context_course::instance($course->id) - ); + $params = [ + 'context' => context_course::instance($course->id), + ]; $event = \mod_realtimequiz\event\course_module_instance_list_viewed::create($params); $event->add_record_snapshot('course', $course); $event->trigger(); @@ -71,18 +71,18 @@ $table = new html_table(); if ($course->format === "weeks") { - $table->head = array($strweek, $strname); - $table->align = array("center", "left"); + $table->head = [$strweek, $strname]; + $table->align = ["center", "left"]; } else if ($course->format === "topics") { - $table->head = array($strtopic, $strname); - $table->align = array("center", "left"); + $table->head = [$strtopic, $strname]; + $table->align = ["center", "left"]; } else { - $table->head = array($strname); - $table->align = array("left", "left"); + $table->head = [$strname]; + $table->align = ["left", "left"]; } foreach ($realtimequizs as $realtimequiz) { - $url = new moodle_url('/mod/realtimequiz/view.php', array('id' => $realtimequiz->coursemodule)); + $url = new moodle_url('/mod/realtimequiz/view.php', ['id' => $realtimequiz->coursemodule]); if (!$realtimequiz->visible) { // Show dimmed if the mod is hidden. $link = ''.$realtimequiz->name.''; @@ -92,9 +92,9 @@ } if ($course->format === 'weeks' || $course->format === 'topics') { - $table->data[] = array($realtimequiz->section, $link); + $table->data[] = [$realtimequiz->section, $link]; } else { - $table->data[] = array($link); + $table->data[] = [$link]; } } diff --git a/lib.php b/lib.php index 63d86c5..5d38ed7 100644 --- a/lib.php +++ b/lib.php @@ -82,24 +82,24 @@ function realtimequiz_update_instance($realtimequiz) { function realtimequiz_delete_instance($id) { global $DB; - if (!$realtimequiz = $DB->get_record('realtimequiz', array('id' => $id))) { + if (!$realtimequiz = $DB->get_record('realtimequiz', ['id' => $id])) { return false; } $result = true; - $questions = $DB->get_records('realtimequiz_question', array('quizid' => $id)); + $questions = $DB->get_records('realtimequiz_question', ['quizid' => $id]); foreach ($questions as $question) { // Get each question. - $answers = $DB->get_records('realtimequiz_answer', array('questionid' => $question->id)); + $answers = $DB->get_records('realtimequiz_answer', ['questionid' => $question->id]); foreach ($answers as $answer) { // Get each answer for that question // Delete each submission for that answer. - $DB->delete_records('realtimequiz_submitted', array('answerid' => $answer->id)); + $DB->delete_records('realtimequiz_submitted', ['answerid' => $answer->id]); } - $DB->delete_records('realtimequiz_answer', array('questionid' => $question->id)); // Delete each answer. + $DB->delete_records('realtimequiz_answer', ['questionid' => $question->id]); // Delete each answer. } - $DB->delete_records('realtimequiz_question', array('quizid' => $id)); // Delete each question. - $DB->delete_records('realtimequiz_session', array('quizid' => $id)); // Delete each session. - $DB->delete_records('realtimequiz', array('id' => $realtimequiz->id)); + $DB->delete_records('realtimequiz_question', ['quizid' => $id]); // Delete each question. + $DB->delete_records('realtimequiz_session', ['quizid' => $id]); // Delete each session. + $DB->delete_records('realtimequiz', ['id' => $realtimequiz->id]); return $result; } @@ -227,21 +227,21 @@ function realtimequiz_scale_used_anywhere($scaleid) { * @throws moodle_exception */ function realtimequiz_view_tabs($currenttab, $cmid, $context) { - $tabs = array(); - $row = array(); - $inactive = array(); - $activated = array(); + $tabs = []; + $row = []; + $inactive = []; + $activated = []; if (has_capability('mod/realtimequiz:attempt', $context)) { - $row[] = new tabobject('view', new moodle_url('/mod/realtimequiz/view.php', array('id' => $cmid)), + $row[] = new tabobject('view', new moodle_url('/mod/realtimequiz/view.php', ['id' => $cmid]), get_string('view', 'realtimequiz')); } if (has_capability('mod/realtimequiz:editquestions', $context)) { - $row[] = new tabobject('edit', new moodle_url('/mod/realtimequiz/edit.php', array('id' => $cmid)), + $row[] = new tabobject('edit', new moodle_url('/mod/realtimequiz/edit.php', ['id' => $cmid]), get_string('edit', 'realtimequiz')); } if (has_capability('mod/realtimequiz:seeresponses', $context)) { - $row[] = new tabobject('responses', new moodle_url('/mod/realtimequiz/responses.php', array('id' => $cmid)), + $row[] = new tabobject('responses', new moodle_url('/mod/realtimequiz/responses.php', ['id' => $cmid]), get_string('responses', 'realtimequiz')); } @@ -280,7 +280,7 @@ function realtimequiz_view_tabs($currenttab, $cmid, $context) { * @throws coding_exception * @throws dml_exception */ -function realtimequiz_pluginfile($course, $cm, $context, $filearea, $args, $forcedownload, array $options = array()) { +function realtimequiz_pluginfile($course, $cm, $context, $filearea, $args, $forcedownload, array $options = []) { global $DB; if ($context->contextlevel != CONTEXT_MODULE) { @@ -295,11 +295,11 @@ function realtimequiz_pluginfile($course, $cm, $context, $filearea, $args, $forc $questionid = (int)array_shift($args); - if (!$quiz = $DB->get_record('realtimequiz', array('id' => $cm->instance))) { + if (!$quiz = $DB->get_record('realtimequiz', ['id' => $cm->instance])) { return false; } - if (!$question = $DB->get_record('realtimequiz_question', array('id' => $questionid, 'quizid' => $cm->instance))) { + if (!$question = $DB->get_record('realtimequiz_question', ['id' => $questionid, 'quizid' => $cm->instance])) { return false; } @@ -371,12 +371,12 @@ function realtimequiz_extend_settings_navigation(settings_navigation $settings, $cm = $settings->get_page()->cm; if (has_capability('mod/realtimequiz:editquestions', $cm->context)) { $checklistnode->add(get_string('edit', 'mod_realtimequiz'), - new moodle_url('/mod/realtimequiz/edit.php', array('id' => $cm->id)), + new moodle_url('/mod/realtimequiz/edit.php', ['id' => $cm->id]), navigation_node::TYPE_SETTING, null, 'edit'); } if (has_capability('mod/realtimequiz:seeresponses', $cm->context)) { $checklistnode->add(get_string('responses', 'mod_realtimequiz'), - new moodle_url('/mod/realtimequiz/responses.php', array('id' => $cm->id)), + new moodle_url('/mod/realtimequiz/responses.php', ['id' => $cm->id]), navigation_node::TYPE_SETTING, null, 'responses'); } } diff --git a/locallib.php b/locallib.php index 77cd8b9..15c3033 100644 --- a/locallib.php +++ b/locallib.php @@ -69,20 +69,21 @@ function realtimequiz_send_error($msg) { function realtimequiz_send_question($quizid, $context, $preview = false) { global $DB; - if (!$quiz = $DB->get_record('realtimequiz', array('id' => $quizid))) { + if (!$quiz = $DB->get_record('realtimequiz', ['id' => $quizid])) { realtimequiz_send_error(get_string('badquizid', 'realtimequiz').$quizid); } else { $questionid = $quiz->currentquestion; - if (!$question = $DB->get_record('realtimequiz_question', array('id' => $questionid))) { + if (!$question = $DB->get_record('realtimequiz_question', ['id' => $questionid])) { realtimequiz_send_error(get_string('badcurrentquestion', 'realtimequiz').$questionid); } else { - $answers = $DB->get_records('realtimequiz_answer', array('questionid' => $questionid), 'id'); - $questioncount = $DB->count_records('realtimequiz_question', array('quizid' => $quizid)); + $answers = $DB->get_records('realtimequiz_answer', ['questionid' => $questionid], 'id'); + $questioncount = $DB->count_records('realtimequiz_question', ['quizid' => $quizid]); echo 'showquestion'; echo "{$question->questionnum}"; echo "{$questioncount}"; $questiontext = format_text($question->questiontext, $question->questiontextformat); - $questiontext = file_rewrite_pluginfile_urls($questiontext, 'pluginfile.php', $context->id, 'mod_realtimequiz', + $questiontext = file_rewrite_pluginfile_urls($questiontext, 'pluginfile.php', $context->id, + 'mod_realtimequiz', 'question', $questionid); echo ""; if ($preview) { @@ -122,11 +123,11 @@ function realtimequiz_send_question($quizid, $context, $preview = false) { function realtimequiz_send_results($quizid) { global $DB; - if (!$quiz = $DB->get_record('realtimequiz', array('id' => $quizid))) { + if (!$quiz = $DB->get_record('realtimequiz', ['id' => $quizid])) { realtimequiz_send_error(get_string('badquizid', 'realtimequiz').$quizid); } else { $questionid = $quiz->currentquestion; - if (!$question = $DB->get_record('realtimequiz_question', array('id' => $questionid))) { + if (!$question = $DB->get_record('realtimequiz_question', ['id' => $questionid])) { realtimequiz_send_error(get_string('badcurrentquestion', 'realtimequiz').$questionid); } else { // Do not worry about question number not matching request @@ -134,15 +135,15 @@ function realtimequiz_send_results($quizid) { // just get on with sending current results. $totalanswers = 0; $totalcorrect = 0; - $answers = $DB->get_records('realtimequiz_answer', array('questionid' => $questionid), 'id'); + $answers = $DB->get_records('realtimequiz_answer', ['questionid' => $questionid], 'id'); echo 'showresults'; echo ''.$question->questionnum.''; echo ''; $numberofcorrectanswers = 0; // To detect questions that have no 'correct' answers. foreach ($answers as $answer) { - $result = $DB->count_records('realtimequiz_submitted', array( - 'questionid' => $questionid, 'answerid' => $answer->id, 'sessionid' => $quiz->currentsessionid - )); + $result = $DB->count_records('realtimequiz_submitted', [ + 'questionid' => $questionid, 'answerid' => $answer->id, 'sessionid' => $quiz->currentsessionid, + ]); $totalanswers += $result; $correct = 'false'; if ($answer->correct == 1) { @@ -192,16 +193,16 @@ function realtimequiz_send_results($quizid) { function realtimequiz_record_answer($quizid, $questionnum, $userid, $answerid, $context) { global $DB; - $quiz = $DB->get_record('realtimequiz', array('id' => $quizid)); - $question = $DB->get_record('realtimequiz_question', array('id' => $quiz->currentquestion)); - $answer = $DB->get_record('realtimequiz_answer', array('id' => $answerid)); + $quiz = $DB->get_record('realtimequiz', ['id' => $quizid]); + $question = $DB->get_record('realtimequiz_question', ['id' => $quiz->currentquestion]); + $answer = $DB->get_record('realtimequiz_answer', ['id' => $answerid]); if (($answer->questionid == $quiz->currentquestion) && ($question->questionnum == $questionnum) ) { - $conditions = array( - 'questionid' => $question->id, 'sessionid' => $quiz->currentsessionid, 'userid' => $userid - ); + $conditions = [ + 'questionid' => $question->id, 'sessionid' => $quiz->currentsessionid, 'userid' => $userid, + ]; if (!$DB->record_exists('realtimequiz_submitted', $conditions)) { // If we already have an answer from them, do not send error, as this is likely to be the // result of lost network packets & resends, just ignore silently. @@ -229,8 +230,8 @@ function realtimequiz_record_answer($quizid, $questionnum, $userid, $answerid, $ */ function realtimequiz_number_students($quizid) { global $CFG, $DB, $USER; - if ($realtimequiz = $DB->get_record("realtimequiz", array('id' => $quizid))) { - if ($course = $DB->get_record("course", array('id' => $realtimequiz->course))) { + if ($realtimequiz = $DB->get_record("realtimequiz", ['id' => $quizid])) { + if ($course = $DB->get_record("course", ['id' => $realtimequiz->course])) { if ($cm = get_coursemodule_from_instance("realtimequiz", $realtimequiz->id, $course->id)) { if ($CFG->version < 2011120100) { $context = get_context_instance(CONTEXT_MODULE, $cm->id); @@ -239,10 +240,10 @@ function realtimequiz_number_students($quizid) { } // Is it a student and not a teacher? if (!has_capability('mod/realtimequiz:control', $context, $USER->id)) { - $cond = array( + $cond = [ 'userid' => $USER->id, 'questionid' => 0, 'answerid' => 0, 'sessionid' => $realtimequiz->currentsessionid, - ); + ]; if (!$DB->record_exists("realtimequiz_submitted", $cond)) { $data = new stdClass(); $data->questionid = 0; @@ -255,9 +256,9 @@ function realtimequiz_number_students($quizid) { } } echo ""; - echo ($DB->count_records('realtimequiz_submitted', array( - 'questionid' => 0, 'answerid' => 0, 'sessionid' => $realtimequiz->currentsessionid - ))); + echo($DB->count_records('realtimequiz_submitted', [ + 'questionid' => 0, 'answerid' => 0, 'sessionid' => $realtimequiz->currentsessionid, + ])); echo ""; } } @@ -310,8 +311,8 @@ function realtimequiz_send_await_results($timeleft) { function realtimequiz_send_final_results($quizid) { global $DB; - $quiz = $DB->get_record('realtimequiz', array('id' => $quizid)); - $questionnum = $DB->get_field('realtimequiz_question', 'questionnum', array('id' => $quiz->currentquestion)); + $quiz = $DB->get_record('realtimequiz', ['id' => $quizid]); + $questionnum = $DB->get_field('realtimequiz_question', 'questionnum', ['id' => $quiz->currentquestion]); echo 'finalresults'; echo ''.intval($quiz->classresult / $questionnum).''; } @@ -327,9 +328,9 @@ function realtimequiz_update_status($quizid, $status) { global $DB; if ($status == REALTIMEQUIZ_STATUS_PREVIEWQUESTION) { - $quiz = $DB->get_record('realtimequiz', array('id' => $quizid)); + $quiz = $DB->get_record('realtimequiz', ['id' => $quizid]); if ($quiz->nextendtime < time()) { - $questiontime = $DB->get_field('realtimequiz_question', 'questiontime', array('id' => $quiz->currentquestion)); + $questiontime = $DB->get_field('realtimequiz_question', 'questiontime', ['id' => $quiz->currentquestion]); if ($questiontime == 0) { $questiontime = $quiz->questiontime; } @@ -349,16 +350,16 @@ function realtimequiz_update_status($quizid, $status) { $status = $quiz->status; } } else if ($status == REALTIMEQUIZ_STATUS_SHOWQUESTION) { - $nextendtime = $DB->get_field('realtimequiz', 'nextendtime', array('id' => $quizid)); + $nextendtime = $DB->get_field('realtimequiz', 'nextendtime', ['id' => $quizid]); if ($nextendtime < time()) { $status = REALTIMEQUIZ_STATUS_SHOWRESULTS; - $DB->set_field('realtimequiz', 'status', $status, array('id' => $quizid)); + $DB->set_field('realtimequiz', 'status', $status, ['id' => $quizid]); } } else if (($status != REALTIMEQUIZ_STATUS_NOTRUNNING) && ($status != REALTIMEQUIZ_STATUS_READYTOSTART) && ($status != REALTIMEQUIZ_STATUS_SHOWRESULTS) && ($status != REALTIMEQUIZ_STATUS_FINALRESULTS)) { // Bad status = probably should set it back to 0. $status = REALTIMEQUIZ_STATUS_NOTRUNNING; - $DB->set_field('realtimequiz', 'status', REALTIMEQUIZ_STATUS_NOTRUNNING, array('id' => $quizid)); + $DB->set_field('realtimequiz', 'status', REALTIMEQUIZ_STATUS_NOTRUNNING, ['id' => $quizid]); } return $status; @@ -383,11 +384,11 @@ function realtimequiz_is_running($status) { function realtimequiz_current_question($quizid, $questionnumber) { global $DB; - $questionid = $DB->get_field('realtimequiz', 'currentquestion', array('id' => $quizid)); + $questionid = $DB->get_field('realtimequiz', 'currentquestion', ['id' => $quizid]); if (!$questionid) { return false; } - if ($questionnumber != $DB->get_field('realtimequiz_question', 'questionnum', array('id' => $questionid))) { + if ($questionnumber != $DB->get_field('realtimequiz_question', 'questionnum', ['id' => $questionid])) { return false; } @@ -406,11 +407,12 @@ function realtimequiz_goto_question($context, $quizid, $questionnum) { global $DB; if (has_capability('mod/realtimequiz:control', $context)) { - $quiz = $DB->get_record('realtimequiz', array('id' => $quizid)); + $quiz = $DB->get_record('realtimequiz', ['id' => $quizid]); // Update the question statistics. $quiz->classresult += $quiz->questionresult; $quiz->questionresult = 0; - $questionid = $DB->get_field('realtimequiz_question', 'id', array('quizid' => $quizid, 'questionnum' => $questionnum)); + $questionid = $DB->get_field('realtimequiz_question', 'id', + ['quizid' => $quizid, 'questionnum' => $questionnum]); if ($questionid) { $quiz->currentquestion = $questionid; $quiz->status = REALTIMEQUIZ_STATUS_PREVIEWQUESTION; diff --git a/mod_form.php b/mod_form.php index 1ae4386..97e0771 100644 --- a/mod_form.php +++ b/mod_form.php @@ -44,7 +44,7 @@ protected function definition() { $mform->addElement('header', 'general', get_string('general', 'form')); // Adding the standard "name" field. - $mform->addElement('text', 'name', get_string('modulename', 'realtimequiz'), array('size' => '64')); + $mform->addElement('text', 'name', get_string('modulename', 'realtimequiz'), ['size' => '64']); $mform->setType('name', PARAM_TEXT); $mform->addRule('name', null, 'required', null, 'client'); $mform->addRule('name', get_string('maximumchars', '', 255), 'maxlength', 255, 'client'); diff --git a/quizdata.php b/quizdata.php index 1977f3a..6758a17 100644 --- a/quizdata.php +++ b/quizdata.php @@ -41,12 +41,12 @@ realtimequiz_start_response(); -if (!$realtimequiz = $DB->get_record("realtimequiz", array('id' => $quizid))) { +if (!$realtimequiz = $DB->get_record("realtimequiz", ['id' => $quizid])) { realtimequiz_send_error("Quiz ID incorrect"); realtimequiz_end_response(); die(); } -if (!$course = $DB->get_record("course", array('id' => $realtimequiz->course))) { +if (!$course = $DB->get_record("course", ['id' => $realtimequiz->course])) { realtimequiz_send_error("Course is misconfigured"); realtimequiz_end_response(); die(); @@ -73,7 +73,8 @@ if ($status === false) { realtimequiz_send_error(get_string('badquizid', 'realtimequiz').$quizid); } else { - $status = realtimequiz_update_status($quizid, $status); // Check if the current status should change due to a timeout. + $status = realtimequiz_update_status($quizid, + $status); // Check if the current status should change due to a timeout. if ($requesttype == 'quizrunning') { if (($status == REALTIMEQUIZ_STATUS_NOTRUNNING) || ($status == REALTIMEQUIZ_STATUS_FINALRESULTS)) { @@ -90,7 +91,7 @@ $session->quizid = $quizid; $session->id = $DB->insert_record('realtimequiz_session', $session); - $quiz = $DB->get_record('realtimequiz', array('id' => $quizid)); + $quiz = $DB->get_record('realtimequiz', ['id' => $quizid]); $quiz->currentsessionid = $session->id; $quiz->status = REALTIMEQUIZ_STATUS_READYTOSTART; $quiz->currentquestion = 0; @@ -138,7 +139,7 @@ } else if ($requesttype == 'getresults') { $questionnum = required_param('question', PARAM_INT); if (realtimequiz_current_question($quizid, $questionnum)) { - $timeleft = $DB->get_field('realtimequiz', 'nextendtime', array('id' => $quizid)) - time(); + $timeleft = $DB->get_field('realtimequiz', 'nextendtime', ['id' => $quizid]) - time(); if ($timeleft < 0) { $timeleft = 0; } @@ -161,8 +162,8 @@ } else if ($requesttype == 'nextquestion') { $clientquestionnum = required_param('currentquestion', PARAM_INT); - $questionid = $DB->get_field('realtimequiz', 'currentquestion', array('id' => $quizid)); - $questionnum = $DB->get_field('realtimequiz_question', 'questionnum', array('id' => $questionid)); + $questionid = $DB->get_field('realtimequiz', 'currentquestion', ['id' => $quizid]); + $questionnum = $DB->get_field('realtimequiz_question', 'questionnum', ['id' => $questionid]); if ($clientquestionnum != $questionnum) { realtimequiz_send_results($quizid); } else { diff --git a/responses.php b/responses.php index 52b0bc6..893ddc1 100644 --- a/responses.php +++ b/responses.php @@ -40,10 +40,10 @@ $perpage = optional_param('perpage', REALTIMEQUIZ_DEFAULT_PERPAGE, PARAM_INT); $cm = get_coursemodule_from_id('realtimequiz', $id, 0, false, MUST_EXIST); -$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); -$realtimequiz = $DB->get_record('realtimequiz', array('id' => $cm->instance), '*', MUST_EXIST); +$course = $DB->get_record('course', ['id' => $cm->course], '*', MUST_EXIST); +$realtimequiz = $DB->get_record('realtimequiz', ['id' => $cm->instance], '*', MUST_EXIST); -$url = new moodle_url('/mod/realtimequiz/responses.php', array('id' => $cm->id)); +$url = new moodle_url('/mod/realtimequiz/responses.php', ['id' => $cm->id]); if ($showsession) { $url->param('showsession', $showsession); } @@ -74,10 +74,10 @@ if ($allquestions) { $questionid = 0; } else if ($nextquestion) { - $question = $DB->get_record('realtimequiz_question', array('id' => $questionid)); - $newquestion = $DB->get_record('realtimequiz_question', array( - 'quizid' => $question->quizid, 'questionnum' => ($question->questionnum + 1) - )); + $question = $DB->get_record('realtimequiz_question', ['id' => $questionid]); + $newquestion = $DB->get_record('realtimequiz_question', [ + 'quizid' => $question->quizid, 'questionnum' => ($question->questionnum + 1), + ]); if ($newquestion) { $questionid = $newquestion->id; @@ -85,10 +85,10 @@ $questionid = 0; } } else if ($prevquestion) { - $question = $DB->get_record('realtimequiz_question', array('id' => $questionid)); - $newquestion = $DB->get_record('realtimequiz_question', array( - 'quizid' => $question->quizid, 'questionnum' => ($question->questionnum - 1) - )); + $question = $DB->get_record('realtimequiz_question', ['id' => $questionid]); + $newquestion = $DB->get_record('realtimequiz_question', [ + 'quizid' => $question->quizid, 'questionnum' => ($question->questionnum - 1), + ]); if ($newquestion) { $questionid = $newquestion->id; @@ -98,7 +98,7 @@ } if ($questionid == 0) { - $redir = new moodle_url('/mod/realtimequiz/responses.php', array('id' => $cm->id, 'showsession' => $showsession)); + $redir = new moodle_url('/mod/realtimequiz/responses.php', ['id' => $cm->id, 'showsession' => $showsession]); if ($showusers) { $redir->param('showusers', 1); } @@ -108,12 +108,12 @@ // Log that the responses were viewed. if ($CFG->version > 2014051200) { // Moodle 2.7+. - $params = array( + $params = [ 'context' => $context, - 'other' => array( - 'quizid' => $realtimequiz->id - ) - ); + 'other' => [ + 'quizid' => $realtimequiz->id, + ], + ]; $event = \mod_realtimequiz\event\responses_viewed::create($params); $event->add_record_snapshot('course', $course); $event->add_record_snapshot('realtimequiz', $realtimequiz); @@ -147,7 +147,7 @@ } $select = "quizid = ? AND id IN (SELECT sessionid FROM {realtimequiz_submitted})"; -$params = array($realtimequiz->id); +$params = [$realtimequiz->id]; $sessions = $DB->get_records_select('realtimequiz_session', $select, $params, 'timestamp'); if (empty($sessions)) { echo $OUTPUT->box_start('generalbox boxwidthwide boxaligncenter realtimequizbox'); @@ -206,8 +206,8 @@ $blankcolspan = ''; } - $questions = $DB->get_records('realtimequiz_question', array('quizid' => $realtimequiz->id), 'questionnum'); - $linkurl = new moodle_url('/mod/realtimequiz/responses.php', array('id' => $cm->id, 'showsession' => $showsession)); + $questions = $DB->get_records('realtimequiz_question', ['quizid' => $realtimequiz->id], 'questionnum'); + $linkurl = new moodle_url('/mod/realtimequiz/responses.php', ['id' => $cm->id, 'showsession' => $showsession]); if ($showusers) { $linkurl->param('showusers', 1); @@ -243,7 +243,7 @@ } $url = new moodle_url($PAGE->url); - $url->remove_params(array('page')); + $url->remove_params(['page']); echo $OUTPUT->paging_bar(count($users), $page, $perpage, $url, 'page'); $users = array_slice($users, $page * $perpage, $perpage, true); @@ -253,10 +253,10 @@ } $strtotals = get_string('totals', 'realtimequiz'); - list($usql, $uparams) = $DB->get_in_or_equal(array_keys($users), SQL_PARAMS_NAMED); + [$usql, $uparams] = $DB->get_in_or_equal(array_keys($users), SQL_PARAMS_NAMED); $nousersurl = new moodle_url($PAGE->url); - $nousersurl->remove_params(array('showusers')); + $nousersurl->remove_params(['showusers']); $userlink = html_writer::link($nousersurl, get_string('hideusers', 'realtimequiz')); } else { $usersurl = new moodle_url($PAGE->url); @@ -270,7 +270,7 @@ if (!empty($questions)) { foreach ($questions as $question) { echo ''.$question->questionnum.''; - $answers = $DB->get_records('realtimequiz_answer', array('questionid' => $question->id), 'id'); + $answers = $DB->get_records('realtimequiz_answer', ['questionid' => $question->id], 'id'); if (!empty($answers)) { $iscorrectanswer = false; foreach ($answers as $answer) { @@ -294,17 +294,17 @@ $questiontext = get_string('question', 'mod_realtimequiz').$question->questionnum; } echo ''.format_string($questiontext).''; + $linkurl->out(true, ['questionid' => $question->id]).'">'.format_string($questiontext).''; $total = 0; $gotanswerright = 0; foreach ($answers as $answer) { if ($showsession == 0) { - $count = $DB->count_records('realtimequiz_submitted', array('answerid' => $answer->id)); + $count = $DB->count_records('realtimequiz_submitted', ['answerid' => $answer->id]); } else { - $count = $DB->count_records('realtimequiz_submitted', array( - 'answerid' => $answer->id, 'sessionid' => $showsession - )); + $count = $DB->count_records('realtimequiz_submitted', [ + 'answerid' => $answer->id, 'sessionid' => $showsession, + ]); } $total += $count; @@ -341,7 +341,7 @@ if ($showusers) { $select = "questionid = :questionid AND userid $usql"; - $params = array('questionid' => $question->id); + $params = ['questionid' => $question->id]; $params = array_merge($params, $uparams); if ($showsession) { $select .= ' AND sessionid = :sessionid'; @@ -431,7 +431,7 @@ } else { // Show a single question. echo $OUTPUT->box_start('generalbox boxwidthwide boxaligncenter realtimequizplainbox'); - $question = $DB->get_record('realtimequiz_question', array('id' => $questionid)); + $question = $DB->get_record('realtimequiz_question', ['id' => $questionid]); echo '

'.get_string('question', 'realtimequiz').$question->questionnum.'

'; $questiontext = file_rewrite_pluginfile_urls($question->questiontext, 'pluginfile.php', $context->id, @@ -440,7 +440,7 @@ echo '

'.$questiontext.'


'; echo ''. ''; - $answers = $DB->get_records('realtimequiz_answer', array('questionid' => $questionid), 'id'); + $answers = $DB->get_records('realtimequiz_answer', ['questionid' => $questionid], 'id'); if (!empty($answers)) { foreach ($answers as $answer) { if ($answer->correct == 1) { @@ -453,11 +453,11 @@ echo ''; if ($showsession == 0) { - $submitted = $DB->get_records('realtimequiz_submitted', array('questionid' => $questionid), 'userid'); + $submitted = $DB->get_records('realtimequiz_submitted', ['questionid' => $questionid], 'userid'); } else { - $submitted = $DB->get_records('realtimequiz_submitted', array( - 'questionid' => $questionid, 'sessionid' => $showsession - ), 'userid'); + $submitted = $DB->get_records('realtimequiz_submitted', [ + 'questionid' => $questionid, 'sessionid' => $showsession, + ], 'userid'); } if (empty($submitted)) { @@ -465,7 +465,7 @@ } else { foreach ($submitted as $submission) { - $user = $DB->get_record('user', array('id' => $submission->userid)); + $user = $DB->get_record('user', ['id' => $submission->userid]); $fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context)); echo ''; $iscorrectanswer = false; diff --git a/tests/behat/attemptquiz.feature b/tests/behat/attemptquiz.feature index 0156e2b..a02d966 100644 --- a/tests/behat/attemptquiz.feature +++ b/tests/behat/attemptquiz.feature @@ -1,5 +1,6 @@ @mod @mod_realtimequiz Feature: Students can attempt a quiz under the control of a teacher + Background: Given the following "courses" exist: | fullname | shortname | category | @@ -12,12 +13,11 @@ Feature: Students can attempt a quiz under the control of a teacher | user | course | role | | teacher1 | C1 | editingteacher | | student1 | C1 | student | + And the following "activities" exist: + | activity | course | name | idnumber | intro | questiontime | + | realtimequiz | C1 | Test realtime quiz | RTQ01 | Test the realtime quiz is working | 15 | Given I log in as "teacher1" And I am on "Course 1" course homepage with editing mode on - And I add a "Realtime quiz" to section "1" and I fill the form with: - | Realtime quiz | Test realtime quiz | - | Introduction | Test the realtime quiz is working | - | Default question time | 15 | And I am on the "Test realtime quiz" "realtimequiz activity" page And I press "Add question" And I set the following fields to these values: @@ -35,10 +35,10 @@ Feature: Students can attempt a quiz under the control of a teacher And I set the field "id_answercorrect_3" to "1" And I press "Save question and add another" And I set the following fields to these values: - | Question text | What is your favourite colour? | - | answertext[1] | Red | - | answertext[2] | Green | - | answertext[3] | Purple | + | Question text | What is your favourite colour? | + | answertext[1] | Red | + | answertext[2] | Green | + | answertext[3] | Purple | And I set the field "No 'right' answer" to "1" And I press "Save question" diff --git a/tests/behat/attemptquiz_number_students.feature b/tests/behat/attemptquiz_number_students.feature index 707c978..5b8e52c 100644 --- a/tests/behat/attemptquiz_number_students.feature +++ b/tests/behat/attemptquiz_number_students.feature @@ -13,12 +13,11 @@ Feature: The teacher waits for a sufficient number of students | user | course | role | | teacher1 | C1 | editingteacher | | student1 | C1 | student | + And the following "activities" exist: + | activity | course | name | idnumber | intro | questiontime | + | realtimequiz | C1 | Test realtime quiz | RTQ01 | Test the realtime quiz is working | 25 | And I log in as "teacher1" And I am on "Course 1" course homepage with editing mode on - And I add a "Realtime quiz" to section "1" and I fill the form with: - | Realtime quiz | Test realtime quiz | - | Introduction | Test the realtime quiz is working | - | Default question time | 25 | And I am on the "Test realtime quiz" "realtimequiz activity" page And I press "Add question" And I set the following fields to these values: diff --git a/tests/behat/editquestions.feature b/tests/behat/editquestions.feature index d8ca62b..4cee708 100644 --- a/tests/behat/editquestions.feature +++ b/tests/behat/editquestions.feature @@ -1,5 +1,6 @@ @mod @mod_realtimequiz Feature: Teacher can create a realtime quiz and edit the questions + Background: Given the following "courses" exist: | fullname | shortname | category | @@ -10,25 +11,24 @@ Feature: Teacher can create a realtime quiz and edit the questions And the following "course enrolments" exist: | user | course | role | | teacher1 | C1 | editingteacher | + And the following "activities" exist: + | activity | course | name | idnumber | intro | questiontime | + | realtimequiz | C1 | Test realtime quiz | RTQ01 | Test the realtime quiz is working | 20 | @javascript Scenario: Create a quiz and edit the questions Given I log in as "teacher1" And I am on "Course 1" course homepage And I turn editing mode on - And I add a "Realtime quiz" to section "1" and I fill the form with: - | Realtime quiz | Test realtime quiz | - | Introduction | Test the realtime quiz is working | - | Default question time | 20 | And I am on the "Test realtime quiz" "realtimequiz activity" page # Create a question. When I press "Add question" And I set the following fields to these values: - | Question text | Where was Moodle created? | - | Question time | 0 | - | answertext[1] | France | - | answertext[2] | Australia | - | answertext[3] | Italy | + | Question text | Where was Moodle created? | + | Question time | 0 | + | answertext[1] | France | + | answertext[2] | Australia | + | answertext[3] | Italy | And I set the field "id_answercorrect_2" to "1" And I press "Save question" Then I should see "Where was Moodle created?" diff --git a/tests/generator/lib.php b/tests/generator/lib.php index d6f89a3..ab4a2bc 100644 --- a/tests/generator/lib.php +++ b/tests/generator/lib.php @@ -36,9 +36,9 @@ class mod_realtimequiz_generator extends testing_module_generator { public function create_instance($record = null, array $options = null) { $record = (object)(array)$record; - $defaultsettings = array( + $defaultsettings = [ 'questiontime' => 30, - ); + ]; foreach ($defaultsettings as $name => $value) { if (!isset($record->{$name})) { diff --git a/tests/privacy_provider_test.php b/tests/privacy_provider_test.php index 688be04..0a88c91 100644 --- a/tests/privacy_provider_test.php +++ b/tests/privacy_provider_test.php @@ -64,7 +64,7 @@ protected function setUp(): void { $questions = [ 'First question' => ['Answer A', '*Answer B', 'Answer C'], 'Second question' => ['*Answer D', 'Answer E'], - 'Third question' => ['Answer F', '*Answer G'] + 'Third question' => ['Answer F', '*Answer G'], ]; foreach ($this->quizzes as $quiz) { $qnum = 1; @@ -325,12 +325,13 @@ public function test_delete_data_for_user(): void { // After deletion, we should have 3 submitted responses. $this->assertEquals(3, $DB->count_records('realtimequiz_submitted', [])); // Confirm the remaining responses are for the second student. - $this->assertEquals([$student->id], $DB->get_fieldset_select('realtimequiz_submitted', 'DISTINCT userid', "1=1")); + $this->assertEquals([$student->id], + $DB->get_fieldset_select('realtimequiz_submitted', 'DISTINCT userid', "1=1")); // Delete the data for the second student, for all quizzes. $contextlist = new \core_privacy\local\request\approved_contextlist($student, 'realtimequiz', [ - $ctxs[0]->id, $ctxs[1]->id + $ctxs[0]->id, $ctxs[1]->id, ]); provider::delete_data_for_user($contextlist); @@ -376,7 +377,8 @@ public function test_delete_data_for_users(): void { // Delete all data for student. $userlist = new \core_privacy\local\request\userlist($ctxs[0], 'mod_realtimequiz'); provider::get_users_in_context($userlist); - $approvedlist = new \core_privacy\local\request\approved_userlist($ctxs[0], 'mod_realtimequiz', [$this->student->id]); + $approvedlist = new \core_privacy\local\request\approved_userlist($ctxs[0], 'mod_realtimequiz', + [$this->student->id]); provider::delete_data_for_users($approvedlist); // Check user list for checklist 0. diff --git a/version.php b/version.php index 5050643..c4a242c 100644 --- a/version.php +++ b/version.php @@ -24,8 +24,8 @@ defined('MOODLE_INTERNAL') || die(); -$plugin->version = 2023100200; // The current module version (Date: YYYYMMDDXX). +$plugin->version = 2024040400; // The current module version (Date: YYYYMMDDXX). $plugin->requires = 2017111306; // Moodle 3.4.6 (or above). $plugin->component = 'mod_realtimequiz'; $plugin->maturity = MATURITY_STABLE; -$plugin->release = '3.4.4.0'; +$plugin->release = '3.4.4.1'; diff --git a/view.php b/view.php index b66a49d..9cbf6c5 100644 --- a/view.php +++ b/view.php @@ -28,20 +28,20 @@ require_once($CFG->dirroot.'/mod/realtimequiz/locallib.php'); $id = optional_param('id', 0, PARAM_INT); // Course Module ID, or ... -$a = optional_param('a', 0, PARAM_INT); // Realtimequiz ID. +$q = optional_param('q', 0, PARAM_INT); // Realtimequiz ID. if ($id) { $cm = get_coursemodule_from_id('realtimequiz', $id, 0, false, MUST_EXIST); - $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); - $realtimequiz = $DB->get_record('realtimequiz', array('id' => $cm->instance), '*', MUST_EXIST); + $course = $DB->get_record('course', ['id' => $cm->course], '*', MUST_EXIST); + $realtimequiz = $DB->get_record('realtimequiz', ['id' => $cm->instance], '*', MUST_EXIST); } else { - $realtimequiz = $DB->get_record('realtimequiz', array('id' => $bid), '*', MUST_EXIST); + $realtimequiz = $DB->get_record('realtimequiz', ['id' => $q], '*', MUST_EXIST); $cm = get_coursemodule_from_instance('realtimequiz', $realtimequiz->id, 0, false, MUST_EXIST); - $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); + $course = $DB->get_record('course', ['id' => $cm->course], '*', MUST_EXIST); $id = $cm->id; } -$PAGE->set_url(new moodle_url('/mod/realtimequiz/view.php', array('id' => $cm->id))); +$PAGE->set_url(new moodle_url('/mod/realtimequiz/view.php', ['id' => $cm->id])); require_login($course->id, false, $cm); $PAGE->set_pagelayout('incourse'); @@ -52,7 +52,7 @@ $context = context_module::instance($cm->id); } -$questioncount = $DB->count_records('realtimequiz_question', array('quizid' => $realtimequiz->id)); +$questioncount = $DB->count_records('realtimequiz_question', ['quizid' => $realtimequiz->id]); if ($questioncount == 0 && has_capability('mod/realtimequiz:editquestions', $context)) { redirect('edit.php?id='.$id); } @@ -60,10 +60,10 @@ require_capability('mod/realtimequiz:attempt', $context); if ($CFG->version > 2014051200) { // Moodle 2.7+. - $params = array( + $params = [ 'context' => $context, - 'objectid' => $realtimequiz->id - ); + 'objectid' => $realtimequiz->id, + ]; $event = \mod_realtimequiz\event\course_module_viewed::create($params); $event->add_record_snapshot('realtimequiz', $realtimequiz); $event->trigger(); diff --git a/view_student.js b/view_student.js index 77e8fe2..f33d2c9 100644 --- a/view_student.js +++ b/view_student.js @@ -7,19 +7,19 @@ // Set up the variables used throughout the javascript var realtimequiz = {}; -realtimequiz.givenanswer=false; -realtimequiz.timeleft=-1; -realtimequiz.timer=null; -realtimequiz.questionnumber=-1; -realtimequiz.answernumber=-1; -realtimequiz.questionxml=null; +realtimequiz.givenanswer = false; +realtimequiz.timeleft = -1; +realtimequiz.timer = null; +realtimequiz.questionnumber = -1; +realtimequiz.answernumber = -1; +realtimequiz.questionxml = null; realtimequiz.controlquiz = false; realtimequiz.lastrequest = ''; -realtimequiz.sesskey=-1; -realtimequiz.coursepage=''; -realtimequiz.siteroot=''; -realtimequiz.myscore=0; -realtimequiz.myanswer=-1; +realtimequiz.sesskey = -1; +realtimequiz.coursepage = ''; +realtimequiz.siteroot = ''; +realtimequiz.myscore = 0; +realtimequiz.myanswer = -1; realtimequiz.resendtimer = null; realtimequiz.resenddelay = 2000; // How long to wait before resending request realtimequiz.alreadyrunning = false; @@ -97,8 +97,8 @@ function realtimequiz_set_running(running) { * Set up the basic layout of the student view **************************************************/ function realtimequiz_init_student_view() { - var msg="
"; - msg += "

"+realtimequiz.text['joininstruct']+"

"; + var msg = "
"; + msg += "

" + realtimequiz.text['joininstruct'] + "

"; document.getElementById('questionarea').innerHTML = msg; } @@ -107,13 +107,13 @@ function realtimequiz_init_question_view() { return; } if (realtimequiz.controlquiz) { - document.getElementById("questionarea").innerHTML = "

"+realtimequiz.text['waitstudent']+"

"+realtimequiz.text['clicknext']+"

    "; + document.getElementById("questionarea").innerHTML = "

    " + realtimequiz.text['waitstudent'] + "

    " + realtimequiz.text['clicknext'] + "

      "; document.getElementById("questionarea").innerHTML += "

      "; realtimequiz_update_next_button(true); // To trigger the periodic sending to get the number of students realtimequiz_get_question(); } else { - document.getElementById("questionarea").innerHTML = "

      "+realtimequiz.text['waitfirst']+"


        "; + document.getElementById("questionarea").innerHTML = "

        " + realtimequiz.text['waitfirst'] + "


          "; realtimequiz_get_question(); realtimequiz.myscore = 0; } @@ -138,7 +138,7 @@ function realtimequiz_set_question_text(text) { function realtimequiz_set_question_image(url, width, height) { if (url) { - document.getElementById('questionimage').innerHTML = ''; + document.getElementById('questionimage').innerHTML = ''; } else { document.getElementById('questionimage').innerHTML = ''; } @@ -155,13 +155,13 @@ function realtimequiz_set_answer(id, text, position) { } var letter = String.fromCharCode(65 + realtimequiz.answernumber); //ASCII 'A' - var newanswer = '
        •   '; - newanswer += text + '
        • '; + newanswer += 'type="button" OnClick="realtimequiz_select_choice(' + id + ');"'; + newanswer += ' value="  ' + letter + '  " />  '; + newanswer += text + '
          '; document.getElementById('answers').innerHTML += newanswer; realtimequiz.answernumber += 1; @@ -191,8 +191,8 @@ function realtimequiz_set_question() { var answers = realtimequiz.questionxml.getElementsByTagName('answer'); realtimequiz_clear_answers(); - for (var i=0; i 0) { var classresult = node_text(quizresponse.getElementsByTagName('classresult').item(0)); - var msg = '

          '+realtimequiz.text['finalresults']+'

          '; - msg += '

          '+realtimequiz.text['classresult']+classresult+'%'+realtimequiz.text['resultcorrect']; + var msg = '

          ' + realtimequiz.text['finalresults'] + '

          '; + msg += '

          ' + realtimequiz.text['classresult'] + classresult + '%' + realtimequiz.text['resultcorrect']; if (!realtimequiz.controlquiz) { - msg += '
          '+realtimequiz.text['yourresult']+parseInt((realtimequiz.myscore * 100)/realtimequiz.questionnumber); - msg += '%'+realtimequiz.text['resultcorrect']+''; + msg += '
          ' + realtimequiz.text['yourresult'] + parseInt((realtimequiz.myscore * 100) / realtimequiz.questionnumber); + msg += '%' + realtimequiz.text['resultcorrect'] + ''; } msg += '

          '; } else { - var msg = '

          '+realtimequiz.text['quizfinished']+'

          '; + var msg = '

          ' + realtimequiz.text['quizfinished'] + '

          '; } document.getElementById('questionarea').innerHTML = msg; } @@ -250,11 +250,11 @@ function realtimequiz_show_final_results(quizresponse) { function realtimequiz_select_choice(choice) { if (!realtimequiz.givenanswer) { realtimequiz_set_status(realtimequiz.text['sendinganswer']); - realtimequiz.givenanswer=true; + realtimequiz.givenanswer = true; realtimequiz.myanswer = choice; var answers = document.getElementById('answers').getElementsByTagName('li'); - var chosenid = 'answer'+choice; - for (var ans=0; ans'; + var status = realtimequiz.text['resultthisquestion'] + ''; status += node_text(statistics.getElementsByTagName('questionresult').item(0)); - status += '%'+realtimequiz.text['resultoverall']; + status += '%' + realtimequiz.text['resultoverall']; status += node_text(statistics.getElementsByTagName('classresult').item(0)); - status += '%'+realtimequiz.text['resultcorrect']; + status += '%' + realtimequiz.text['resultcorrect']; if (!realtimequiz.controlquiz) { - status += ' '+realtimequiz.text['yourresult']+parseInt((realtimequiz.myscore * 100) / realtimequiz.questionnumber); - status += '%'+realtimequiz.text['resultcorrect']+''; + status += ' ' + realtimequiz.text['yourresult'] + parseInt((realtimequiz.myscore * 100) / realtimequiz.questionnumber); + status += '%' + realtimequiz.text['resultcorrect'] + ''; } realtimequiz_set_status(status); realtimequiz.markedquestions++; @@ -504,7 +502,7 @@ function realtimequiz_process_contents(httpRequest) { if (realtimequiz.controlquiz) { realtimequiz_update_next_button(true); // Teacher controls when to display the next question } else { - realtimequiz_delayed_request("realtimequiz_get_question()",900); // Wait for next question to be displayed + realtimequiz_delayed_request("realtimequiz_get_question()", 900); // Wait for next question to be displayed } } else if (quizstatus == 'answerreceived') { @@ -521,12 +519,12 @@ function realtimequiz_process_contents(httpRequest) { } else { waittime = 600; } - var number_of_students = quizresponse.getElementsByTagName('numberstudents').item(0) ; + var number_of_students = quizresponse.getElementsByTagName('numberstudents').item(0); if (number_of_students && document.getElementById("numberstudents")) { if (node_text(number_of_students) == '1') { - document.getElementById("numberstudents").innerHTML = node_text(number_of_students)+' '+realtimequiz.text['studentconnected'] ; + document.getElementById("numberstudents").innerHTML = node_text(number_of_students) + ' ' + realtimequiz.text['studentconnected']; } else { - document.getElementById("numberstudents").innerHTML = node_text(number_of_students)+' '+realtimequiz.text['studentsconnected'] ; + document.getElementById("numberstudents").innerHTML = node_text(number_of_students) + ' ' + realtimequiz.text['studentsconnected']; } } realtimequiz_delayed_request("realtimequiz_get_question()", waittime); @@ -552,10 +550,10 @@ function realtimequiz_process_contents(httpRequest) { } else if (quizstatus == 'error') { var errmsg = node_text(quizresponse.getElementsByTagName('message').item(0)); - alert(realtimequiz.text['servererror']+errmsg); + alert(realtimequiz.text['servererror'] + errmsg); } else { - alert(realtimequiz.text['badresponse']+httpRequest.responseText); + alert(realtimequiz.text['badresponse'] + httpRequest.responseText); if (confirm(realtimequiz.text['tryagain'])) { realtimequiz_resend_request(); } else { diff --git a/view_teacher.js b/view_teacher.js index 884f5ec..bff67e9 100644 --- a/view_teacher.js +++ b/view_teacher.js @@ -12,13 +12,13 @@ function realtimequiz_first_question() { if (sessionname.length > 0) { sessionname = '&sessionname=' + encodeURIComponent(sessionname); } - realtimequiz_create_request('requesttype=startquiz&quizid='+realtimequiz.quizid+'&userid='+realtimequiz.userid+sessionname); + realtimequiz_create_request('requesttype=startquiz&quizid=' + realtimequiz.quizid + '&userid=' + realtimequiz.userid + sessionname); //Userid needed to authenticate request } function realtimequiz_next_question() { realtimequiz_update_next_button(false); - realtimequiz_create_request('requesttype=nextquestion&quizid='+realtimequiz.quizid+'&userid='+realtimequiz.userid+'¤tquestion='+realtimequiz.questionnumber); + realtimequiz_create_request('requesttype=nextquestion&quizid=' + realtimequiz.quizid + '&userid=' + realtimequiz.userid + '¤tquestion=' + realtimequiz.questionnumber); realtimequiz.clickednext = realtimequiz.questionnumber; //Userid needed to authenticate request } @@ -31,11 +31,11 @@ function realtimequiz_update_next_button(enabled) { if (realtimequiz.clickednext == realtimequiz.questionnumber) { // Teacher already clicked 'next' for this question, so resend that request realtimequiz_next_question(); } else { - document.getElementById('questioncontrols').innerHTML = ''; + document.getElementById('questioncontrols').innerHTML = ''; } } else { - document.getElementById('questioncontrols').innerHTML = ''; + document.getElementById('questioncontrols').innerHTML = ''; } } @@ -53,7 +53,7 @@ function realtimequiz_start_new_quiz() { function realtimequiz_reconnect_quiz() { realtimequiz.controlquiz = true; - realtimequiz_create_request('requesttype=teacherrejoin&quizid='+realtimequiz.quizid); + realtimequiz_create_request('requesttype=teacherrejoin&quizid=' + realtimequiz.quizid); } function realtimequiz_init_teacher_view() { @@ -61,15 +61,15 @@ function realtimequiz_init_teacher_view() { var msg = "
          "; if (realtimequiz.alreadyrunning) { msg += ""; - msg += "

          "+realtimequiz.text['reconnectinstruct']+"

          "; + msg += "

          " + realtimequiz.text['reconnectinstruct'] + "

          "; msg += " "; msg += "

          " + realtimequiz.text['teacherstartnewinstruct'] + "

          "; } else { msg += " "; msg += "

          " + realtimequiz.text['teacherstartinstruct'] + "

          "; } - msg += ""; - msg += "

          "+realtimequiz.text['teacherjoinquizinstruct']+"

          "; + msg += ""; + msg += "

          " + realtimequiz.text['teacherjoinquizinstruct'] + "

          "; document.getElementById('questionarea').innerHTML = msg; }
           
          '.$fullname.'