ILIAS  trunk Revision v11.0_alpha-2638-g80c1d007f79
LocalDIC.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
21 namespace ILIAS\ILIASObject;
22 
23 use ILIAS\ILIASObject\Properties\ObjectTypeSpecificProperties\Factory as ObjectTypeSpecificPropertiesFactory;
25 use ILIAS\ILIASObject\Properties\AdditionalProperties\Repository as AdditionalPropertiesRepository;
26 use ILIAS\ILIASObject\Properties\AdditionalProperties\LegacyRepository as AdditionalPropertiesLegacyRepository;
27 use ILIAS\ILIASObject\Properties\CoreProperties\Repository as CorePropertiesRepository;
28 use ILIAS\ILIASObject\Properties\CoreProperties\CachedRepository as CorePropertiesCachedRepository;
31 use ILIAS\ILIASObject\Properties\ObjectReferenceProperties\CachedRepository as ObjectReferencePropertiesRepository;
38 
40 {
41  private static ?LocalDIC $dic = null;
42 
43  public static function dic(): self
44  {
45  if (self::$dic === null) {
46  global $DIC;
47  self::$dic = new LocalDIC();
48  self::$dic->init($DIC);
49  }
50 
51  return self::$dic;
52  }
53 
54  private function init(ILIASContainer $DIC): void
55  {
56  $this['settings.common'] = fn($c): \ilObjectCommonSettings => new \ilObjectCommonSettings(
57  $DIC['lng'],
58  $DIC['upload'],
59  $DIC['resource_storage'],
60  $DIC['http'],
61  $c['properties.additional.tile_image.stackholder'],
62  $c['properties.additional.tile_image.flavour']
63  );
64 
65  $this['properties.aggregator'] = fn($c): Aggregator => new Aggregator(
66  $c['properties.core.repository'],
67  $c['properties.additional.repository'],
68  $c['properties.translations.repository'],
69  $c['properties.object_type_specific.factory'],
70  $DIC['learning_object_metadata']
71  );
72 
73  $this['properties.core.repository'] = fn($c): CorePropertiesRepository
74  => new CorePropertiesCachedRepository(
75  $DIC['ilDB'],
76  $DIC['objDefinition'],
77  $DIC['resource_storage'],
78  $c['properties.additional.tile_image.stackholder'],
79  new FlavourDefinition(),
80  $c['properties.object_type_specific.factory']
81  );
82 
83  $this['properties.multi_manipulator'] = fn($c): MultiPropertiesManipulator
84  => new MultiPropertiesManipulator(
85  $c['properties.object_reference.repositoy'],
86  $c['properties.aggregator'],
87  $DIC['lng'],
88  $DIC['ilCtrl'],
89  $DIC['ilUser'],
90  $DIC['ui.factory'],
91  $DIC['tpl'],
92  $DIC['refinery']
93  );
94 
95  $this['properties.additional.repository'] = fn($c): AdditionalPropertiesRepository
96  => new AdditionalPropertiesLegacyRepository(
97  $DIC['object.customicons.factory'],
98  $c['properties.object_type_specific.factory']
99  );
100 
101  $this['properties.additional.tile_image.stackholder'] = static fn($c): Stakeholder
102  => new Stakeholder();
103 
104  $this['properties.additional.tile_image.flavour'] = static fn($c): FlavourDefinition
105  => new FlavourDefinition();
106 
107  $this['properties.object_type_specific.factory'] = fn($c): ObjectTypeSpecificPropertiesFactory
108  => new ObjectTypeSpecificPropertiesFactory(
109  is_readable(ArtifactObjective::PATH()) ?
110  include ArtifactObjective::PATH()
111  : [],
112  $DIC['ilDB']
113  );
114 
115  $this['properties.object_reference.repositoy'] = fn($c): ObjectReferencePropertiesRepository
116  => new ObjectReferencePropertiesRepository(
117  $c['properties.object_reference.availability_period.repository'],
118  $DIC['ilDB']
119  );
120 
121  $this['properties.object_reference.availability_period.repository'] = fn($c): AvailabilityPeriodRepository
122  => new AvailabilityPeriodRepository(
123  $DIC['ilDB'],
124  $DIC['tree']
125  );
126  $this['properties.translations.repository'] = fn($c): TranslationsRepository
127  => new TranslationsRepository(
128  $DIC['ilDB']
129  );
130  }
131 }
static LocalDIC $dic
Definition: LocalDIC.php:41
$c
Definition: deliver.php:25
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
init(ILIASContainer $DIC)
Definition: LocalDIC.php:54
global $DIC
Definition: shib_login.php:26
Builds data types.
Definition: Factory.php:35
$dic
Definition: result.php:31