19 declare(strict_types=1);
    49         ?
string $path_to_file = 
'',
    53         $this->db = $DIC[
'ilDB'];
    54         $this->log = $DIC[
'ilLog'];
    55         $this->tree = $DIC[
'tree'];
    56         $this->component_repository = $DIC[
'component.repository'];
    57         $this->questioninfo = $DIC->testQuestionPool()->questionInfo();
    83         xml_set_object($xml_parser, $this);
    84         xml_set_element_handler($xml_parser, 
'handlerBeginTag', 
'handlerEndTag');
    85         xml_set_character_data_handler($xml_parser, 
'handlerCharacterData');
    94             case 'RandomQuestionSetConfig':
    95                 $this->in_random_question_set_config = 
true;
    98             case 'RandomQuestionSetSettings':
    99                 if ($this->in_random_question_set_config !== null) {
   100                     $this->in_random_question_set_settings = 
true;
   102                     $this->attr = $tag_attributes;
   106             case 'RandomQuestionStage':
   107                 if ($this->in_random_question_set_config !== null) {
   108                     $this->in_random_question_stage = 
true;
   112             case 'RandomQuestionStagingPool':
   113                 if ($this->in_random_question_stage !== null) {
   115                     $this->attr = $tag_attributes;
   119             case 'RandomQuestionSelectionDefinitions':
   120                 if ($this->in_random_question_set_config !== null) {
   121                     $this->in_random_question_selection_definitions = 
true;
   125             case 'RandomQuestionSelectionDefinition':
   126                 if ($this->in_random_question_selection_definitions !== null) {
   129                     $this->attr = $tag_attributes;
   133             case 'RandomQuestionSourcePoolTitle':
   134             case 'RandomQuestionSourcePoolPath':
   135                 if ($this->source_pool_definition !== null) {
   145             case 'RandomQuestionSetConfig':
   146                 $this->in_random_question_set_config = 
false;
   149             case 'RandomQuestionSetSettings':
   150                 if ($this->in_random_question_set_config) {
   156             case 'RandomQuestionStage':
   157                 if ($this->in_random_question_set_config) {
   158                     $this->in_random_question_stage = 
false;
   162             case 'RandomQuestionStagingPool':
   163                 if ($this->in_random_question_set_config !== null
   164                     && $this->in_random_question_stage !== null) {
   171             case 'RandomQuestionSelectionDefinitions':
   172                 if ($this->in_random_question_set_config) {
   173                     $this->in_random_question_selection_definitions = 
false;
   177             case 'RandomQuestionSelectionDefinition':
   178                 if ($this->in_random_question_set_config !== null
   179                     && $this->in_random_question_selection_definitions !== null) {
   181                     $this->source_pool_definition->saveToDb();
   186                         (
string) $this->attr[
'id'],
   187                         (
string) $this->source_pool_definition->getId()
   190                     $this->source_pool_definition = null;
   195             case 'RandomQuestionSourcePoolTitle':
   196                 if ($this->source_pool_definition !== null) {
   197                     $this->source_pool_definition->setPoolTitle($this->cdata);
   202             case 'RandomQuestionSourcePoolPath':
   203                 if ($this->source_pool_definition !== null) {
   204                     $this->source_pool_definition->setPoolPath($this->cdata);
   213         if ($char_data != 
"\n") {
   215             $char_data = preg_replace(
"/\t+/", 
" ", $char_data);
   217             $this->cdata .= $char_data;
   228             $this->component_repository,
   233         if (!$question_set_config->isValidQuestionAmountConfigurationMode($attr[
'amountMode'])) {
   235                 'invalid random test question set config amount mode given: "' . $attr[
'amountMode'] . 
'"'   239         $question_set_config->setQuestionAmountConfigurationMode($attr[
'amountMode']);
   240         $question_set_config->setQuestionAmountPerTest((
int) $attr[
'questAmount']);
   241         $question_set_config->setPoolsWithHomogeneousScoredQuestionsRequired((
bool) $attr[
'homogeneous']);
   242         $question_set_config->setLastQuestionSyncTimestamp((
int) $attr[
'synctimestamp']);
   244         $question_set_config->saveToDb();
   249         $old_pool_id = $attr[
'poolId'];
   250         $new_pool_id = $this->db->nextId(
'object_data'); 
   255             (
string) $old_pool_id,
   256             (
string) $new_pool_id
   259         $old_question_ids = explode(
',', $cdata);
   261         foreach ($old_question_ids as $old_question_id) {
   269             $staging_question->setTestId($this->test_obj->getTestId());
   270             $staging_question->setPoolId($new_pool_id);
   271             $staging_question->setQuestionId($new_question_id);
   273             $staging_question->saveQuestionStaging();
   279         $source_pool_id = (
int) $attr[
'poolId'];
   283             (
string) $source_pool_id
   285         $source_pool_definition->
setPoolId($effective_pool_id);
   287         $derive_from_obj_id = 
true;
   289         if (isset($attr[
'ref_id']) && is_numeric($attr[
'ref_id'])) {
   290             if ($source_pool_id === $effective_pool_id) {
   291                 $derive_from_obj_id = 
false;
   292                 $source_pool_definition->
setPoolRefId((
int) $attr[
'ref_id']);
   296         if ($derive_from_obj_id) {
   306         if (isset($attr[
'typeFilter']) && strlen($attr[
'typeFilter']) > 0) {
   311         if (isset($attr[
'tax']) && isset($attr[
'taxNode'])) {
   313                 (
int) $attr[
'tax'] => [
   314                     (
int) $attr[
'taxNode']
   318         } elseif (isset($attr[
'taxFilter']) && strlen($attr[
'taxFilter']) > 0) {
   319             $mappedTaxFilter = unserialize($attr[
'taxFilter']);
 
handlerCharacterData($xml_parser, string $char_data)
 
Readable part of repository interface to ilComponentDataDB. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
handlerBeginTag( $xml_parser, string $tag_name, array $tag_attributes)
 
setPoolQuestionCount(?int $pool_question_count)
 
static _getAllReferences(int $id)
get all reference ids for object ID 
 
setQuestionAmount(?int $question_amount)
 
ilImportMapping $import_mapping
 
importRandomQuestionSetSettings($attr)
 
Base Exception for all Exceptions relating to Modules/Test. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
setMappedTaxonomyFilter(array $filter=[])
set the original taxonomy filter condition 
 
bool $in_random_question_selection_definitions
 
ilComponentRepository $component_repository
 
bool $in_random_question_set_settings
 
importRandomQuestionStagingPool(array $attr, string $cdata)
 
setSequencePosition(int $sequence_position)
 
__construct(?string $path_to_file='', ?bool $throw_exception=false)
 
ILIAS TestQuestionPool QuestionInfoService $questioninfo
 
bool $in_random_question_stage
 
handlerEndTag($xml_parser, string $tag_name)
 
bool $in_random_question_set_config
 
setPoolRefId(?int $pool_ref_id)
 
ilTestRandomQuestionSetSourcePoolDefinition $source_pool_definition
 
setTypeFilterFromTypeTags(array $tags)
Set the type filter from a list of type tags. 
 
importRandomQuestionSourcePoolDefinition(ilTestRandomQuestionSetSourcePoolDefinition $source_pool_definition, $attr)
 
setImportMapping(\ilImportMapping $import_mapping)
 
setTestOBJ(\ilObjTest $test_obj)