Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
92.22% covered (success)
92.22%
83 / 90
91.38% covered (success)
91.38%
53 / 58
CRAP
0.00% covered (danger)
0.00%
0 / 1
WithUtilsTrait
92.22% covered (success)
92.22%
83 / 90
91.38% covered (success)
91.38%
53 / 58
60.64
0.00% covered (danger)
0.00%
0 / 1
 setMailer
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setMessageBus
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 authUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setAuthUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 dateUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setDateUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 dbUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setDbUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 devDataUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setDevDataUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 emailUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setEmailUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 entityManager
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setEntityManager
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 entityUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setEntityUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 envUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setEnvUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 generalUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setGeneralUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 htmlUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setHtmlUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 httpUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setHttpUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 idUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setIdUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 imageUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setImageUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 log
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setLog
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 mapUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setMapUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 captchaUtils
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 setCaptchaUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 session
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 createSession
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setSession
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 solvFetcher
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setSolvFetcher
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 stravaUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setStravaUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 symfonyUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setSymfonyUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 telegramUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setTelegramUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 termineUtils
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 setTermineUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 uploadUtils
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setUploadUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getParams
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 createGetParams
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setGetParams
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 server
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 createServer
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 setServer
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getAllUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setAllUtils
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getOrCreate
100.00% covered (success)
100.00%
8 / 8
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace Olz\Utils;
4
5use Doctrine\ORM\EntityManagerInterface;
6use Olz\Captcha\Utils\CaptchaUtils;
7use Olz\Fetchers\SolvFetcher;
8use Olz\Termine\Utils\TermineUtils;
9use Psr\Log\LoggerAwareTrait;
10use Psr\Log\LoggerInterface;
11use Symfony\Component\Mailer\MailerInterface;
12use Symfony\Component\Messenger\MessageBusInterface;
13use Symfony\Contracts\Service\Attribute\Required;
14
15trait 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}