mirror of
https://github.com/moodle/moodle.git
synced 2025-01-24 09:08:22 +01:00
c90f563e39
This is very simple so far just to do some tests on larger datasets. Soon it will have XLS and text download, as well as more question information.
95 lines
2.7 KiB
PHP
95 lines
2.7 KiB
PHP
<?PHP // $Id$
|
|
|
|
/// Overview report just displays a big table of all the attempts
|
|
|
|
class quiz_report extends quiz_default_report {
|
|
|
|
function display($quiz, $cm, $course) { /// This function just displays the report
|
|
|
|
global $CFG;
|
|
|
|
$data = array();
|
|
$questionorder = explode(',', $quiz->questions);
|
|
|
|
/// For each person in the class, get their best attempt
|
|
/// and create a table listing results for each person
|
|
if ($users = get_course_students($course->id, "u.lastname ASC")) {
|
|
foreach ($users as $user) {
|
|
|
|
$data[$user->id]->name = "$user->firstname $user->lastname";
|
|
$data[$user->id]->grades = array(); // by default
|
|
|
|
if (!$attempts = quiz_get_user_attempts($quiz->id, $user->id)) {
|
|
continue;
|
|
}
|
|
if (!$bestattempt = quiz_calculate_best_attempt($quiz, $attempts)) {
|
|
continue;
|
|
}
|
|
if (!$questions = quiz_get_attempt_responses($bestattempt, $quiz)) {
|
|
continue;
|
|
}
|
|
quiz_remove_unwanted_questions($questions, $quiz);
|
|
|
|
if (!$results = quiz_grade_attempt_results($quiz, $questions)) {
|
|
error("Could not re-grade this quiz attempt!");
|
|
}
|
|
|
|
$count = 0;
|
|
foreach ($questionorder as $questionid) {
|
|
$count++;
|
|
$data[$user->id]->grades[$count] = $results->grades[$questionid];
|
|
}
|
|
}
|
|
}
|
|
|
|
optional_variable($output, "");
|
|
|
|
/// If spreadsheet is wanted, produce one
|
|
if ($output = "xls") {
|
|
}
|
|
|
|
/// If a text file is wanted, produce one
|
|
if ($output = "xls") {
|
|
}
|
|
|
|
/// Otherwise, display the table as HTML
|
|
|
|
$count = count($questionorder);
|
|
$datacount = count($data);
|
|
$total = array();
|
|
|
|
echo "<table border=1 align=\"center\">";
|
|
echo "<tr>";
|
|
echo "<td> </td>";
|
|
for ($i=1; $i<=$count; $i++) {
|
|
$total[$i] = 0.0;
|
|
echo "<th>$i</th>";
|
|
}
|
|
echo "</tr>";
|
|
|
|
foreach ($data as $userid => $datum) {
|
|
echo "<tr>";
|
|
echo "<td><b>$datum->name</b></td>";
|
|
foreach ($datum->grades as $key => $grade) {
|
|
echo "<td>$grade</td>";
|
|
$total[$key]+= $grade;
|
|
}
|
|
echo "</tr>";
|
|
}
|
|
|
|
echo "<tr>";
|
|
echo "<td> </td>";
|
|
for ($i=1; $i<=$count; $i++) {
|
|
$average = format_float($total[$i] / $datacount, 2);
|
|
echo "<td>$average</td>";
|
|
}
|
|
echo "</tr>";
|
|
|
|
echo "</table>";
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
?>
|