70 lines
2.3 KiB
PHP
70 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace Komponent\Component\Testquestions\Administrator\Model;
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\Factory;
|
|
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 [];
|
|
}
|
|
|
|
$rows = $db->setQuery(
|
|
$db->getQuery(true)
|
|
->select(['id', 'question_type', 'question', 'answer_a', 'answer_b', 'answer_c', 'answer_d', 'answer_open', 'correct_answer', 'image'])
|
|
->from($db->quoteName('#__testquestions_questions'))
|
|
->where($db->quoteName('id') . ' IN (' . implode(',', $ids) . ')')
|
|
)->loadObjectList('id');
|
|
|
|
$items = [];
|
|
foreach ($ids as $id) {
|
|
if (isset($rows[$id])) {
|
|
$items[] = $rows[$id];
|
|
}
|
|
}
|
|
|
|
return $items;
|
|
}
|
|
}
|