19 declare(strict_types=1);
62 $this->src_pool_def_list->loadDefinitions();
65 $this->staging_pool_question_list_by_pool_id = [];
70 $xml_writer->
xmlStartTag(
'RandomQuestionSetConfig');
74 $xml_writer->
xmlEndTag(
'RandomQuestionSetConfig');
84 $this->component_repository,
88 $question_set_config->loadFromDb();
90 $xml_writer->
xmlElement(
'RandomQuestionSetSettings', [
91 'amountMode' => $question_set_config->getQuestionAmountConfigurationMode(),
92 'questAmount' => $question_set_config->getQuestionAmountPerTest(),
93 'homogeneous' => $question_set_config->arePoolsWithHomogeneousScoredQuestionsRequired(),
94 'synctimestamp' => $question_set_config->getLastQuestionSyncTimestamp()
102 foreach ($this->src_pool_def_list->getInvolvedSourcePoolIds() as $pool_id) {
105 $xml_writer->
xmlStartTag(
'RandomQuestionStagingPool', [
'poolId' => $pool_id]);
106 $xml_writer->
xmlData(implode(
',', $question_list->getQuestions()));
107 $xml_writer->
xmlEndTag(
'RandomQuestionStagingPool');
110 $xml_writer->
xmlEndTag(
'RandomQuestionStage');
115 $xml_writer->
xmlStartTag(
'RandomQuestionSelectionDefinitions');
117 foreach ($this->src_pool_def_list as $definition) {
119 'id' => $definition->getId(),
120 'ref_id' => $definition->getPoolRefId(),
121 'poolId' => $definition->getPoolId(),
122 'questAmount' => $definition->getQuestionAmount() ??
'',
123 'poolQuestCount' => $definition->getPoolQuestionCount(),
124 'position' => $definition->getSequencePosition(),
125 'typeFilter' => implode(
',', $definition->getTypeFilterAsTypeTags()),
130 $mappedTaxFilter = $definition->getMappedTaxonomyFilter();
131 if (is_array($mappedTaxFilter) && count($mappedTaxFilter) > 0) {
132 $attributes[
'taxFilter'] = serialize($mappedTaxFilter);
135 $xml_writer->
xmlStartTag(
'RandomQuestionSelectionDefinition', $attributes);
136 $xml_writer->
xmlElement(
'RandomQuestionSourcePoolTitle', null, $definition->getPoolTitle());
137 $xml_writer->
xmlElement(
'RandomQuestionSourcePoolPath', null, $definition->getPoolPath());
138 $xml_writer->
xmlEndTag(
'RandomQuestionSelectionDefinition');
141 $xml_writer->
xmlEndTag(
'RandomQuestionSelectionDefinitions');
146 $question_qti_xml =
'';
148 foreach ($this->src_pool_def_list->getInvolvedSourcePoolIds() as $pool_id) {
151 foreach ($question_list as $question_id) {
156 return $question_qti_xml;
166 foreach ($this->src_pool_def_list->getInvolvedSourcePoolIds() as $pool_id) {
169 foreach ($question_list as $question_id) {
170 $question_ids[] = $question_id;
174 return $question_ids;
179 if (!isset($this->staging_pool_question_list_by_pool_id[$pool_id])) {
181 $question_list->setTestId($this->test_obj->getTestId());
182 $question_list->setPoolId($pool_id);
183 $question_list->loadQuestions();
185 $this->staging_pool_question_list_by_pool_id[$pool_id] = $question_list;
188 return $this->staging_pool_question_list_by_pool_id[$pool_id];
Readable part of repository interface to ilComponentDataDB.
xmlData(string $data, bool $encode=true, bool $escape=true)
Writes data.
Class ChatMainBarProvider .
getQuestionQtiXml($questionId)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$staging_pool_question_list_by_pool_id
populateCommonSettings(ilXmlWriter $xml_writer)
xmlEndTag(string $tag)
Writes an endtag.
populateSelectionDefinitions(ilXmlWriter $xml_writer)
ilTestRandomQuestionSetSourcePoolDefinitionList $src_pool_def_list
populateQuestionSetConfigXml(ilXmlWriter $xml_writer)
xmlStartTag(string $tag, ?array $attrs=null, bool $empty=false, bool $encode=true, bool $escape=true)
Writes a starttag.
populateQuestionStages(ilXmlWriter $xml_writer)
xmlElement(string $tag, $attrs=null, $data=null, $encode=true, $escape=true)
Writes a basic element (no children, just textual content)
__construct(\ilObjTest $test_obj, private ilLanguage $lng, private ilLogger $logger, private ilTree $tree, private ilComponentRepository $component_repository, protected \ILIAS\TestQuestionPool\QuestionInfoService $questioninfo, string $mode="xml")
getLoadedStagingPoolQuestionList(int $pool_id)