Add frontend test view for question sets
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user