PluginProbe
User Access Manager / trunk
User Access Manager vtrunk
2.3.20 2.3.19 2.3.18 2.3.17 2.3.16 2.3.15 2.3.14 2.3.13 trunk 0.6 0.6.1 0.6.2 0.7 0.7 Beta 0.7.0.1 0.8 0.8.0.1 0.8.0.2 0.9 0.9.1 0.9.1.1 0.9.1.2 0.9.1.3 0.9.1.4 1.0 All 136 releases
user-access-manager / src / Controller / ControllerFactory.php

ControllerFactory.php in User Access Manager trunk, at src/Controller/ControllerFactory.php

252 lines 8.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 namespace UserAccessManager\Controller;
6
7 use UserAccessManager\Access\AccessHandler;
8 use UserAccessManager\Cache\Cache;
9 use UserAccessManager\Config\MainConfig;
10 use UserAccessManager\Config\WordpressConfig;
11 use UserAccessManager\Controller\Backend\Administration\AboutController;
12 use UserAccessManager\Controller\Backend\BackendController;
13 use UserAccessManager\Controller\Backend\CacheController;
14 use UserAccessManager\Controller\Backend\ObjectMembership\DynamicGroupsController;
15 use UserAccessManager\Controller\Backend\ObjectMembership\ObjectController;
16 use UserAccessManager\Controller\Backend\ObjectMembership\ObjectInformationFactory;
17 use UserAccessManager\Controller\Backend\ObjectMembership\PostObjectController;
18 use UserAccessManager\Controller\Backend\Administration\SettingsController;
19 use UserAccessManager\Controller\Backend\Administration\SetupController;
20 use UserAccessManager\Controller\Backend\ObjectMembership\TermObjectController;
21 use UserAccessManager\Controller\Backend\Administration\UserGroupController;
22 use UserAccessManager\Controller\Backend\ObjectMembership\UserObjectController;
23 use UserAccessManager\Controller\Frontend\FrontendController;
24 use UserAccessManager\Controller\Frontend\Content\PostController;
25 use UserAccessManager\Controller\Frontend\RedirectController;
26 use UserAccessManager\Controller\Frontend\Authentication\ShortCodeController;
27 use UserAccessManager\Controller\Frontend\Content\TermController;
28 use UserAccessManager\Database\Database;
29 use UserAccessManager\File\FileHandler;
30 use UserAccessManager\File\Delivery\FileObjectFactory;
31 use UserAccessManager\Form\FormFactory;
32 use UserAccessManager\Form\FormHelper;
33 use UserAccessManager\Object\ObjectHandler;
34 use UserAccessManager\Object\ObjectMapHandler;
35 use UserAccessManager\Setup\SetupHandler;
36 use UserAccessManager\User\UserHandler;
37 use UserAccessManager\UserGroup\UserGroupAssignmentHandler;
38 use UserAccessManager\UserGroup\UserGroupFactory;
39 use UserAccessManager\UserGroup\UserGroupHandler;
40 use UserAccessManager\Util\DateUtil;
41 use UserAccessManager\Util\Util;
42 use UserAccessManager\Wrapper\Php;
43 use UserAccessManager\Wrapper\Wordpress;
44
45 class ControllerFactory
46 {
47 public function __construct(
48 private Php $php,
49 private Wordpress $wordpress,
50 private Database $database,
51 private WordpressConfig $wordpressConfig,
52 private MainConfig $mainConfig,
53 private Util $util,
54 private DateUtil $dateUtil,
55 private Cache $cache,
56 private ObjectHandler $objectHandler,
57 private ObjectMapHandler $objectMapHandler,
58 private UserHandler $userHandler,
59 private UserGroupHandler $userGroupHandler,
60 private UserGroupFactory $userGroupFactory,
61 private UserGroupAssignmentHandler $userGroupAssignmentHandler,
62 private AccessHandler $accessHandler,
63 private FileHandler $fileHandler,
64 private FileObjectFactory $fileObjectFactory,
65 private SetupHandler $setupHandler,
66 private FormFactory $formFactory,
67 private FormHelper $formHelper,
68 private ObjectInformationFactory $objectInformationFactory
69 ) {
70 }
71
72 public function createBackendController(): BackendController
73 {
74 return new BackendController(
75 $this->php,
76 $this->wordpress,
77 $this->wordpressConfig,
78 $this->userHandler,
79 $this->setupHandler
80 );
81 }
82
83 public function createBackendAboutController(): AboutController
84 {
85 return new AboutController(
86 $this->php,
87 $this->wordpress,
88 $this->wordpressConfig
89 );
90 }
91
92 /**
93 * @template TController of ObjectController
94 * @param class-string<TController> $controllerClass
95 * @return TController
96 */
97 private function createObjectController(string $controllerClass): ObjectController
98 {
99 return new $controllerClass(
100 $this->php,
101 $this->wordpress,
102 $this->wordpressConfig,
103 $this->mainConfig,
104 $this->database,
105 $this->dateUtil,
106 $this->objectHandler,
107 $this->userHandler,
108 $this->userGroupHandler,
109 $this->userGroupAssignmentHandler,
110 $this->accessHandler,
111 $this->objectInformationFactory
112 );
113 }
114
115 public function createBackendObjectController(): ObjectController
116 {
117 return $this->createObjectController(ObjectController::class);
118 }
119
120 public function createBackendCacheController(): CacheController
121 {
122 return new CacheController($this->cache);
123 }
124
125 public function createBackendPostObjectController(): PostObjectController
126 {
127 return $this->createObjectController(PostObjectController::class);
128 }
129
130 public function createBackendTermObjectController(): TermObjectController
131 {
132 return $this->createObjectController(TermObjectController::class);
133 }
134
135 public function createBackendUserObjectController(): UserObjectController
136 {
137 return $this->createObjectController(UserObjectController::class);
138 }
139
140 public function createBackendDynamicGroupsController(): DynamicGroupsController
141 {
142 return $this->createObjectController(DynamicGroupsController::class);
143 }
144
145 public function createBackendSettingsController(): SettingsController
146 {
147 return new SettingsController(
148 $this->php,
149 $this->wordpress,
150 $this->wordpressConfig,
151 $this->mainConfig,
152 $this->cache,
153 $this->fileHandler,
154 $this->formFactory,
155 $this->formHelper
156 );
157 }
158
159 public function createBackendSetupController(): SetupController
160 {
161 return new SetupController(
162 $this->php,
163 $this->wordpress,
164 $this->wordpressConfig,
165 $this->database,
166 $this->setupHandler
167 );
168 }
169
170 public function createBackendUserGroupController(): UserGroupController
171 {
172 return new UserGroupController(
173 $this->php,
174 $this->wordpress,
175 $this->wordpressConfig,
176 $this->userGroupHandler,
177 $this->userGroupFactory,
178 $this->formHelper
179 );
180 }
181
182 public function createFrontendController(): FrontendController
183 {
184 return new FrontendController(
185 $this->php,
186 $this->wordpress,
187 $this->wordpressConfig,
188 $this->mainConfig,
189 $this->accessHandler
190 );
191 }
192
193 public function createFrontendPostController(): PostController
194 {
195 return new PostController(
196 $this->php,
197 $this->wordpress,
198 $this->wordpressConfig,
199 $this->mainConfig,
200 $this->util,
201 $this->objectHandler,
202 $this->userHandler,
203 $this->userGroupHandler,
204 $this->accessHandler,
205 $this->database
206 );
207 }
208
209 public function createFrontendRedirectController(): RedirectController
210 {
211 return new RedirectController(
212 $this->php,
213 $this->wordpress,
214 $this->wordpressConfig,
215 $this->mainConfig,
216 $this->database,
217 $this->util,
218 $this->cache,
219 $this->objectHandler,
220 $this->accessHandler,
221 $this->fileHandler,
222 $this->fileObjectFactory
223 );
224 }
225
226 public function createFrontendShortCodeController(): ShortCodeController
227 {
228 return new ShortCodeController(
229 $this->php,
230 $this->wordpress,
231 $this->wordpressConfig,
232 $this->userGroupHandler
233 );
234 }
235
236 public function createFrontendTermController(): TermController
237 {
238 return new TermController(
239 $this->php,
240 $this->wordpress,
241 $this->wordpressConfig,
242 $this->mainConfig,
243 $this->util,
244 $this->objectHandler,
245 $this->userHandler,
246 $this->userGroupHandler,
247 $this->accessHandler,
248 $this->objectMapHandler
249 );
250 }
251 }
252