ILIAS  trunk Revision v13.0_alpha-52-g21c366bbdd4
Services.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS\ResourceStorage;
22
46
52class Services implements IRSSServices
53{
54 protected Subject $events;
55 protected Manager $manager;
61
65 public function __construct(
66 StorageHandlerFactory $storage_handler_factory,
67 Repositories $repositories,
68 Artifacts $artifacts,
69 LockHandler $lock_handler,
70 FileNamePolicy $file_name_policy,
71 StreamAccess $stream_access,
72 Factory $machine_factory,
73 ?SrcBuilder $src_builder = null,
75 ?ObserverCollection $observers = null,
76 ) {
77 $this->events = new Subject();
78 $src_builder ??= new InlineSrcBuilder();
79 $file_name_policy_stack = new FileNamePolicyStack();
80 $file_name_policy_stack->addPolicy($file_name_policy);
81 $resource_builder = new ResourceBuilder(
82 $storage_handler_factory,
83 $repositories,
84 $lock_handler,
85 $stream_access,
86 $file_name_policy_stack
87 );
88 $collection_builder = new CollectionBuilder(
89 $repositories->getCollectionRepository(),
90 $this->events,
92 $lock_handler
93 );
94 $this->preloader = $preloader ?? new StandardRepositoryPreloader($repositories);
95 $this->manager = new Manager(
96 $resource_builder,
97 $collection_builder,
98 $this->preloader
99 );
100 $this->container_manager = new ContainerManager(
101 $resource_builder,
102 $collection_builder,
103 $this->preloader,
104 $this->events
105 );
106 $this->consumers = new Consumers(
107 new ConsumerFactory(
108 $stream_access,
109 $file_name_policy_stack
110 ),
111 $resource_builder,
112 $collection_builder,
113 $src_builder
114 );
115 $this->collections = new Collections(
116 $resource_builder,
117 $collection_builder,
118 $this->preloader,
119 $this->events
120 );
121
122 $flavour_builder = new FlavourBuilder(
123 $repositories->getFlavourRepository(),
124 $machine_factory,
125 $resource_builder,
126 $storage_handler_factory,
127 $stream_access,
128 $this->events
129 );
130
131 $this->flavours = new Flavours(
132 $flavour_builder,
133 $resource_builder
134 );
135
136 if ($observers !== null) {
137 foreach ($observers as $observer) {
138 $this->events->attach(
139 $observer,
141 );
142 }
143 }
144 }
145
146 public function manage(): Manager
147 {
148 return $this->manager;
149 }
150
152 {
154 }
155
156 public function consume(): Consumers
157 {
158 return $this->consumers;
159 }
160
161 public function collection(): Collections
162 {
163 return $this->collections;
164 }
165
166 public function flavours(): Flavours
167 {
168 return $this->flavours;
169 }
170
171 public function preload(array $identification_strings): void
172 {
173 $this->preloader->preload($identification_strings);
174 }
175
179 public function preloadCollections(array $collection_identification_strings): void
180 {
181 $this->preloader->preloadCollections($collection_identification_strings);
182 }
183
184 public function events(): Subject
185 {
186 return $this->events;
187 }
188}
preloadCollections(array $collection_identification_strings)
Definition: Services.php:179
RepositoryPreloader $preloader
Definition: Services.php:60
preload(array $identification_strings)
Definition: Services.php:171
ContainerManager $container_manager
Definition: Services.php:56
__construct(StorageHandlerFactory $storage_handler_factory, Repositories $repositories, Artifacts $artifacts, LockHandler $lock_handler, FileNamePolicy $file_name_policy, StreamAccess $stream_access, Factory $machine_factory, ?SrcBuilder $src_builder=null, ?RepositoryPreloader $preloader=null, ?ObserverCollection $observers=null,)
Services constructor.
Definition: Services.php:65
@ ALL
event string being used if
Public API interface for the ILIAS Resource Storage Service (IRSS).
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...