Kumi
b7014cccd4
Updates table headers to support localization by providing the localization key for 'field' and 'value' in the user details section. Improves consistency in string translations throughout the report. Enhances user interface by displaying the user table directly on the page using html_writer, improving readability.
104 lines
4.8 KiB
PHP
104 lines
4.8 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');
|
|
|
|
// User details
|
|
|
|
echo $OUTPUT->heading(get_string('userdetails', 'report_usergrades'), 3);
|
|
|
|
$user_table = new html_table();
|
|
$user_table->head = array(get_string('field', 'report_usergrades'), get_string('value', 'report_usergrades'));
|
|
|
|
$user_table->data[] = array(get_string('username', 'report_usergrades'), $user->username);
|
|
$user_table->data[] = array(get_string('firstname', 'report_usergrades'), $user->firstname);
|
|
$user_table->data[] = array(get_string('lastname', 'report_usergrades'), $user->lastname);
|
|
$user_table->data[] = array(get_string('email', 'report_usergrades'), $user->email);
|
|
|
|
echo html_writer::table($user_table);
|
|
|
|
foreach ($courses as $course) {
|
|
echo $OUTPUT->heading($course->fullname, 3);
|
|
|
|
$quizzes = $DB->get_records('quiz', array('course' => $course->id));
|
|
|
|
if ($quizzes) {
|
|
echo $OUTPUT->heading(get_string('quizzes', 'report_usergrades'), 4);
|
|
|
|
foreach ($quizzes as $quiz) {
|
|
$quiz_questions = $DB->get_records('quiz_slots', array('quizid' => $quiz->id));
|
|
$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'));
|
|
|
|
$question_usages = $DB->get_records('question_usages', array('id' => $attempt->uniqueid));
|
|
|
|
foreach ($question_usages as $question_usage) {
|
|
$question_attempts = $DB->get_records('question_attempts', array('questionusageid' => $question_usage->id));
|
|
|
|
foreach ($question_attempts as $question_attempt) {
|
|
$question = $questions[$question_attempt->questionid];
|
|
$response = $question_attempt->responsesummary;
|
|
|
|
$question_grades = $DB->get_records('question_attempt_steps', array('questionattemptid' => $question_attempt->id));
|
|
|
|
foreach ($question_grades as $question_grade) {
|
|
if ($question_grade->fraction) {
|
|
$attempt_table->data[] = array($question->name . ': ' . $question->questiontext, $response, $question_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 . ' / ' . $quiz->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();
|