Skip to content
Snippets Groups Projects
Commit 3afb7755 authored by Chris Sangwin's avatar Chris Sangwin
Browse files

Update basic usage report: SQL query and add %s to output reports.

parent a36ac16e
No related branches found
No related tags found
No related merge requests found
...@@ -87,8 +87,8 @@ LEFT JOIN {question_attempt_steps} qas_last ON qas_last.questionattemptid = qa.i ...@@ -87,8 +87,8 @@ LEFT JOIN {question_attempt_steps} qas_last ON qas_last.questionattemptid = qa.i
using method from https://stackoverflow.com/a/28090544 */ using method from https://stackoverflow.com/a/28090544 */
LEFT JOIN {question_attempt_steps} qas_prev LEFT JOIN {question_attempt_steps} qas_prev
ON qas_last.questionattemptid = qas_prev.questionattemptid ON qas_last.questionattemptid = qas_prev.questionattemptid
AND (qas_last.timecreated < qas_prev.timecreated AND (qas_last.sequencenumber < qas_prev.sequencenumber
OR (qas_last.timecreated = qas_prev.timecreated OR (qas_last.sequencenumber = qas_prev.sequencenumber
AND qas_last.id < qas_prev.id)) AND qas_last.id < qas_prev.id))
LEFT JOIN {user} u ON qas_last.userid = u.id LEFT JOIN {user} u ON qas_last.userid = u.id
WHERE WHERE
...@@ -105,10 +105,13 @@ foreach ($result as $qattempt) { ...@@ -105,10 +105,13 @@ foreach ($result as $qattempt) {
if (!array_key_exists($qattempt->variant, $summary)) { if (!array_key_exists($qattempt->variant, $summary)) {
$summary[$qattempt->variant] = array(); $summary[$qattempt->variant] = array();
} }
if (array_key_exists($qattempt->responsesummary, $summary[$qattempt->variant])) { $rsummary = trim($qattempt->responsesummary);
$summary[$qattempt->variant][$qattempt->responsesummary] += 1; if ($rsummary !== '') {
if (array_key_exists($rsummary, $summary[$qattempt->variant])) {
$summary[$qattempt->variant][$rsummary] += 1;
} else { } else {
$summary[$qattempt->variant][$qattempt->responsesummary] = 1; $summary[$qattempt->variant][$rsummary] = 1;
}
} }
} }
...@@ -123,6 +126,7 @@ foreach ($qinputs as $key => $val) { ...@@ -123,6 +126,7 @@ foreach ($qinputs as $key => $val) {
$qinputs[$key] = array('score' => array(), 'valid' => array(), 'invalid' => array(), 'other' => array()); $qinputs[$key] = array('score' => array(), 'valid' => array(), 'invalid' => array(), 'other' => array());
} }
$inputreport = array(); $inputreport = array();
$inputtotals = array();
$qprts = array_flip(array_keys($question->prts)); $qprts = array_flip(array_keys($question->prts));
foreach ($qprts as $key => $notused) { foreach ($qprts as $key => $notused) {
...@@ -157,6 +161,12 @@ foreach ($summary as $variant => $vdata) { ...@@ -157,6 +161,12 @@ foreach ($summary as $variant => $vdata) {
} else { } else {
$inputreport[$variant][$input][$status][$datas] = $num; $inputreport[$variant][$input][$status][$datas] = $num;
} }
// Count the total numbers in this array.
if (array_key_exists($input, $inputtotals)) {
$inputtotals[$input] += (int) $num;
} else {
$inputtotals[$input] = $num;
}
} }
} }
foreach ($qprts as $prt => $notused) { foreach ($qprts as $prt => $notused) {
...@@ -196,18 +206,26 @@ foreach (array_keys($summary) as $variant) { ...@@ -196,18 +206,26 @@ foreach (array_keys($summary) as $variant) {
$sumout = ''; $sumout = '';
foreach ($inputreport[$variant] as $input => $idata) { foreach ($inputreport[$variant] as $input => $idata) {
$sumouti = ''; $sumouti = '';
$tot = 0;
foreach ($idata as $key => $data) {
foreach ($data as $dat => $num) {
$tot += $num;
}
}
foreach ($idata as $key => $data) { foreach ($idata as $key => $data) {
if ($data !== array()) { if ($data !== array()) {
$sumouti .= '### ' . $key . "\n"; $sumouti .= '### ' . $key . "\n";
$pad = max($data); $pad = max($data);
foreach ($data as $dat => $num) { foreach ($data as $dat => $num) {
$sumouti .= str_pad($num . ';', strlen((string) $pad) + 3) . $dat . "\n"; $sumouti .= str_pad($num, strlen((string) $pad) + 1) . '(' .
str_pad(number_format((float) 100 * $num / $tot, 2, '.', ''), 6, ' ', STR_PAD_LEFT) .
'%); ' . $dat . "\n";
} }
$sumouti .= "\n"; $sumouti .= "\n";
} }
} }
if (trim($sumouti) !== '') { if (trim($sumouti) !== '') {
$sumout .= '## ' . $input . "\n" . $sumouti; $sumout .= '## ' . $input . ' ('. $tot . ")\n" . $sumouti;
} }
} }
if (trim($sumout) !== '') { if (trim($sumout) !== '') {
...@@ -217,12 +235,18 @@ foreach (array_keys($summary) as $variant) { ...@@ -217,12 +235,18 @@ foreach (array_keys($summary) as $variant) {
$sumout = ''; $sumout = '';
foreach ($prtreport[$variant] as $prt => $idata) { foreach ($prtreport[$variant] as $prt => $idata) {
$pad = 0; $pad = 0;
$tot = 0;
foreach ($idata as $dat => $num) {
$tot += $num;
}
if ($idata !== array()) { if ($idata !== array()) {
$sumout .= '## ' . $prt . "\n"; $sumout .= '## ' . $prt . ' ('. $tot . ")\n";
$pad = max($idata); $pad = max($idata);
} }
foreach ($idata as $dat => $num) { foreach ($idata as $dat => $num) {
$sumout .= str_pad($num . ';', strlen((string) $pad) + 3) . $dat . "\n"; $sumout .= str_pad($num, strlen((string) $pad) + 1) . '(' .
str_pad(number_format((float) 100 * $num / $tot, 2, '.', ''), 6, ' ', STR_PAD_LEFT) .
'%); ' . $dat . "\n";
} }
$sumout .= "\n"; $sumout .= "\n";
} }
...@@ -234,11 +258,18 @@ foreach (array_keys($summary) as $variant) { ...@@ -234,11 +258,18 @@ foreach (array_keys($summary) as $variant) {
echo html_writer::tag('h2', stack_string('basicreportraw')); echo html_writer::tag('h2', stack_string('basicreportraw'));
$sumout = ''; $sumout = '';
foreach ($summary as $variant => $vdata) { foreach ($summary as $variant => $vdata) {
if ($vdata !== array()) {
$tot = 0;
foreach ($vdata as $dat => $num) {
$tot += $num;
}
$pad = max($vdata); $pad = max($vdata);
$sumout .= "\n# " . $variant; $sumout .= "\n# " . $variant . ' ('. $tot . ")\n";
$sumout .= "\n";
foreach ($vdata as $dat => $num) { foreach ($vdata as $dat => $num) {
$sumout .= str_pad($num . ';', strlen((string) $pad) + 3) . $dat . "\n"; $sumout .= str_pad($num, strlen((string) $pad) + 1) . '(' .
str_pad(number_format((float) 100 * $num / $tot, 2, '.', ''), 6, ' ', STR_PAD_LEFT) .
'%); ' . $dat . "\n";
}
} }
} }
echo html_writer::tag('pre', $sumout); echo html_writer::tag('pre', $sumout);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment