Add saved test result preview

This commit is contained in:
Wojtek
2026-10-15 20:45:08 +02:00
parent ceb6a6c6ef
commit e52d31a783
12 changed files with 225 additions and 2 deletions
@@ -0,0 +1,44 @@
<?php
namespace Komponent\Component\Testquestions\Administrator\Model;
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
class ResultModel extends BaseDatabaseModel
{
public function getItem($pk = null)
{
$id = (int) ($pk ?: Factory::getApplication()->getInput()->getInt('id'));
$db = Factory::getContainer()->get('DatabaseDriver');
$item = $db->setQuery(
$db->getQuery(true)
->select(['r.*', 's.title AS set_title', 'sub.title AS subject_title'])
->from($db->quoteName('#__testquestions_results', 'r'))
->leftJoin($db->quoteName('#__testquestions_sets', 's') . ' ON s.id = r.set_id')
->leftJoin($db->quoteName('#__testquestions_subjects', 'sub') . ' ON sub.id = s.subject_id')
->where('r.id = ' . $id)
)->loadObject();
if (!$item) {
return null;
}
$item->answers = json_decode((string) $item->answers, true) ?: [];
$ids = array_map('intval', array_keys($item->answers));
$item->questions = [];
if ($ids) {
$item->questions = $db->setQuery(
$db->getQuery(true)
->select(['id', 'question_type', 'question', 'answer_a', 'answer_b', 'answer_c', 'answer_d', 'answer_open', 'correct_answer'])
->from($db->quoteName('#__testquestions_questions'))
->where('id IN (' . implode(',', $ids) . ')')
)->loadObjectList('id');
}
return $item;
}
}