Passed
Push — master ( a291c5...6eae59 )
by Marcel
14:20 queued 12s
created

ReferenceProvider::getCachePrefix()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 2
rs 10
c 1
b 0
f 0
1
<?php
2
namespace OCA\Analytics\Reference;
3
4
use OCP\Collaboration\Reference\ADiscoverableReferenceProvider;
0 ignored issues
show
Bug introduced by
The type OCP\Collaboration\Refere...erableReferenceProvider was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
5
use OCP\Collaboration\Reference\ISearchableReferenceProvider;
0 ignored issues
show
Bug introduced by
The type OCP\Collaboration\Refere...chableReferenceProvider was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
6
use OCP\Collaboration\Reference\Reference;
0 ignored issues
show
Bug introduced by
The type OCP\Collaboration\Reference\Reference was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
7
use OC\Collaboration\Reference\ReferenceManager;
0 ignored issues
show
Bug introduced by
The type OC\Collaboration\Reference\ReferenceManager was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
8
use OCP\Collaboration\Reference\IReference;
0 ignored issues
show
Bug introduced by
The type OCP\Collaboration\Reference\IReference was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
9
use OCP\IConfig;
10
use OCP\IL10N;
11
use OCP\IURLGenerator;
12
use Psr\Log\LoggerInterface;
13
14
class ReferenceProvider extends ADiscoverableReferenceProvider implements ISearchableReferenceProvider {
15
16
    private const RICH_OBJECT_TYPE = 'analytics';
17
18
    private ?string $userId;
19
    private IConfig $config;
20
    private ReferenceManager $referenceManager;
21
    private IL10N $l10n;
22
    private IURLGenerator $urlGenerator;
23
    private LoggerInterface $logger;
24
25
    public function __construct(IConfig $config,
26
                                LoggerInterface $logger,
27
                                IL10N $l10n,
28
                                IURLGenerator $urlGenerator,
29
                                ReferenceManager $referenceManager,
30
                                ?string $userId) {
31
        $this->userId = $userId;
32
        $this->logger = $logger;
33
        $this->config = $config;
34
        $this->referenceManager = $referenceManager;
35
        $this->l10n = $l10n;
36
        $this->urlGenerator = $urlGenerator;
37
    }
38
39
    public function getId(): string	{
40
        return 'analytics';
41
    }
42
43
    public function getTitle(): string {
44
        return $this->l10n->t('Analytics Reference');
45
    }
46
47
    public function getOrder(): int	{
48
        return 10;
49
    }
50
51
    public function getIconUrl(): string {
52
        return $this->urlGenerator->getAbsoluteURL(
53
            $this->urlGenerator->imagePath('analytics', 'app-dark.svg')
54
        );
55
    }
56
57
    public function getSupportedSearchProviderIds(): array {
58
        return ['analytics'];
59
60
    }
61
62
    public function matchReference(string $referenceText): bool {
63
        $this->logger->error('matchReference');
64
        $adminLinkPreviewEnabled = $this->config->getAppValue('analytics', 'link_preview_enabled', '1') === '1';
65
        if (!$adminLinkPreviewEnabled) {
66
            //return false;
67
        }
68
        return preg_match('~/apps/analytics~', $referenceText) === 1;
69
    }
70
71
    public function resolveReference(string $referenceText): ?IReference {
72
        $this->logger->error('resolveReference');
73
        if ($this->matchReference($referenceText)) {
74
            $this->logger->error('resolveReference - match positive');
75
                $reference = new Reference($referenceText);
76
                $reference->setTitle($this->l10n->t('Title'));
77
                $reference->setDescription($this->l10n->t('Description'));
78
                $imageUrl = $this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('analytics', 'app.svg'));
79
                $reference->setImageUrl($imageUrl);
80
                $reference->setRichObject(
81
                    self::RICH_OBJECT_TYPE,
82
                );
83
                return $reference;
84
            }
85
        return null;
86
    }
87
88
    public function getCachePrefix(string $referenceId): string {
89
        return $this->userId ?? '';
90
    }
91
92
    public function getCacheKey(string $referenceId): ?string {
93
        return $referenceId;
94
    }
95
96
    public function invalidateUserCache(string $userId): void {
97
        $this->referenceManager->invalidateCache($userId);
98
    }
99
}