Passed
Push — master ( 76cb70...440cff )
by Angel Fernando Quiroz
10:57
created

ResourceFileHelper   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 30
rs 10
wmc 7

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A resolveResourceFileByAccessUrl() 0 23 6
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
        $accessUrlSpecificFiles = 'true' === $this->settingsManager->getSetting('document.access_url_specific_files')
23
            && $this->accessUrlHelper->isMultiple();
24
25
        $resourceFile = null;
26
        $resourceFiles = $resourceNode->getResourceFiles();
27
28
        if ($accessUrlSpecificFiles) {
29
            $currentUrl = $this->accessUrlHelper->getCurrent()?->getUrl();
30
31
            foreach ($resourceFiles as $file) {
32
                if ($file->getAccessUrl() && $file->getAccessUrl()->getUrl() === $currentUrl) {
33
                    $resourceFile = $file;
34
35
                    break;
36
                }
37
            }
38
        }
39
40
        $resourceFile ??= $resourceFiles->filter(fn ($file) => null === $file->getAccessUrl())->first();
41
42
        return $resourceFile;
43
    }
44
}