-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathassign.php
executable file
·97 lines (81 loc) · 3.11 KB
/
assign.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?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/>.
/**
* Assignment feedback redirect
* Clears preset filters and redirects to correct exercise
* for instructor provided feedback submission
*
* @package local_booking
* @author Mustafa Hajjar (mustafa.hajjar)
* @copyright BAVirtual.co.uk © 2021
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once(__DIR__ . '/../../config.php');
require_once(__DIR__ . '/lib.php');
require_once($CFG->dirroot . '/mod/assign/locallib.php');
// Get URL parameters.
$courseid = optional_param('courseid', 0, PARAM_INT);
$exerciseid = optional_param('exeid', 0, PARAM_INT);
$studentid = optional_param('userid', 0, PARAM_INT);
$sessionpassed= optional_param('passed', 1, PARAM_INT);
$addattmept = !$sessionpassed;
list ($course, $cm) = get_course_and_cm_from_cmid($exerciseid, 'assign');
// set context for the module and other requirements by the assignment
$context = context_module::instance($cm->id);
require_login($course, true, $cm);
require_capability('local/booking:view', $context);
$urlparams = array('id' => $exerciseid,
'action' => 'grading',
'tifirst' => '',
'tilast' => '');
$url = new moodle_url('/mod/assign/view.php', $urlparams);
$PAGE->set_url($url);
// create an assignment object to reset filters
$assign = new assign($context, $cm, $course);
$uniqueid = 'mod_assign_grading-' . $assign->get_context()->id;
$prefs = array(
'collapse' => array(),
'sortby' => array(),
'i_first' => '',
'i_last' => '',
'textsort' => array());
// clear any set filters
set_user_preference('flextable_' . $uniqueid, json_encode($prefs));
if ($addattmept) {
$params = [
'id'=>$exerciseid,
'userid'=>$studentid,
'action'=>'addattempt',
'sesskey'=>sesskey()
];
$url = new moodle_url('/mod/assign/view.php',$params);
$curl = new \curl();
$curl->get($url->out_omit_querystring(), $url->params());
$info = $curl->get_info();
// The base cURL seems fine, let's press on.
if ($curl->get_errno() || $curl->error) {
throw new exception(get_string('errornewattemptunable', 'local_booking'));
}
}
// redirect to the assignment feedback page, check for progressing/objective not met feedback
$redirecturl = new moodle_url('/mod/assign/view.php', [
'id' => $exerciseid,
'rownum' => 0,
'userid' => $studentid,
'sesskey'=> sesskey(),
'action' => 'grader',
]);
redirect($redirecturl);