/**
  * 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();
 }