Passed
Push — master ( 577984...690f51 )
by Angel Fernando Quiroz
08:47
created

resolveResourceFileByAccessUrl()   A

Complexity

Conditions 6
Paths 5

Size

Total Lines 24
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

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