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