1<?php
2
3namespace ILIAS\BackgroundTasks\Dependencies\DependencyMap;
4
5use ILIAS\BackgroundTasks\Dependencies\Injector;
6use ILIAS\BackgroundTasks\Persistence;
7use ILIAS\BackgroundTasks\Task\TaskFactory;
8use ILIAS\DI\Container;
9
10/**
11 * Class BaseDependencyMap
12 *
13 * @package ILIAS\BackgroundTasks\Dependencies
14 *
15 * @author  Oskar Truffer <ot@studer-raimann.ch>
16 */
17class BaseDependencyMap extends EmptyDependencyMap
18{
19    protected $map;
20
21
22    public function __construct()
23    {
24        $this->maps = [[$this, 'resolveBaseDependencies']];
25    }
26
27
28    protected function resolveBaseDependencies(Container $DIC, $fullyQualifiedDomainName, $for)
29    {
30        // wow, why a switch statement and not an array?
31        // because we don't really want type unsafe array access on $DIC.
32        switch ($fullyQualifiedDomainName) {
33            case \ilDBInterface::class:
34                return $DIC->database();
35            case \ilDB::class:
36                return $DIC->database();
37            case \ilRbacAdmin::class:
38                return $DIC->rbac()->admin();
39            case \ilRbacReview::class:
40                return $DIC->rbac()->review();
41            case \ilRbacSystem::class:
42                return $DIC->rbac()->system();
43            case \ilAccessHandler::class:
44                return $DIC->access();
45            case \ilCtrl::class:
46                return $DIC->ctrl();
47            case \ilObjUser::class:
48                return $DIC->user();
49            case \ilTree::class:
50                return $DIC->repositoryTree();
51            case \ilLanguage::class:
52                return $DIC->language();
53            case \ilLoggerFactory::class:
54                return $DIC["ilLoggerFactory"];
55            case \ilLogger::class:
56                return $DIC->logger()->root();
57            case \ilToolbarGUI::class:
58                return $DIC->toolbar();
59            case \ilTabsGUI::class:
60                return $DIC->tabs();
61            case Injector::class:
62                return $DIC->backgroundTasks()->injector();
63            case \ilSetting::class:
64                return $DIC->settings();
65            case \ILIAS\UI\Factory::class:
66                return $DIC->ui()->factory();
67            case \ILIAS\UI\Renderer::class:
68                return $DIC->ui()->renderer();
69            case \ilTemplate::class:
70                return $DIC->ui()->mainTemplate();
71            case Persistence::class:
72                return $DIC->backgroundTasks()->persistence();
73            case TaskFactory::class:
74                return $DIC->backgroundTasks()->taskFactory();
75            case Container::class:
76                return $DIC;
77        }
78    }
79}
80