Skip to content

Commit

Permalink
Fixes EMDL-606 EMDL-605 EMDL-604 EMDL-578
Browse files Browse the repository at this point in the history
  • Loading branch information
nexterday committed Mar 10, 2022
1 parent 09a53f7 commit 9ffc44b
Show file tree
Hide file tree
Showing 11 changed files with 4,719 additions and 3,152 deletions.
2 changes: 1 addition & 1 deletion attempt.php
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@

$userid = '-u' . $USER->id;

$wifisettings = $DB->get_record('quizaccess_wifiresilience', array('quizid' => $attemptobj->get_quizid()));
$wifisettings = get_config('quizaccess_wifiresilience');

$displaytecherrors = 0;
$displaynavdetails = 0;
Expand Down
438 changes: 197 additions & 241 deletions rule.php

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion serviceworker.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
die;
}

$wifisettings = $DB->get_record('quizaccess_wifiresilience', array('quizid' => $quizid));
$wifisettings = get_config('quizaccess_wifiresilience');

$rev = md5('offline.html');
$precahcedfilesstr =
Expand Down
1 change: 1 addition & 0 deletions styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -322,5 +322,6 @@ textarea.inspectresponse {

#page-mod-quiz-attempt .submitbtns {
text-align: center !important;
display: block;
}
/* stylelint-enable declaration-no-important */
91 changes: 91 additions & 0 deletions time.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.

/**
* This script processes ajax timer equests during the quiz.
*
* @package quizaccess_wifiresilience
* @copyright 2017 ETH Zurich ([email protected])
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/

define('AJAX_SCRIPT', true);

require_once(__DIR__ . '/../../../../config.php');
require_once($CFG->dirroot . '/mod/quiz/locallib.php');

// Remember the current time as the time any responses were submitted.
// (so as to make sure students don't get penalized for slow processing on this page).
$timenow = time();

// Get submitted parameters.
$attemptid = required_param('attempt', PARAM_INT);

$transaction = $DB->start_delegated_transaction();
$attemptobj = quiz_attempt::create($attemptid);

// Check login.
if (!isloggedin() || !confirm_sesskey()) {
echo json_encode(array('result' => 'lostsession'));
die;
}
require_login($attemptobj->get_course(), false, $attemptobj->get_cm());
require_sesskey();

// Check that this attempt belongs to this user.
if ($attemptobj->get_userid() != $USER->id) {
throw new moodle_quiz_exception($attemptobj->get_quizobj(), 'notyourattempt');
}

// Check capabilities.
if (!$attemptobj->is_preview_user()) {
$attemptobj->require_capability('mod/quiz:attempt');
}
$options = $attemptobj->get_display_options(false);

// If the attempt is already closed, send them to the review page.
if ($attemptobj->is_finished()) {
throw new moodle_quiz_exception($attemptobj->get_quizobj(),
'attemptalreadyclosed', null, $attemptobj->review_url());
}

$accessmanager = $attemptobj->get_quizobj()->get_access_manager(time());
$endtime = $accessmanager->get_end_time($attemptobj);

if ($endtime === false) {
$endtime = 0;
}

$timeleft = $attemptobj->get_time_left_display(time());

if ($timeleft !== false) {
$ispreview = $attemptobj->is_preview();
$timerstartvalue = $timeleft;
if (!$ispreview) {
/*
Make sure the timer starts just above zero. If $timeleft was <= 0, then
this will just have the effect of causing the quiz to be submitted immediately.
*/
$timerstartvalue = max($timerstartvalue, 1);
}
} else {
$timerstartvalue = 0;
}
$result = array();
$result['result'] = 'OK';
$result['timerstartvalue'] = $timerstartvalue;
$result['timelimit'] = $endtime;
echo json_encode($result);
Loading

0 comments on commit 9ffc44b

Please sign in to comment.