private function populateNewQuestionSelectionRuleInputs()
 {
     $availablePools = $this->questionSetConfig->getSelectableQuestionPools();
     require_once 'Services/Form/classes/class.ilSelectInputGUI.php';
     $poolSelection = new ilSelectInputGUI(null, 'quest_pool_id');
     $poolSelection->setOptions($this->buildSourcePoolSelectOptionsArray($availablePools));
     $this->addInputItem($poolSelection, true);
     $this->addFormButton($this->lng->txt('tst_rnd_quest_set_tb_add_pool_btn'), ilTestRandomQuestionSetConfigGUI::CMD_SHOW_CREATE_SRC_POOL_DEF_FORM);
 }
 public function build()
 {
     $availablePools = $this->testOBJ->getAvailableQuestionpools(true, $this->questionSetConfig->arePoolsWithHomogeneousScoredQuestionsRequired(), false, true, true);
     require_once 'Services/Form/classes/class.ilSelectInputGUI.php';
     $poolSelection = new ilSelectInputGUI(null, 'quest_pool_id');
     $poolSelection->setOptions($this->buildSourcePoolSelectOptionsArray($availablePools));
     $this->addInputItem($poolSelection, true);
     $this->setFormAction($this->ctrl->getFormAction($this->questionSetConfigGUI));
     $this->addFormButton($this->lng->txt('tst_rnd_quest_set_tb_add_pool_btn'), ilTestRandomQuestionSetConfigGUI::CMD_SHOW_CREATE_SRC_POOL_DEF_FORM);
 }
 /**
  * @param $currentRequestCmd
  * @return bool
  */
 private function isQuestionAmountConfigPerTestHintRequired($currentRequestCmd)
 {
     if ($currentRequestCmd != self::CMD_SHOW_SRC_POOL_DEF_LIST) {
         return false;
     }
     if (!$this->questionSetConfig->isQuestionAmountConfigurationModePerTest()) {
         return false;
     }
     return true;
 }
 private function handleConfigurationStateMessages()
 {
     if (!$this->questionSetConfig->isQuestionAmountConfigComplete()) {
         $infoMessage = $this->lng->txt('tst_msg_rand_quest_set_incomplete_quest_amount_cfg');
     } elseif (!$this->questionSetConfig->hasSourcePoolDefinitions()) {
         $infoMessage = $this->lng->txt('tst_msg_rand_quest_set_no_src_pool_defs');
     } elseif (!$this->questionSetConfig->isQuestionSetBuildable()) {
         $infoMessage = $this->lng->txt('tst_msg_rand_quest_set_pass_not_buildable');
     } else {
         $syncDate = new ilDateTime($this->questionSetConfig->getLastQuestionSyncTimestamp(), IL_CAL_UNIX);
         $infoMessage = sprintf($this->lng->txt('tst_msg_rand_quest_set_stage_pool_last_sync'), ilDatePresentation::formatDate($syncDate));
     }
     ilUtil::sendInfo($infoMessage);
 }
 public function save()
 {
     $this->questionSetConfig->setPoolsWithHomogeneousScoredQuestionsRequired($this->getItemByPostVar('quest_points_equal_per_pool')->getChecked());
     switch ($this->getItemByPostVar('quest_amount_cfg_mode')->getValue()) {
         case ilTestRandomQuestionSetConfig::QUESTION_AMOUNT_CONFIG_MODE_PER_TEST:
             $this->questionSetConfig->setQuestionAmountConfigurationMode($this->getItemByPostVar('quest_amount_cfg_mode')->getValue());
             $this->questionSetConfig->setQuestionAmountPerTest($this->getItemByPostVar('quest_amount_per_test')->getValue());
             break;
         case ilTestRandomQuestionSetConfig::QUESTION_AMOUNT_CONFIG_MODE_PER_POOL:
             $this->questionSetConfig->setQuestionAmountConfigurationMode($this->getItemByPostVar('quest_amount_cfg_mode')->getValue());
             $this->questionSetConfig->setQuestionAmountPerTest(null);
             break;
     }
     return $this->questionSetConfig->saveToDb($this->testOBJ->getTestId());
 }
 public function applySubmit(ilTestRandomQuestionSetSourcePoolDefinition $sourcePoolDefinition, $availableTaxonomyIds)
 {
     switch (true) {
         case $this->getItemByPostVar('source_pool_filter_tax') === null:
         case !in_array($this->getItemByPostVar('filter_tax')->getValue(), $availableTaxonomyIds):
             $sourcePoolDefinition->setOriginalFilterTaxId(null);
             $sourcePoolDefinition->setOriginalFilterTaxNodeId(null);
             break;
         default:
             $taxId = $this->getItemByPostVar('filter_tax')->getValue();
             $sourcePoolDefinition->setOriginalFilterTaxId($taxId);
             $sourcePoolDefinition->setOriginalFilterTaxNodeId($this->getItemByPostVar("filter_tax_{$taxId}")->getValue());
     }
     if ($this->questionSetConfig->isQuestionAmountConfigurationModePerPool()) {
         $sourcePoolDefinition->setQuestionAmount($this->getItemByPostVar('question_amount_per_pool')->getValue());
     }
 }
Beispiel #7
0
 /**
  * Returns the number of questions in the test
  *
  * @return integer The number of questions
  * @access	public
  */
 function getQuestionCount()
 {
     $num = 0;
     if ($this->isRandomTest()) {
         global $tree, $ilDB, $ilPluginAdmin;
         $questionSetConfig = new ilTestRandomQuestionSetConfig($tree, $ilDB, $ilPluginAdmin, $this);
         $questionSetConfig->loadFromDb();
         if ($questionSetConfig->isQuestionAmountConfigurationModePerPool()) {
             require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionList.php';
             require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetBuilderWithAmountPerPool.php';
             require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionFactory.php';
             $sourcePoolDefinitionList = new ilTestRandomQuestionSetSourcePoolDefinitionList($ilDB, $this, new ilTestRandomQuestionSetSourcePoolDefinitionFactory($ilDB, $this));
             $sourcePoolDefinitionList->loadDefinitions();
             $num = $sourcePoolDefinitionList->getQuestionAmount();
         } else {
             $num = $questionSetConfig->getQuestionAmountPerTest();
         }
     } else {
         $num = count($this->questions);
     }
     return $num;
 }
 public static final function getInstance(ilDB $db, ilObjTest $testOBJ, ilTestRandomQuestionSetConfig $questionSetConfig, ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList, ilTestRandomQuestionSetStagingPoolQuestionList $stagingPoolQuestionList)
 {
     if ($questionSetConfig->isQuestionAmountConfigurationModePerPool()) {
         require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetBuilderWithAmountPerPool.php';
         return new ilTestRandomQuestionSetBuilderWithAmountPerPool($db, $testOBJ, $questionSetConfig, $sourcePoolDefinitionList, $stagingPoolQuestionList);
     }
     require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetBuilderWithAmountPerTest.php';
     return new ilTestRandomQuestionSetBuilderWithAmountPerTest($db, $testOBJ, $questionSetConfig, $sourcePoolDefinitionList, $stagingPoolQuestionList);
 }
 protected function generateRandomTestPassForActiveUser()
 {
     global $tree, $ilDB, $ilPluginAdmin;
     require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetConfig.php';
     $questionSetConfig = new ilTestRandomQuestionSetConfig($tree, $ilDB, $ilPluginAdmin, $this->object);
     $questionSetConfig->loadFromDb();
     require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionFactory.php';
     $sourcePoolDefinitionFactory = new ilTestRandomQuestionSetSourcePoolDefinitionFactory($ilDB, $this->object);
     require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetSourcePoolDefinitionList.php';
     $sourcePoolDefinitionList = new ilTestRandomQuestionSetSourcePoolDefinitionList($ilDB, $this->object, $sourcePoolDefinitionFactory);
     $sourcePoolDefinitionList->loadDefinitions();
     $this->processLocker->requestRandomPassBuildLock($sourcePoolDefinitionList->hasTaxonomyFilters());
     if (!$this->performTearsAndAngerBrokenConfessionChecks()) {
         require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetStagingPoolQuestionList.php';
         $stagingPoolQuestionList = new ilTestRandomQuestionSetStagingPoolQuestionList($ilDB, $ilPluginAdmin);
         require_once 'Modules/Test/classes/class.ilTestRandomQuestionSetBuilder.php';
         $questionSetBuilder = ilTestRandomQuestionSetBuilder::getInstance($ilDB, $this->object, $questionSetConfig, $sourcePoolDefinitionList, $stagingPoolQuestionList);
         $questionSetBuilder->performBuild($this->testSession);
     }
     $this->processLocker->releaseRandomPassBuildLock();
 }