19 declare(strict_types=1);
72 switch ($amountMode) {
73 case self::QUESTION_AMOUNT_CONFIG_MODE_PER_POOL:
74 case self::QUESTION_AMOUNT_CONFIG_MODE_PER_TEST:
109 foreach ($data_array as $field => $value) {
125 $res = $this->db->queryF(
126 "SELECT * FROM tst_rnd_quest_set_cfg WHERE test_fi = %s",
128 [$this->test_obj->getTestId()]
131 $row = $this->db->fetchAssoc(
$res);
154 $this->db->manipulateF(
155 "DELETE FROM tst_rnd_quest_set_cfg WHERE test_fi = %s",
157 [$this->test_obj->getTestId()]
163 $res = $this->db->queryF(
164 "SELECT COUNT(*) cnt FROM tst_rnd_quest_set_cfg WHERE test_fi = %s",
169 $row = $this->db->fetchAssoc(
$res);
171 return (
bool) $row[
'cnt'];
177 'tst_rnd_quest_set_cfg',
185 'test_fi' => [
'integer', $test_id]
193 'tst_rnd_quest_set_cfg',
195 'test_fi' => [
'integer', $test_id],
217 $sourcePoolDefinitionList->loadDefinitions();
219 foreach ($sourcePoolDefinitionList as $definition) {
220 if ($definition->getQuestionAmount() < 1) {
234 ->savedDefinitionsExist();
240 $sourcePoolDefinitionList->loadDefinitions();
250 $sourcePoolDefinitionList,
251 $stagingPoolQuestionList
254 $buildable = $questionSetBuilder->checkBuildable();
255 $this->buildableMessages = $questionSetBuilder->getCheckMessages();
267 if ($sourcePoolDefinitionList->savedDefinitionsExist()) {
277 $sourcePoolDefinitionList->deleteDefinitions();
284 $stagingPool->reset();
297 $source_pool_definition_list_orig->loadDefinitions();
298 $definition_id_map = $source_pool_definition_list_orig->cloneDefinitionsForTestId($clone_test_obj->
getTestId());
306 $source_pool_definition_list_clone->loadDefinitions();
307 $staging_pool->rebuild($source_pool_definition_list_clone);
308 $source_pool_definition_list_clone->saveDefinitions();
317 foreach ($definitionIdMap as $originalDefinitionId => $cloneDefinitionId) {
318 $originalKey = $this->test_obj->getRefId() .
'_rndSelDef_' . $originalDefinitionId;
319 $mappedKey = $cloneTestOBJ->
getRefId() .
'_rndSelDef_' . $cloneDefinitionId;
320 $cwo->appendMapping($originalKey, $mappedKey);
321 $this->
logger->info(__METHOD__ .
": Added random selection definition id mapping $originalKey <-> $mappedKey");
347 'tst_rnd_quest_set_cfg',
349 'quest_sync_timestamp' => [
'integer', (
int) $timestamp]
352 'test_fi' => [
'integer', $test_id]
364 return $this->test_obj->getAvailableQuestionpools(
381 $definitionList->loadDefinitions();
385 foreach ($definitionList as $definition) {
387 $href = ilLink::_getLink(
$refId,
'qpl');
388 $title = $definition->getPoolTitle();
390 $poolTitles[$definition->getPoolId()] =
"<a href=\"$href\" alt=\"$title\">$title</a>";
393 return implode(
', ', $poolTitles);
setQuestionAmountPerTest(?int $questionAmountPerTest)
getCommaSeparatedSourceQuestionPoolLinks()
isValidQuestionAmountConfigurationMode(string $amountMode)
updateDbRecord(int $test_id)
int $questionAmountPerTest
isResultTaxonomyFilterSupported()
bool $requirePoolsWithHomogeneousScoredQuestions
cloneQuestionSetRelatedData(ilObjTest $clone_test_obj)
doesSelectableQuestionPoolsExist()
updateLastQuestionSyncTimestampForTestId(int $test_id, int $timestamp)
static _getAllReferences(int $id)
get all reference ids for object ID
getTestId()
Gets the database id of the additional test data.
static getInstance(ilDBInterface $db, ilLanguage $lng, TestLogger $logger, ilObjTest $testOBJ, ilTestRandomQuestionSetConfig $questionSetConfig, ilTestRandomQuestionSetSourcePoolDefinitionList $sourcePoolDefinitionList, ilTestRandomQuestionSetStagingPoolQuestionList $stagingPoolQuestionList)
isQuestionAmountConfigurationModePerPool()
isQuestionAmountConfigurationModePerTest()
setLastQuestionSyncTimestamp(int $lastQuestionSyncTimestamp)
const QUESTION_AMOUNT_CONFIG_MODE_PER_POOL
registerClonedSourcePoolDefinitionIdMapping(ilObjTest $cloneTestOBJ, array $definitionIdMap)
getSelectableQuestionPools()
arePoolsWithHomogeneousScoredQuestionsRequired()
string $questionAmountConfigurationMode
buildSourcePoolDefinitionList(ilObjTest $test_obj)
setPoolsWithHomogeneousScoredQuestionsRequired(bool $requirePoolsWithHomogeneousScoredQuestions)
dbRecordExists(int $test_id)
getQuestionAmountPerTest()
isQuestionSetConfigured()
setQuestionAmountConfigurationMode(?string $questionAmountConfigurationMode)
getQuestionAmountConfigurationMode()
removeQuestionSetRelatedData()
doesQuestionSetRelatedDataExist()
getLastQuestionSyncTimestamp()
insertDbRecord(int $test_id)
foreach($mandatory_scripts as $file) $timestamp
int $lastQuestionSyncTimestamp
hasSourcePoolDefinitions()
initFromArray(array $data_array)
cloneToDbForTestId(int $test_id)
const QUESTION_AMOUNT_CONFIG_MODE_PER_TEST
static _getInstance(int $a_copy_id)
isQuestionAmountConfigComplete()
buildStagingPoolBuilder(ilObjTest $test_obj)