ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
LocalDIC.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\ILIASObject;
22
23use ILIAS\ILIASObject\Properties\ObjectTypeSpecificProperties\Factory as ObjectTypeSpecificPropertiesFactory;
25use ILIAS\ILIASObject\Properties\AdditionalProperties\Repository as AdditionalPropertiesRepository;
26use ILIAS\ILIASObject\Properties\AdditionalProperties\LegacyRepository as AdditionalPropertiesLegacyRepository;
27use ILIAS\ILIASObject\Properties\CoreProperties\Repository as CorePropertiesRepository;
28use ILIAS\ILIASObject\Properties\CoreProperties\CachedRepository as CorePropertiesCachedRepository;
36use Pimple\Container as PimpleContainer;
37use ILIAS\DI\Container as ILIASContainer;
38
39class LocalDIC extends PimpleContainer
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'],
80 $c['properties.object_type_specific.factory']
81 );
82
83 $this['properties.multi_manipulator'] = fn($c): MultiPropertiesManipulator
85 $c['properties.object_reference.repositoy'],
86 $c['properties.aggregator'],
87 $DIC['lng'],
88 $DIC['ilCtrl'],
89 $DIC['user']->getLoggedInUser(),
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()) ?
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}
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:36
Builds a Color from either hex- or rgb values.
Definition: Factory.php:31
static LocalDIC $dic
Definition: LocalDIC.php:41
init(ILIASContainer $DIC)
Definition: LocalDIC.php:54
$c
Definition: deliver.php:25
$dic
Definition: ltiresult.php:33
global $DIC
Definition: shib_login.php:26