Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
92.22% |
83 / 90 |
|
91.38% |
53 / 58 |
CRAP | |
0.00% |
0 / 1 |
WithUtilsTrait | |
92.22% |
83 / 90 |
|
91.38% |
53 / 58 |
60.64 | |
0.00% |
0 / 1 |
setMailer | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
setMessageBus | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
authUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setAuthUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
dateUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setDateUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
dbUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setDbUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
devDataUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setDevDataUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
emailUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setEmailUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
entityManager | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setEntityManager | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
entityUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setEntityUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
envUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setEnvUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
generalUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setGeneralUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
htmlUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setHtmlUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
httpUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setHttpUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
idUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setIdUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
imageUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setImageUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
log | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setLog | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
mapUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setMapUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
captchaUtils | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
setCaptchaUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
session | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
createSession | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
setSession | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
solvFetcher | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setSolvFetcher | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
stravaUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setStravaUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
symfonyUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setSymfonyUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
telegramUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setTelegramUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
termineUtils | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
setTermineUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
uploadUtils | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setUploadUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
getParams | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
createGetParams | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setGetParams | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
server | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
createServer | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
setServer | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getAllUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
setAllUtils | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
getOrCreate | |
100.00% |
8 / 8 |
|
100.00% |
1 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace Olz\Utils; |
4 | |
5 | use Doctrine\ORM\EntityManagerInterface; |
6 | use Olz\Captcha\Utils\CaptchaUtils; |
7 | use Olz\Fetchers\SolvFetcher; |
8 | use Olz\Termine\Utils\TermineUtils; |
9 | use Psr\Log\LoggerAwareTrait; |
10 | use Psr\Log\LoggerInterface; |
11 | use Symfony\Component\Mailer\MailerInterface; |
12 | use Symfony\Component\Messenger\MessageBusInterface; |
13 | use Symfony\Contracts\Service\Attribute\Required; |
14 | |
15 | trait WithUtilsTrait { |
16 | use LoggerAwareTrait; |
17 | |
18 | // --- Symfony dependency injection --- |
19 | |
20 | protected MailerInterface $mailer; |
21 | |
22 | #[Required] |
23 | public function setMailer(MailerInterface $mailer): void { |
24 | $this->mailer = $mailer; |
25 | } |
26 | |
27 | protected MessageBusInterface $messageBus; |
28 | |
29 | #[Required] |
30 | public function setMessageBus(MessageBusInterface $messageBus): void { |
31 | $this->messageBus = $messageBus; |
32 | } |
33 | |
34 | // --- OLZ dependency injection --- |
35 | |
36 | /** |
37 | * @var array<string> |
38 | */ |
39 | public static $ALL_UTILS = [ |
40 | 'authUtils', |
41 | 'dateUtils', |
42 | 'dbUtils', |
43 | 'devDataUtils', |
44 | 'emailUtils', |
45 | 'entityManager', |
46 | 'entityUtils', |
47 | 'envUtils', |
48 | 'generalUtils', |
49 | 'getParams', |
50 | 'htmlUtils', |
51 | 'httpUtils', |
52 | 'idUtils', |
53 | 'imageUtils', |
54 | 'log', |
55 | 'mapUtils', |
56 | 'server', |
57 | 'session', |
58 | 'solvFetcher', |
59 | 'stravaUtils', |
60 | 'symfonyUtils', |
61 | 'telegramUtils', |
62 | 'uploadUtils', |
63 | ]; |
64 | |
65 | public function authUtils(): AuthUtils { |
66 | $util = WithUtilsCache::get('authUtils'); |
67 | assert($util); |
68 | return $util; |
69 | } |
70 | |
71 | #[Required] |
72 | public function setAuthUtils(AuthUtils $authUtils): void { |
73 | WithUtilsCache::set('authUtils', $authUtils); |
74 | } |
75 | |
76 | public function dateUtils(): DateUtils { |
77 | $util = WithUtilsCache::get('dateUtils'); |
78 | assert($util); |
79 | return $util; |
80 | } |
81 | |
82 | #[Required] |
83 | public function setDateUtils(DateUtils $dateUtils): void { |
84 | WithUtilsCache::set('dateUtils', $dateUtils); |
85 | } |
86 | |
87 | public function dbUtils(): DbUtils { |
88 | $util = WithUtilsCache::get('dbUtils'); |
89 | assert($util); |
90 | return $util; |
91 | } |
92 | |
93 | #[Required] |
94 | public function setDbUtils(DbUtils $dbUtils): void { |
95 | WithUtilsCache::set('dbUtils', $dbUtils); |
96 | } |
97 | |
98 | public function devDataUtils(): DevDataUtils { |
99 | $util = WithUtilsCache::get('devDataUtils'); |
100 | assert($util); |
101 | return $util; |
102 | } |
103 | |
104 | #[Required] |
105 | public function setDevDataUtils(DevDataUtils $devDataUtils): void { |
106 | WithUtilsCache::set('devDataUtils', $devDataUtils); |
107 | } |
108 | |
109 | public function emailUtils(): EmailUtils { |
110 | $util = WithUtilsCache::get('emailUtils'); |
111 | assert($util); |
112 | return $util; |
113 | } |
114 | |
115 | #[Required] |
116 | public function setEmailUtils(EmailUtils $emailUtils): void { |
117 | WithUtilsCache::set('emailUtils', $emailUtils); |
118 | } |
119 | |
120 | public function entityManager(): EntityManagerInterface { |
121 | $util = WithUtilsCache::get('entityManager'); |
122 | assert($util); |
123 | return $util; |
124 | } |
125 | |
126 | #[Required] |
127 | public function setEntityManager(EntityManagerInterface $entityManager): void { |
128 | WithUtilsCache::set('entityManager', $entityManager); |
129 | } |
130 | |
131 | public function entityUtils(): EntityUtils { |
132 | $util = WithUtilsCache::get('entityUtils'); |
133 | assert($util); |
134 | return $util; |
135 | } |
136 | |
137 | #[Required] |
138 | public function setEntityUtils(EntityUtils $entityUtils): void { |
139 | WithUtilsCache::set('entityUtils', $entityUtils); |
140 | } |
141 | |
142 | public function envUtils(): EnvUtils { |
143 | $util = WithUtilsCache::get('envUtils'); |
144 | assert($util); |
145 | return $util; |
146 | } |
147 | |
148 | #[Required] |
149 | public function setEnvUtils(EnvUtils $envUtils): void { |
150 | WithUtilsCache::set('envUtils', $envUtils); |
151 | } |
152 | |
153 | public function generalUtils(): GeneralUtils { |
154 | $util = WithUtilsCache::get('generalUtils'); |
155 | assert($util); |
156 | return $util; |
157 | } |
158 | |
159 | #[Required] |
160 | public function setGeneralUtils(GeneralUtils $generalUtils): void { |
161 | WithUtilsCache::set('generalUtils', $generalUtils); |
162 | } |
163 | |
164 | public function htmlUtils(): HtmlUtils { |
165 | $util = WithUtilsCache::get('htmlUtils'); |
166 | assert($util); |
167 | return $util; |
168 | } |
169 | |
170 | #[Required] |
171 | public function setHtmlUtils(HtmlUtils $htmlUtils): void { |
172 | WithUtilsCache::set('htmlUtils', $htmlUtils); |
173 | } |
174 | |
175 | public function httpUtils(): HttpUtils { |
176 | $util = WithUtilsCache::get('httpUtils'); |
177 | assert($util); |
178 | return $util; |
179 | } |
180 | |
181 | #[Required] |
182 | public function setHttpUtils(HttpUtils $httpUtils): void { |
183 | WithUtilsCache::set('httpUtils', $httpUtils); |
184 | } |
185 | |
186 | public function idUtils(): IdUtils { |
187 | $util = WithUtilsCache::get('idUtils'); |
188 | assert($util); |
189 | return $util; |
190 | } |
191 | |
192 | #[Required] |
193 | public function setIdUtils(IdUtils $idUtils): void { |
194 | WithUtilsCache::set('idUtils', $idUtils); |
195 | } |
196 | |
197 | public function imageUtils(): ImageUtils { |
198 | $util = WithUtilsCache::get('imageUtils'); |
199 | assert($util); |
200 | return $util; |
201 | } |
202 | |
203 | #[Required] |
204 | public function setImageUtils(ImageUtils $imageUtils): void { |
205 | WithUtilsCache::set('imageUtils', $imageUtils); |
206 | } |
207 | |
208 | public function log(): LoggerInterface { |
209 | $util = WithUtilsCache::get('log'); |
210 | assert($util); |
211 | return $util; |
212 | } |
213 | |
214 | #[Required] |
215 | public function setLog(LoggerInterface $log): void { |
216 | $this->logger = $log; |
217 | WithUtilsCache::set('log', $log); |
218 | } |
219 | |
220 | public function mapUtils(): MapUtils { |
221 | $util = WithUtilsCache::get('mapUtils'); |
222 | assert($util); |
223 | return $util; |
224 | } |
225 | |
226 | #[Required] |
227 | public function setMapUtils(MapUtils $mapUtils): void { |
228 | WithUtilsCache::set('mapUtils', $mapUtils); |
229 | } |
230 | |
231 | public function captchaUtils(): CaptchaUtils { |
232 | $util = WithUtilsCache::get('captchaUtils'); |
233 | assert($util); |
234 | return $util; |
235 | } |
236 | |
237 | #[Required] |
238 | public function setCaptchaUtils(CaptchaUtils $captchaUtils): void { |
239 | WithUtilsCache::set('captchaUtils', $captchaUtils); |
240 | } |
241 | |
242 | public function session(): AbstractSession { |
243 | return $this->getOrCreate('session'); |
244 | } |
245 | |
246 | public function createSession(): AbstractSession { |
247 | return new StandardSession(); |
248 | } |
249 | |
250 | public function setSession(AbstractSession $session): void { |
251 | WithUtilsCache::set('session', $session); |
252 | } |
253 | |
254 | public function solvFetcher(): SolvFetcher { |
255 | $util = WithUtilsCache::get('solvFetcher'); |
256 | assert($util); |
257 | return $util; |
258 | } |
259 | |
260 | #[Required] |
261 | public function setSolvFetcher(SolvFetcher $solvFetcher): void { |
262 | WithUtilsCache::set('solvFetcher', $solvFetcher); |
263 | } |
264 | |
265 | public function stravaUtils(): StravaUtils { |
266 | $util = WithUtilsCache::get('stravaUtils'); |
267 | assert($util); |
268 | return $util; |
269 | } |
270 | |
271 | #[Required] |
272 | public function setStravaUtils(StravaUtils $stravaUtils): void { |
273 | WithUtilsCache::set('stravaUtils', $stravaUtils); |
274 | } |
275 | |
276 | public function symfonyUtils(): SymfonyUtils { |
277 | $util = WithUtilsCache::get('symfonyUtils'); |
278 | assert($util); |
279 | return $util; |
280 | } |
281 | |
282 | #[Required] |
283 | public function setSymfonyUtils(SymfonyUtils $symfonyUtils): void { |
284 | WithUtilsCache::set('symfonyUtils', $symfonyUtils); |
285 | } |
286 | |
287 | public function telegramUtils(): TelegramUtils { |
288 | $util = WithUtilsCache::get('telegramUtils'); |
289 | assert($util); |
290 | return $util; |
291 | } |
292 | |
293 | #[Required] |
294 | public function setTelegramUtils(TelegramUtils $telegramUtils): void { |
295 | WithUtilsCache::set('telegramUtils', $telegramUtils); |
296 | } |
297 | |
298 | public function termineUtils(): TermineUtils { |
299 | $util = WithUtilsCache::get('termineUtils'); |
300 | assert($util); |
301 | return $util; |
302 | } |
303 | |
304 | #[Required] |
305 | public function setTermineUtils(TermineUtils $termineUtils): void { |
306 | WithUtilsCache::set('termineUtils', $termineUtils); |
307 | } |
308 | |
309 | public function uploadUtils(): UploadUtils { |
310 | $util = WithUtilsCache::get('uploadUtils'); |
311 | assert($util); |
312 | return $util; |
313 | } |
314 | |
315 | #[Required] |
316 | public function setUploadUtils(UploadUtils $uploadUtils): void { |
317 | WithUtilsCache::set('uploadUtils', $uploadUtils); |
318 | } |
319 | |
320 | // Legacy implementation |
321 | // TODO: Migrate away! |
322 | |
323 | /** |
324 | * @return array<string, string> |
325 | */ |
326 | public function getParams(): array { |
327 | return $this->getOrCreate('getParams'); |
328 | } |
329 | |
330 | /** |
331 | * @return array<string, string> |
332 | */ |
333 | public function createGetParams(): array { |
334 | global $_GET; |
335 | return $_GET; |
336 | } |
337 | |
338 | /** |
339 | * @param array<string, string> $getParams |
340 | */ |
341 | public function setGetParams(array $getParams): void { |
342 | WithUtilsCache::set('getParams', $getParams); |
343 | } |
344 | |
345 | /** |
346 | * @return array<string, mixed> |
347 | */ |
348 | public function server(): array { |
349 | return $this->getOrCreate('server'); |
350 | } |
351 | |
352 | /** |
353 | * @return array<string, mixed> |
354 | */ |
355 | public function createServer(): array { |
356 | global $_SERVER; |
357 | return $_SERVER; |
358 | } |
359 | |
360 | /** |
361 | * @param array<string, mixed> $server |
362 | */ |
363 | public function setServer(array $server): void { |
364 | WithUtilsCache::set('server', $server); |
365 | } |
366 | |
367 | // --- |
368 | |
369 | /** |
370 | * @return array<string, mixed> |
371 | */ |
372 | public function getAllUtils(): array { |
373 | return WithUtilsCache::getAll(); |
374 | } |
375 | |
376 | /** |
377 | * @param array<string, mixed> $all_utils |
378 | */ |
379 | public function setAllUtils(array $all_utils): void { |
380 | WithUtilsCache::setAll($all_utils); |
381 | } |
382 | |
383 | protected function getOrCreate(string $util_name): mixed { |
384 | $util = WithUtilsCache::get($util_name); |
385 | if ($util) { |
386 | return $util; |
387 | } |
388 | $cap_util_name = ucfirst($util_name); |
389 | $creator_name = "create{$cap_util_name}"; |
390 | $util = $this->{$creator_name}(); |
391 | WithUtilsCache::set($util_name, $util); |
392 | return $util; |
393 | } |
394 | } |