Add read-only preview for question sets

This commit is contained in:
Wojtek
2026-10-16 20:48:32 +02:00
parent 606612784c
commit c9076d4a22
10 changed files with 77 additions and 9 deletions
@@ -9,16 +9,47 @@ use Joomla\CMS\MVC\Model\BaseDatabaseModel;
class PreviewModel extends BaseDatabaseModel
{
public function getSet()
{
$setId = Factory::getApplication()->getInput()->getInt('set_id');
if ($setId < 1) {
return null;
}
$db = Factory::getContainer()->get('DatabaseDriver');
return $db->setQuery(
$db->getQuery(true)
->select(['id', 'title', 'test_content', 'image'])
->from($db->quoteName('#__testquestions_sets'))
->where($db->quoteName('id') . ' = ' . $setId)
)->loadObject();
}
public function getItems(): array
{
$input = Factory::getApplication()->getInput();
$setId = $input->getInt('set_id');
$db = Factory::getContainer()->get('DatabaseDriver');
if ($setId > 0) {
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();
}
$ids = array_values(array_unique(array_filter(array_map('intval', explode(',', $input->getString('ids', ''))))));
if (!$ids) {
return [];
}
$db = Factory::getContainer()->get('DatabaseDriver');
$rows = $db->setQuery(
$db->getQuery(true)
->select(['id', 'question_type', 'question', 'answer_a', 'answer_b', 'answer_c', 'answer_d', 'answer_open', 'correct_answer', 'image'])