ExtensionMenu   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 21
dl 0
loc 53
rs 10
c 0
b 0
f 0
wmc 14

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getMenuItem() 0 7 3
A getBundleName() 0 3 1
A getAdmin() 0 4 1
A __construct() 0 2 1
A getAccount() 0 3 1
B getUser() 0 21 7
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the Zikula package.
7
 *
8
 * Copyright Zikula - https://ziku.la/
9
 *
10
 * For the full copyright and license information, please view the LICENSE
11
 * file that was distributed with this source code.
12
 */
13
14
namespace Zikula\LegalBundle\Menu;
15
16
use EasyCorp\Bundle\EasyAdminBundle\Config\Menu\RouteMenuItem;
17
use EasyCorp\Bundle\EasyAdminBundle\Config\Menu\UrlMenuItem;
18
use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;
19
use Symfony\Component\Translation\TranslatableMessage;
20
use Zikula\ThemeBundle\ExtensionMenu\AbstractExtensionMenu;
21
use function Symfony\Component\Translation\t;
22
23
class ExtensionMenu extends AbstractExtensionMenu
24
{
25
    public function __construct(private readonly array $legalConfig)
26
    {
27
    }
28
29
    protected function getAdmin(): iterable
30
    {
31
        yield MenuItem::linktoRoute(t('Settings'), 'fas fa-wrench', 'zikulalegalbundle_config_config')
32
            ->setPermission('ROLE_ADMIN');
33
    }
34
35
    protected function getUser(): iterable
36
    {
37
        $policies = $this->legalConfig['policies'];
38
39
        if ($policies['legal_notice']['enabled']) {
40
            yield $this->getMenuItem(t('Legal notice'), 'legalnotice', $policies['legal_notice']['custom_url']);
41
        }
42
        if ($policies['privacy_policy']['enabled']) {
43
            yield $this->getMenuItem(t('Privacy policy'), 'privacypolicy', $policies['privacy_policy']['custom_url']);
44
        }
45
        if ($policies['terms_of_use']['enabled']) {
46
            yield $this->getMenuItem(t('Terms of use'), 'termsofuse', $policies['terms_of_use']['custom_url']);
47
        }
48
        if ($policies['trade_conditions']['enabled']) {
49
            yield $this->getMenuItem(t('Trade conditions'), 'tradeconditions', $policies['trade_conditions']['custom_url']);
50
        }
51
        if ($policies['cancellation_right_policy']['enabled']) {
52
            yield $this->getMenuItem(t('Cancellation right policy'), 'cancellationrightpolicy', $policies['cancellation_right_policy']['custom_url']);
53
        }
54
        if ($policies['accessibility']['enabled']) {
55
            yield $this->getMenuItem(t('Accessibility statement'), 'accessibilitystatement', $policies['accessibility']['custom_url']);
56
        }
57
    }
58
59
    protected function getAccount(): iterable
60
    {
61
        yield MenuItem::linktoRoute(t('Legal Docs'), 'fas fa-gavel', 'zikulalegalbundle_user_index');
62
    }
63
64
    private function getMenuItem(TranslatableMessage $title, string $defaultRoute, ?string $customUrl): RouteMenuItem|UrlMenuItem
65
    {
66
        if (null !== $customUrl && '' !== $customUrl) {
67
            return MenuItem::linktoUrl($title, null, $customUrl);
68
        }
69
70
        return MenuItem::linktoRoute($title, null, 'zikulalegalbundle_user_' . $defaultRoute);
71
    }
72
73
    public function getBundleName(): string
74
    {
75
        return 'ZikulaLegalBundle';
76
    }
77
}
78