Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
MediaServiceProvider
n/a
0 / 0
n/a
0 / 0
1
n/a
0 / 0
 __invoke
n/a
0 / 0
n/a
0 / 0
1
1<?php
2
3/**
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; under version 2
7 * of the License (non-upgradable).
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17 *
18 * Copyright (c) 2021-2023 (original work) Open Assessment Technologies SA;
19 */
20
21declare(strict_types=1);
22
23namespace oat\taoMediaManager\model\classes\ServiceProvider;
24
25use oat\generis\model\data\Ontology;
26use oat\generis\model\DependencyInjection\ContainerServiceProviderInterface;
27use oat\oatbox\log\LoggerService;
28use oat\tao\model\accessControl\ActionAccessControl;
29use oat\tao\model\accessControl\PermissionChecker;
30use oat\tao\model\resources\Service\ClassCopierProxy;
31use oat\tao\model\resources\Service\ClassDeleter;
32use oat\tao\model\resources\Service\ClassMetadataCopier;
33use oat\tao\model\resources\Service\ClassMetadataMapper;
34use oat\tao\model\resources\Service\InstanceCopier;
35use oat\tao\model\resources\Service\InstanceCopierProxy;
36use oat\tao\model\resources\Service\InstanceMetadataCopier;
37use oat\tao\model\resources\Service\RootClassesListService;
38use oat\tao\model\resources\Service\ClassCopier as TaoClassCopier;
39use oat\taoMediaManager\model\accessControl\MediaPermissionService;
40use oat\taoMediaManager\model\classes\Copier\AssetClassCopier;
41use oat\taoMediaManager\model\classes\Copier\AssetContentCopier;
42use oat\taoMediaManager\model\classes\Copier\AssetMetadataCopier;
43use oat\taoMediaManager\model\fileManagement\FileManagement;
44use oat\taoMediaManager\model\fileManagement\FileSourceUnserializer;
45use oat\taoMediaManager\model\MediaService;
46use oat\taoMediaManager\model\AssetDeleter;
47use oat\taoMediaManager\model\relation\repository\rdf\RdfMediaRelationRepository;
48use oat\taoMediaManager\model\sharedStimulus\css\repository\StylesheetRepository;
49use oat\taoMediaManager\model\sharedStimulus\css\service\ListStylesheetsService;
50use oat\taoMediaManager\model\sharedStimulus\factory\CommandFactory;
51use oat\taoMediaManager\model\sharedStimulus\service\CopyService;
52use oat\taoMediaManager\model\sharedStimulus\service\StoreService;
53use oat\taoMediaManager\model\sharedStimulus\service\TempFileWriter;
54use oat\taoMediaManager\model\sharedStimulus\specification\SharedStimulusResourceSpecification;
55use oat\taoMediaManager\model\TaoMediaOntology;
56use oat\taoMediaManager\model\Specification\MediaClassSpecification;
57use oat\taoMediaManager\model\transcription\TranscriptionMimeTypesProvider;
58use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
59
60use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
61use function Symfony\Component\DependencyInjection\Loader\Configurator\tagged_iterator;
62
63/**
64 * @codeCoverageIgnore
65 */
66class MediaServiceProvider implements ContainerServiceProviderInterface
67{
68    public function __invoke(ContainerConfigurator $configurator): void
69    {
70        $services = $configurator->services();
71
72        $services
73            ->set(TempFileWriter::class, TempFileWriter::class)
74            ->private();
75
76        $services
77            ->set(CopyService::class, CopyService::class)
78            ->public()
79            ->args(
80                [
81                    service(Ontology::SERVICE_ID),
82                    service(StoreService::class),
83                    service(ListStylesheetsService::class),
84                    service(StylesheetRepository::class),
85                    service(FileSourceUnserializer::class),
86                    service(FileManagement::SERVICE_ID),
87                    service(TempFileWriter::class),
88                ]
89            );
90
91        $services
92            ->set(MediaPermissionService::class, MediaPermissionService::class)
93            ->public()
94            ->args(
95                [
96                    service(ActionAccessControl::class),
97                    service(PermissionChecker::class),
98                ]
99            );
100
101        $services
102            ->set(MediaClassSpecification::class, MediaClassSpecification::class)
103            ->public();
104
105        $services
106            ->get(InstanceMetadataCopier::class)
107            ->call(
108                'addPropertyUriToBlacklist',
109                [
110                    TaoMediaOntology::PROPERTY_LINK
111                ]
112            );
113
114        $services
115            ->set(AssetMetadataCopier::class, AssetMetadataCopier::class)
116            ->args(
117                [
118                    service(InstanceMetadataCopier::class),
119                ]
120            );
121
122        $services
123            ->set(AssetContentCopier::class, AssetContentCopier::class)
124            ->args(
125                [
126                    service(SharedStimulusResourceSpecification::class),
127                    service(CommandFactory::class),
128                    service(CopyService::class),
129                    service(MediaService::class),
130                    service(FileManagement::SERVICE_ID),
131                    DEFAULT_LANG,
132                ]
133            );
134
135        $services
136            ->set(InstanceCopier::class . '::ASSETS', InstanceCopier::class)
137            ->args(
138                [
139                    service(AssetMetadataCopier::class),
140                    service(Ontology::SERVICE_ID)
141                ]
142            )
143            ->call(
144                'withInstanceContentCopier',
145                [
146                    service(AssetContentCopier::class),
147                ]
148            )
149            ->call(
150                'withPermissionCopiers',
151                [
152                    tagged_iterator('tao.copier.permissions'),
153                ]
154            );
155
156        $services
157            ->set(TaoClassCopier::class . '::ASSETS', TaoClassCopier::class)
158            ->share(false)
159            ->args(
160                [
161                    service(RootClassesListService::class),
162                    service(ClassMetadataCopier::class),
163                    service(InstanceCopier::class . '::ASSETS'),
164                    service(ClassMetadataMapper::class),
165                    service(Ontology::SERVICE_ID),
166                ]
167            )
168            ->call(
169                'withPermissionCopiers',
170                [
171                    tagged_iterator('tao.copier.permissions'),
172                ]
173            );
174
175        $services
176            ->set(AssetClassCopier::class, AssetClassCopier::class)
177            ->share(false)
178            ->args(
179                [
180                    service(MediaClassSpecification::class),
181                    service(TaoClassCopier::class . '::ASSETS'),
182                    service(Ontology::SERVICE_ID),
183                ]
184            );
185
186        $services
187            ->get(ClassCopierProxy::class)
188            ->call(
189                'addClassCopier',
190                [
191                    TaoMediaOntology::CLASS_URI_MEDIA_ROOT,
192                    service(AssetClassCopier::class),
193                ]
194            );
195
196        $services
197            ->get(InstanceCopierProxy::class)
198            ->call(
199                'addInstanceCopier',
200                [
201                    TaoMediaOntology::CLASS_URI_MEDIA_ROOT,
202                    service(InstanceCopier::class . '::ASSETS'),
203                ]
204            );
205
206        $services
207            ->set(AssetDeleter::class, AssetDeleter::class)
208            ->public()
209            ->args(
210                [
211                    service(LoggerService::SERVICE_ID),
212                    service(MediaService::class),
213                    service(Ontology::SERVICE_ID),
214                    service(ClassDeleter::class),
215                    service(RdfMediaRelationRepository::class),
216                ]
217            );
218
219
220        $services->set(TranscriptionMimeTypesProvider::class)
221            ->public();
222    }
223}