Passed
Pull Request — master (#6396)
by Angel Fernando Quiroz
08:47
created

AccessUrlHelper::isMultiple()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 4
nc 2
nop 0
dl 0
loc 9
rs 10
c 0
b 0
f 0
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
declare(strict_types=1);
6
7
namespace Chamilo\CoreBundle\Helpers;
8
9
use Chamilo\CoreBundle\Entity\AccessUrl;
10
use Chamilo\CoreBundle\Repository\Node\AccessUrlRepository;
11
use Symfony\Component\HttpFoundation\RequestStack;
12
13
use const PHP_SAPI;
14
15
readonly class AccessUrlHelper
16
{
17
    public function __construct(
18
        private AccessUrlRepository $accessUrlRepository,
19
        private RequestStack $requestStack,
20
    ) {}
21
22
    public function isMultiple(): bool
23
    {
24
        static $accessUrlEnabled;
25
26
        if (!isset($accessUrlEnabled)) {
27
            $accessUrlEnabled = $this->accessUrlRepository->count([]) > 1;
28
        }
29
30
        return $accessUrlEnabled;
31
    }
32
33
    public function getFirstAccessUrl(): ?AccessUrl
34
    {
35
        $urlId = $this->accessUrlRepository->getFirstId();
36
37
        return $this->accessUrlRepository->find($urlId) ?: null;
38
    }
39
40
    public function getCurrent(): ?AccessUrl
41
    {
42
        static $accessUrl;
43
44
        if (!empty($accessUrl)) {
45
            return $accessUrl;
46
        }
47
48
        $accessUrl = $this->getFirstAccessUrl();
49
50
        if ('cli' === PHP_SAPI) {
51
            return $accessUrl;
52
        }
53
54
        if ($this->isMultiple()) {
55
            $request = $this->requestStack->getMainRequest();
56
57
            if (null === $request) {
58
                return $accessUrl;
59
            }
60
61
            $url = $request->getSchemeAndHttpHost().'/';
62
63
            /** @var AccessUrl $accessUrl */
64
            $accessUrl = $this->accessUrlRepository->findOneBy(['url' => $url]);
65
        }
66
67
        return $accessUrl;
68
    }
69
}
70