ILIAS  trunk Revision v12.0_alpha-16-g3e876e53c80
ilConditionsImporter Class Reference
+ Inheritance diagram for ilConditionsImporter:
+ Collaboration diagram for ilConditionsImporter:

Public Member Functions

 init ()
 
 importXmlRepresentation (string $a_entity, string $a_id, string $a_xml, ilImportMapping $a_mapping)
 
- Public Member Functions inherited from ilXmlImporter
 __construct ()
 
 setImport (ilImport $a_val)
 
 getImport ()
 
 init ()
 
 setInstallId (string $a_val)
 
 getInstallId ()
 
 setInstallUrl (string $a_val)
 
 getInstallUrl ()
 
 setSchemaVersion (string $a_val)
 
 getSchemaVersion ()
 
 setImportDirectory (string $a_val)
 
 getImportDirectory ()
 
 setSkipEntities (array $a_val)
 
 getSkipEntities ()
 
 exportedFromSameInstallation ()
 
 importXmlRepresentation (string $a_entity, string $a_id, string $a_xml, ilImportMapping $a_mapping)
 
 finalProcessing (ilImportMapping $a_mapping)
 
 afterContainerImportProcessing (ilImportMapping $mapping)
 

Protected Member Functions

 determineRootIdOfImportTree (ilImportMapping $mapping)
 
 updateInfosWithMapping (InfoCollection $infos, ilImportMapping $mapping)
 
 updateConditionsWithMapping (array $conditions, ilImportMapping $mapping)
 
 countObligatory (array $conditions)
 
 getNewRefId (int $old_ref_id, ilImportMapping $mapping)
 

Protected Attributes

const string ENTITY = 'cond'
 
ConditionExportFactory $factory
 
- Protected Attributes inherited from ilXmlImporter
array $skip_entities = array()
 
ilImport $imp
 
string $install_id
 
string $install_url
 
string $schema_version
 
string $import_directory
 

Detailed Description

Definition at line 24 of file class.ilConditionsImporter.php.

Member Function Documentation

◆ countObligatory()

ilConditionsImporter::countObligatory ( array  $conditions)
protected
Parameters
ilCondition[]$conditions

Definition at line 143 of file class.ilConditionsImporter.php.

145 : int {
146 $count = 0;
147 foreach ($conditions as $condition) {
148 if ($condition->getObligatory()) {
149 $count++;
150 }
151 }
152 return $count;
153 }

◆ determineRootIdOfImportTree()

ilConditionsImporter::determineRootIdOfImportTree ( ilImportMapping  $mapping)
protected

Definition at line 59 of file class.ilConditionsImporter.php.

61 : int {
62 // $root_id relies on the fact that the smallest obj_id belongs to the first imported
63 // object, wich is the root of the imported object tree
64 return (int) min(array_keys($mapping->getAllMappings()['components/ILIAS/Container']['objs']));
65 }

◆ getNewRefId()

ilConditionsImporter::getNewRefId ( int  $old_ref_id,
ilImportMapping  $mapping 
)
protected

Definition at line 155 of file class.ilConditionsImporter.php.

158 : int|null {
159 $new_ref_id = $mapping->getMapping('components/ILIAS/Container', 'refs', (string) $old_ref_id);
160 return is_null($new_ref_id) ? null : (int) $new_ref_id;
161 }
getMapping(string $a_comp, string $a_entity, string $a_old_id)

◆ importXmlRepresentation()

ilConditionsImporter::importXmlRepresentation ( string  $a_entity,
string  $a_id,
string  $a_xml,
ilImportMapping  $a_mapping 
)

Reimplemented from ilXmlImporter.

Definition at line 36 of file class.ilConditionsImporter.php.

41 : void {
42 if ($a_entity !== self::ENTITY) {
43 return;
44 }
45 $root_id = $this->determineRootIdOfImportTree($a_mapping);
46 if ($root_id !== (int) $a_id) {
47 return;
48 }
49 $reader = $this->factory->xmlReader();
50 $infos = $reader->readString($a_xml);
51 if ($infos->count() === 0) {
52 return;
53 }
54 $updated_infos = $this->updateInfosWithMapping($infos, $a_mapping);
55 $repository = $this->factory->repository();
56 $repository->writeByInfos($updated_infos);
57 }
factory()
updateInfosWithMapping(InfoCollection $infos, ilImportMapping $mapping)
determineRootIdOfImportTree(ilImportMapping $mapping)

◆ init()

ilConditionsImporter::init ( )

Reimplemented from ilXmlImporter.

Definition at line 29 of file class.ilConditionsImporter.php.

29 : void
30 {
31 global $DIC;
32 $this->factory = new ConditionExportFactory($DIC->database());
34 }
global $DIC
Definition: shib_login.php:26

References $DIC, factory(), and init().

+ Here is the call graph for this function:

◆ updateConditionsWithMapping()

ilConditionsImporter::updateConditionsWithMapping ( array  $conditions,
ilImportMapping  $mapping 
)
protected
Parameters
ilCondition[]$conditions
Returns
ilCondition[]

Definition at line 110 of file class.ilConditionsImporter.php.

113 : array {
114 $updated_conditions = [];
115 foreach ($conditions as $condition) {
116 $new_trigger_ref_id = $this->getNewRefId(
117 $condition->getTrigger()->getRefId(),
118 $mapping
119 );
120 if (is_null($new_trigger_ref_id)) {
121 continue;
122 }
123 $new_trigger_obj_id = ilObject::_lookupObjId($new_trigger_ref_id);
124 $trigger = new ilConditionTrigger(
125 $new_trigger_ref_id,
126 $new_trigger_obj_id,
127 $condition->getTrigger()->getType()
128 );
129 $updated_conditions[] = (new ilCondition(
130 $trigger,
131 $condition->getOperator(),
132 $condition->getValue()
133 ))
134 ->withObligatory($condition->getObligatory())
135 ->withId(-1);
136 }
137 return $updated_conditions;
138 }
Represents a condition trigger object.
Condition class.
getNewRefId(int $old_ref_id, ilImportMapping $mapping)
static _lookupObjId(int $ref_id)

References ilObject\_lookupObjId().

+ Here is the call graph for this function:

◆ updateInfosWithMapping()

ilConditionsImporter::updateInfosWithMapping ( InfoCollection  $infos,
ilImportMapping  $mapping 
)
protected

Definition at line 67 of file class.ilConditionsImporter.php.

71 $updated_infos = $this->factory->infoCollection();
72 foreach ($infos as $info) {
73 $new_ref_id = $this->getNewRefId(
74 $info->getReferenceId(),
75 $mapping
76 );
77 if (is_null($new_ref_id)) {
78 continue;
79 }
80 $new_obj_id = ilObject::_lookupObjId($new_ref_id);
81 $conditions = $this->updateConditionsWithMapping(
82 $info->getConditionSet()->getConditions(),
83 $mapping
84 );
85 $obligatory_count = $this->countObligatory($conditions);
86 $conditions_count = count($conditions);
87 $num_obligatory = ($conditions_count - $obligatory_count) < 2
88 ? 0
89 : min($info->getConditionSet()->getNumObligatory(), $conditions_count - 1);
90 $condition_set = (new ilConditionSet($conditions))
91 ->withHiddenStatus($info->getConditionSet()->getHiddenStatus())
92 ->withNumObligatory($num_obligatory);
93 if ($obligatory_count === $conditions_count) {
94 $condition_set = $condition_set->withAllObligatory();
95 }
96 $updated_infos = $updated_infos->withInfo(
97 $info
98 ->withConditionSet($condition_set)
99 ->withObjectId($new_obj_id)
100 ->withReferenceId($new_ref_id)
101 );
102 }
103 return $updated_infos;
104 }
Condition set Note: This object currently focuses on repository objects as targets.
updateConditionsWithMapping(array $conditions, ilImportMapping $mapping)
$info
Definition: entry_point.php:21

References $info, and ilObject\_lookupObjId().

+ Here is the call graph for this function:

Field Documentation

◆ $factory

ConditionExportFactory ilConditionsImporter::$factory
protected

Definition at line 27 of file class.ilConditionsImporter.php.

◆ ENTITY

const string ilConditionsImporter::ENTITY = 'cond'
protected

Definition at line 26 of file class.ilConditionsImporter.php.


The documentation for this class was generated from the following file: