Passed
Push — master ( 843deb...2912c8 )
by Angel Fernando Quiroz
08:56
created

resolveResourceFileByAccessUrl()   B

Complexity

Conditions 7
Paths 9

Size

Total Lines 27
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 7
eloc 14
nc 9
nop 1
dl 0
loc 27
rs 8.8333
c 1
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\ResourceFile;
10
use Chamilo\CoreBundle\Entity\ResourceNode;
11
use Chamilo\CoreBundle\Settings\SettingsManager;
12
13
class ResourceFileHelper
14
{
15
    public function __construct(
16
        private readonly SettingsManager $settingsManager,
17
        private readonly AccessUrlHelper $accessUrlHelper,
18
    ) {}
19
20
    public function resolveResourceFileByAccessUrl(ResourceNode $resourceNode): ?ResourceFile
21
    {
22
        if (!$resourceNode->hasResourceFile()) {
23
            return null;
24
        }
25
26
        $accessUrlSpecificFiles = 'true' === $this->settingsManager->getSetting('document.access_url_specific_files', true)
27
            && $this->accessUrlHelper->isMultiple();
28
29
        $resourceFile = null;
30
        $resourceFiles = $resourceNode->getResourceFiles();
31
32
        if ($accessUrlSpecificFiles) {
33
            $currentUrl = $this->accessUrlHelper->getCurrent()?->getUrl();
34
35
            foreach ($resourceFiles as $file) {
36
                if ($file->getAccessUrl() && $file->getAccessUrl()->getUrl() === $currentUrl) {
37
                    $resourceFile = $file;
38
39
                    break;
40
                }
41
            }
42
        }
43
44
        $resourceFile ??= $resourceFiles->filter(fn ($file) => null === $file->getAccessUrl())->first();
45
46
        return $resourceFile;
47
    }
48
}
49