/** * Get questions * * @param * @return */ function getQuestions() { global $ilAccess, $ilDB, $lng, $ilPluginAdmin; include_once "./Modules/TestQuestionPool/classes/class.ilObjQuestionPool.php"; $all_types = ilObjQuestionPool::_getSelfAssessmentQuestionTypes(); $all_ids = array(); foreach ($all_types as $k => $v) { $all_ids[] = $v["question_type_id"]; } $questions = array(); if ($ilAccess->checkAccess("read", "", $this->pool_ref_id)) { require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php'; $questionList = new ilAssQuestionList($ilDB, $lng, $ilPluginAdmin); $questionList->setParentObjIdsFilter(array($this->pool_obj_id)); $questionList->load(); $data = $questionList->getQuestionDataArray(); $questions = array(); foreach ($data as $d) { // list only self assessment question types if (in_array($d["question_type_fi"], $all_ids)) { $questions[] = $d; } } } $this->setData($questions); }
/** * forward method */ public function forward() { $this->tabs->setTabActive('settings'); $this->lng->loadLanguageModule('tax'); require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php'; $questionList = new ilAssQuestionList($this->db, $this->lng, $this->pluginAdmin); $questionList->setParentObjIdsFilter(array($this->poolOBJ->getId())); $questionList->load(); require_once 'Services/Taxonomy/classes/class.ilObjTaxonomyGUI.php'; $taxGUI = new ilObjTaxonomyGUI(); $taxGUI->setAssignedObject($this->poolOBJ->getId()); $taxGUI->setMultiple(true); $taxGUI->activateAssignedItemSorting($questionList, 'qpl', $this->poolOBJ->getId(), 'quest'); $this->ctrl->forwardCommand($taxGUI); }
private function initFilteredQuestionList(ilObjTestDynamicQuestionSetConfig $dynamicQuestionSetConfig, ilTestDynamicQuestionSetFilterSelection $filterSelection) { $questionList = new ilAssQuestionList($this->db, $this->lng, $this->pluginAdmin); $questionList->setParentObjIdsFilter(array($dynamicQuestionSetConfig->getSourceQuestionPoolId())); $questionList->setAnswerStatusActiveId($filterSelection->getAnswerStatusActiveId()); if ($dynamicQuestionSetConfig->isAnswerStatusFilterEnabled()) { $questionList->setAnswerStatusFilter($filterSelection->getAnswerStatusSelection()); } if ($dynamicQuestionSetConfig->isTaxonomyFilterEnabled()) { require_once 'Services/Taxonomy/classes/class.ilObjTaxonomy.php'; $questionList->setAvailableTaxonomyIds(ilObjTaxonomy::getUsageOfObject($dynamicQuestionSetConfig->getSourceQuestionPoolId())); foreach ($filterSelection->getTaxonomySelection() as $taxId => $taxNodes) { $questionList->addTaxonomyFilter($taxId, $taxNodes, $dynamicQuestionSetConfig->getSourceQuestionPoolId(), 'qpl'); } } elseif ($dynamicQuestionSetConfig->getOrderingTaxonomyId()) { $questionList->setAvailableTaxonomyIds(array($dynamicQuestionSetConfig->getOrderingTaxonomyId())); } $questionList->setForcedQuestionIds($filterSelection->getForcedQuestionIds()); $questionList->load(); return $questionList; }
/** * @return array */ private function getQuestionsData() { $questionList = new ilAssQuestionList($this->db, $this->lng, $this->pluginAdmin); $questionList->setQuestionInstanceTypeFilter($this->getQuestionInstanceTypeFilter()); $questionList->setExcludeQuestionIdsFilter($this->testOBJ->getExistingQuestions()); $repositoryRootNode = self::REPOSITORY_ROOT_NODE_ID; foreach ($this->getFilterItems() as $item) { if ($item->getValue() !== false) { switch ($item->getPostVar()) { case 'title': case 'description': case 'author': case 'type': case 'parent_title': $questionList->addFieldFilter($item->getPostVar(), $item->getValue()); break; case 'repository_root_node': $repositoryRootNode = $item->getValue(); } } } $parentObjectIds = $this->getQuestionParentObjIds($repositoryRootNode); if (!count($parentObjectIds)) { return array(); } $questionList->setParentObjIdsFilter($parentObjectIds); $questionList->load(); return $questionList->getQuestionDataArray(); }
/** * @param array $taxIds * @global ilRbacSystem $rbacsystem * @global ilDB $ilDB * @global ilLanguage $lng * @global ilPluginAdmin $ilPluginAdmin * @return ilQuestionBrowserTableGUI */ private function buildQuestionBrowserTableGUI($taxIds) { global $rbacsystem, $ilDB, $lng, $ilPluginAdmin; include_once "./Modules/TestQuestionPool/classes/tables/class.ilQuestionBrowserTableGUI.php"; $table_gui = new ilQuestionBrowserTableGUI($this, 'questions', $rbacsystem->checkAccess('write', $_GET['ref_id']) ? true : false, false, $taxIds); $table_gui->setEditable($rbacsystem->checkAccess('write', $_GET['ref_id'])); require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php'; $questionList = new ilAssQuestionList($ilDB, $lng, $ilPluginAdmin); $questionList->setParentObjIdsFilter(array($this->object->getId())); foreach ($table_gui->getFilterItems() as $item) { if (substr($item->getPostVar(), 0, strlen('tax_')) == 'tax_') { $v = $item->getValue(); if (is_array($v) && count($v) && !(int) $v[0]) { continue; } $taxId = substr($item->getPostVar(), strlen('tax_')); $questionList->addTaxonomyFilter($taxId, $item->getValue(), $this->object->getId(), 'qpl'); } elseif ($item->getValue() !== false) { $questionList->addFieldFilter($item->getPostVar(), $item->getValue()); } } if ($this->object->isNavTaxonomyActive() && (int) $_GET['tax_node']) { $questionList->addTaxonomyFilter($this->object->getNavTaxonomyId(), array((int) $_GET['tax_node']), $this->object->getId(), 'qpl'); } $questionList->load(); $data = $questionList->getQuestionDataArray(); $table_gui->setData($data); return $table_gui; }
protected function getFilteredTestResult($active_id, $pass, $considerHiddenQuestions, $considerOptionalQuestions) { global $ilDB, $ilPluginAdmin; $table_gui = $this->buildPassDetailsOverviewTableGUI($this, 'outUserPassDetails'); $table_gui->initFilter(); require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php'; $questionList = new ilAssQuestionList($ilDB, $this->lng, $ilPluginAdmin); $questionList->setParentObjIdsFilter(array($this->object->getId())); $questionList->setQuestionInstanceTypeFilter(ilAssQuestionList::QUESTION_INSTANCE_TYPE_DUPLICATES); foreach ($table_gui->getFilterItems() as $item) { if (substr($item->getPostVar(), 0, strlen('tax_')) == 'tax_') { $v = $item->getValue(); if (is_array($v) && count($v) && !(int) $v[0]) { continue; } $taxId = substr($item->getPostVar(), strlen('tax_')); $questionList->addTaxonomyFilter($taxId, $item->getValue(), $this->object->getId(), 'tst'); } elseif ($item->getValue() !== false) { $questionList->addFieldFilter($item->getPostVar(), $item->getValue()); } } $questionList->load(); $filteredTestResult = array(); $resultData = $this->object->getTestResult($active_id, $pass, false, $considerHiddenQuestions, $considerOptionalQuestions); foreach ($resultData as $resultItemKey => $resultItemValue) { if ($resultItemKey === 'test' || $resultItemKey === 'pass') { continue; } if (!$questionList->isInList($resultItemValue['qid'])) { continue; } $filteredTestResult[] = $resultItemValue; } return $filteredTestResult; }
private static function getQuestionData($testObjId, $questionIds) { global $ilDB, $lng, $ilPluginAdmin; require_once 'Modules/TestQuestionPool/classes/class.ilAssQuestionList.php'; $questionList = new ilAssQuestionList($ilDB, $lng, $ilPluginAdmin); $questionList->setParentObjIdsFilter(array($testObjId)); $questionList->setQuestionInstanceTypeFilter(ilAssQuestionList::QUESTION_INSTANCE_TYPE_DUPLICATES); $questionList->setIncludeQuestionIdsFilter($questionIds); $questionList->load(); return $questionList->getQuestionDataArray(); }