Passed
Push — master ( 1a7924...8ee120 )
by Julito
11:25
created

SysAnnouncementRepository   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 12
c 1
b 0
f 1
dl 0
loc 26
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getVisibilityList() 0 9 1
A update() 0 5 2
A __construct() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
/* For licensing terms, see /license.txt */
6
7
namespace Chamilo\CoreBundle\Repository;
8
9
use Chamilo\CoreBundle\Entity\SysAnnouncement;
10
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
11
use Doctrine\Persistence\ManagerRegistry;
12
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
13
14
class SysAnnouncementRepository extends ServiceEntityRepository
15
{
16
    protected ParameterBagInterface $parameterBag;
17
18
    public function __construct(ManagerRegistry $registry, ParameterBagInterface $parameterBag)
19
    {
20
        parent::__construct($registry, SysAnnouncement::class);
21
        $this->parameterBag = $parameterBag;
22
    }
23
24
    public function getVisibilityList()
25
    {
26
        $hierarchy = $this->parameterBag->get('security.role_hierarchy.roles');
27
        $roles = [];
28
        array_walk_recursive($hierarchy, function ($role) use (&$roles): void {
29
            $roles[$role] = $role;
30
        });
31
32
        return $roles;
33
    }
34
35
    public function update(SysAnnouncement $sysAnnouncement, $andFlush = true): void
36
    {
37
        $this->getEntityManager()->persist($sysAnnouncement);
38
        if ($andFlush) {
39
            $this->getEntityManager()->flush();
40
        }
41
    }
42
}
43