Kumi
afb5e818ad
Corrects the field name used for fetching quiz questions from 'quiz' to 'quizid' to align with the database schema. This fixes query failures when retrieving quiz questions ensuring proper data retrieval operations. This minor change resolves an issue with quiz data handling.
86 lines
3.7 KiB
PHP
86 lines
3.7 KiB
PHP
<?php
|
|
require_once('../../config.php');
|
|
require_once($CFG->libdir . '/adminlib.php');
|
|
require_once($CFG->libdir . '/gradelib.php');
|
|
require_once($CFG->libdir . '/tablelib.php');
|
|
require_once($CFG->libdir . '/formslib.php');
|
|
require_once($CFG->dirroot . '/user/selector/lib.php');
|
|
require_once('classes/user_selector.php');
|
|
require_once('classes/usergrades_form.php');
|
|
|
|
// Set up the page context and other configurations
|
|
admin_externalpage_setup('report_usergrades_details', '', null, '', array('capability' => 'report/usergrades:view'));
|
|
|
|
// Instantiate the form
|
|
$mform = new usergrades_form();
|
|
echo $OUTPUT->header();
|
|
echo $OUTPUT->heading(get_string('usergradesreport', 'report_usergrades'));
|
|
|
|
// Form processing and displaying is done here
|
|
if ($mform->is_cancelled()) {
|
|
// Handle form cancellation, if necessary
|
|
redirect(new moodle_url('/admin/report.php'));
|
|
} else if ($data = $mform->get_data()) {
|
|
$userid = $data->userid;
|
|
|
|
// Fetch and display user grades if a user is selected
|
|
if (!empty($userid)) {
|
|
$user = $DB->get_record('user', array('id' => $userid), '*', MUST_EXIST);
|
|
$courses = enrol_get_users_courses($user->id, true);
|
|
$questions = $DB->get_records('question');
|
|
|
|
foreach ($courses as $course) {
|
|
// Basic information about the course
|
|
echo $OUTPUT->heading($course->fullname, 3);
|
|
|
|
// Fetch all quizzes in the course
|
|
$quizzes = $DB->get_records('quiz', array('course' => $course->id));
|
|
|
|
if ($quizzes) {
|
|
echo $OUTPUT->heading(get_string('quizzes', 'report_usergrades'), 4);
|
|
|
|
foreach ($quizzes as $quiz) {
|
|
// Fetch the quiz questions
|
|
$quiz_questions = $DB->get_records('quiz_slots', array('quizid' => $quiz->id));
|
|
|
|
// Fetch the quiz attempts
|
|
$quiz_attempts = $DB->get_records('quiz_attempts', array('quiz' => $quiz->id, 'userid' => $user->id));
|
|
|
|
if ($quiz_attempts) {
|
|
echo $OUTPUT->heading($quiz->name, 5);
|
|
|
|
foreach ($quiz_attempts as $attempt) {
|
|
echo $OUTPUT->heading(get_string('attempt', 'report_usergrades') . ' ' . $attempt->attempt, 6);
|
|
|
|
$attempt_table = new html_table();
|
|
$attempt_table->head = array(get_string('question', 'report_usergrades'), get_string('response', 'report_usergrades'), get_string('grade', 'report_usergrades'));
|
|
|
|
foreach ($quiz_questions as $quiz_question) {
|
|
$question = $questions[$quiz_question->question];
|
|
|
|
$response = $DB->get_record('question_states', array('attempt' => $attempt->id, 'question' => $question->id));
|
|
$grade = $DB->get_record('question_attempt_steps', array('questionattemptid' => $response->id));
|
|
|
|
$attempt_table->data[] = array($question->name, $response->answer, $grade->fraction);
|
|
}
|
|
|
|
echo html_writer::table($attempt_table);
|
|
|
|
$total_grade = $DB->get_record('quiz_grades', array('quiz' => $quiz->id, 'userid' => $user->id));
|
|
|
|
echo $OUTPUT->heading(get_string('totalgrade', 'report_usergrades') . ': ' . $total_grade->grade, 6);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
echo $OUTPUT->notification(get_string('nouserselected', 'report_usergrades'), 'notifyproblem');
|
|
}
|
|
} else {
|
|
// Display form if no data is submitted
|
|
$mform->display();
|
|
}
|
|
|
|
echo $OUTPUT->footer();
|