Add frontend test view for question sets

This commit is contained in:
Wojtek
2026-10-15 18:01:09 +02:00
parent c50e79164a
commit b2ea519ff5
9 changed files with 204 additions and 2 deletions
@@ -0,0 +1,59 @@
<?php
namespace Komponent\Component\Testquestions\Site\Model;
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
class SetModel extends BaseDatabaseModel
{
protected function getSetId(): int
{
$application = Factory::getApplication();
$menu = $application->getMenu()->getActive();
$menuSetId = $menu ? (int) $menu->getParams()->get('set_id', 0) : 0;
return $application->getInput()->getInt('set_id', $menuSetId);
}
public function getSet()
{
$db = Factory::getContainer()->get('DatabaseDriver');
$setId = $this->getSetId();
if ($setId < 1) {
return null;
}
return $db->setQuery(
$db->getQuery(true)
->select(['s.*', 'sub.title AS subject_title'])
->from($db->quoteName('#__testquestions_sets', 's'))
->leftJoin($db->quoteName('#__testquestions_subjects', 'sub') . ' ON sub.id = s.subject_id')
->where('s.id = ' . $setId)
->where('s.published = 1')
)->loadObject();
}
public function getItems()
{
$db = Factory::getContainer()->get('DatabaseDriver');
$setId = $this->getSetId();
if ($setId < 1) {
return [];
}
return $db->setQuery(
$db->getQuery(true)
->select(['q.id', 'q.question_type', 'q.question', 'q.answer_a', 'q.answer_b', 'q.answer_c', 'q.answer_d', 'q.answer_open', 'q.correct_answer', 'q.image'])
->from($db->quoteName('#__testquestions_set_questions', 'sq'))
->innerJoin($db->quoteName('#__testquestions_questions', 'q') . ' ON q.id = sq.question_id')
->where('sq.set_id = ' . $setId)
->where('q.published = 1')
->order('sq.ordering ASC, q.id ASC')
)->loadObjectList();
}
}