19declare(strict_types=1);
26 protected const string ENTITY =
'cond';
29 public function init(): void
32 $this->
factory =
new ConditionExportFactory(
$DIC->database());
46 if ($root_id !== (
int) $a_id) {
49 $reader = $this->
factory->xmlReader();
50 $infos = $reader->readString($a_xml);
51 if ($infos->count() === 0) {
55 $repository = $this->
factory->repository();
56 $repository->writeByInfos($updated_infos);
64 return (
int) min(array_keys($mapping->getAllMappings()[
'components/ILIAS/Container'][
'objs']));
71 $updated_infos = $this->
factory->infoCollection();
72 foreach ($infos as
$info) {
73 $new_ref_id = $this->getNewRefId(
74 $info->getReferenceId(),
77 if (is_null($new_ref_id)) {
81 $conditions = $this->updateConditionsWithMapping(
82 $info->getConditionSet()->getConditions(),
85 $obligatory_count = $this->countObligatory($conditions);
86 $conditions_count = count($conditions);
87 $num_obligatory = ($conditions_count - $obligatory_count) < 2
89 : min(
$info->getConditionSet()->getNumObligatory(), $conditions_count - 1);
91 ->withHiddenStatus(
$info->getConditionSet()->getHiddenStatus())
92 ->withNumObligatory($num_obligatory);
93 if ($obligatory_count === $conditions_count) {
94 $condition_set = $condition_set->withAllObligatory();
96 $updated_infos = $updated_infos->withInfo(
98 ->withConditionSet($condition_set)
99 ->withObjectId($new_obj_id)
100 ->withReferenceId($new_ref_id)
103 return $updated_infos;
114 $updated_conditions = [];
115 foreach ($conditions as $condition) {
116 $new_trigger_ref_id = $this->getNewRefId(
117 $condition->getTrigger()->getRefId(),
120 if (is_null($new_trigger_ref_id)) {
127 $condition->getTrigger()->getType()
131 $condition->getOperator(),
132 $condition->getValue()
134 ->withObligatory($condition->getObligatory())
137 return $updated_conditions;
147 foreach ($conditions as $condition) {
148 if ($condition->getObligatory()) {
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;
Condition set Note: This object currently focuses on repository objects as targets.
Represents a condition trigger object.
updateInfosWithMapping(InfoCollection $infos, ilImportMapping $mapping)
getNewRefId(int $old_ref_id, ilImportMapping $mapping)
updateConditionsWithMapping(array $conditions, ilImportMapping $mapping)
countObligatory(array $conditions)
determineRootIdOfImportTree(ilImportMapping $mapping)
importXmlRepresentation(string $a_entity, string $a_id, string $a_xml, ilImportMapping $a_mapping)
ConditionExportFactory $factory
static _lookupObjId(int $ref_id)
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
if(!file_exists('../ilias.ini.php'))