Track corrected result points
This commit is contained in:
@@ -67,6 +67,7 @@ COM_TESTQUESTIONS_RESULT_PREVIEW="Podgląd zapisanego testu"
|
||||
COM_TESTQUESTIONS_RESULT_NOT_FOUND="Nie znaleziono zapisanego testu."
|
||||
COM_TESTQUESTIONS_RESULT_PARTICIPANT="Użytkownik"
|
||||
COM_TESTQUESTIONS_RESULT_SCORE="Wynik"
|
||||
COM_TESTQUESTIONS_RESULT_POINTS_BEFORE_AFTER="Punkty przed / po korekcie"
|
||||
COM_TESTQUESTIONS_RESULT_DATE="Data zakończenia"
|
||||
COM_TESTQUESTIONS_RESULT_ANSWERS="Odpowiedzi"
|
||||
COM_TESTQUESTIONS_RESULT_EXECUTION_TIME="Czas wykonania"
|
||||
|
||||
@@ -84,6 +84,8 @@ CREATE TABLE IF NOT EXISTS `#__testquestions_results` (
|
||||
`correct_count` smallint unsigned NOT NULL DEFAULT 0,
|
||||
`total_count` smallint unsigned NOT NULL DEFAULT 0,
|
||||
`percentage` decimal(5,2) NOT NULL DEFAULT 0.00,
|
||||
`points_before` int unsigned NOT NULL DEFAULT 0,
|
||||
`points_after` int unsigned NOT NULL DEFAULT 0,
|
||||
`answers` longtext NULL,
|
||||
`created` datetime NOT NULL,
|
||||
`created_by` int unsigned NOT NULL DEFAULT 0,
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
ALTER TABLE `#__testquestions_results`
|
||||
ADD COLUMN `points_before` int unsigned NOT NULL DEFAULT 0 AFTER `percentage`,
|
||||
ADD COLUMN `points_after` int unsigned NOT NULL DEFAULT 0 AFTER `points_before`;
|
||||
|
||||
UPDATE `#__testquestions_results`
|
||||
SET `points_before` = `correct_count`,
|
||||
`points_after` = `correct_count`
|
||||
WHERE `points_before` = 0 AND `points_after` = 0;
|
||||
@@ -57,10 +57,16 @@ class ResultModel extends BaseDatabaseModel
|
||||
}
|
||||
unset($answer);
|
||||
|
||||
$pointsAfter = 0;
|
||||
foreach ($item->answers as $answer) {
|
||||
$pointsAfter += (int) ($answer['awarded_points'] ?? 0);
|
||||
}
|
||||
|
||||
$db = Factory::getContainer()->get('DatabaseDriver');
|
||||
$row = (object) [
|
||||
'id' => $id,
|
||||
'answers' => json_encode($item->answers, JSON_UNESCAPED_UNICODE),
|
||||
'points_after' => $pointsAfter,
|
||||
];
|
||||
|
||||
return (bool) $db->updateObject('#__testquestions_results', $row, 'id');
|
||||
|
||||
@@ -16,7 +16,7 @@ use Joomla\CMS\Router\Route;
|
||||
<thead><tr>
|
||||
<th><?php echo \Joomla\CMS\Language\Text::_('COM_TESTQUESTIONS_RESULT_PARTICIPANT'); ?></th>
|
||||
<th><?php echo \Joomla\CMS\Language\Text::_('COM_TESTQUESTIONS_SET_TITLE'); ?></th>
|
||||
<th><?php echo \Joomla\CMS\Language\Text::_('COM_TESTQUESTIONS_RESULT_SCORE'); ?></th>
|
||||
<th><?php echo \Joomla\CMS\Language\Text::_('COM_TESTQUESTIONS_RESULT_POINTS_BEFORE_AFTER'); ?></th>
|
||||
<th><?php echo \Joomla\CMS\Language\Text::_('COM_TESTQUESTIONS_RESULT_EXECUTION_TIME'); ?></th>
|
||||
<th><?php echo \Joomla\CMS\Language\Text::_('COM_TESTQUESTIONS_RESULT_DATE'); ?></th>
|
||||
</tr></thead>
|
||||
@@ -25,7 +25,7 @@ use Joomla\CMS\Router\Route;
|
||||
<tr class="<?php echo (int) $item->extra_time > 0 ? 'table-warning' : ''; ?>">
|
||||
<th><a href="<?php echo Route::_('index.php?option=com_testquestions&view=result&id=' . (int) $item->id); ?>"><?php echo $this->escape($item->participant_name); ?></a></th>
|
||||
<td><?php echo $this->escape(($item->subject_title ? $item->subject_title . ' — ' : '') . $item->set_title); ?></td>
|
||||
<td><?php echo (int) $item->correct_count; ?> / <?php echo (int) $item->total_count; ?> (<?php echo htmlspecialchars((string) $item->percentage, ENT_QUOTES, 'UTF-8'); ?>%)</td>
|
||||
<td><?php echo (int) $item->points_before; ?> / <?php echo (int) $item->points_after; ?></td>
|
||||
<td><?php echo floor((int) $item->execution_time / 60); ?>:<?php echo str_pad((string) ((int) $item->execution_time % 60), 2, '0', STR_PAD_LEFT); ?></td>
|
||||
<td><?php echo HTMLHelper::_('date', $item->created, 'Y-m-d H:i'); ?></td>
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user