Passed
Push — master ( f10e67...52beba )
by Julito
07:56
created

UserRelUserExtension   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 6
c 1
b 0
f 0
dl 0
loc 24
rs 10
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A applyToCollection() 0 3 1
A applyToItem() 0 2 1
A addWhere() 0 4 2
A __construct() 0 3 1
1
<?php
2
3
/* For licensing terms, see /license.txt */
4
5
declare(strict_types=1);
6
7
namespace Chamilo\CoreBundle\DataProvider\Extension;
8
9
use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryCollectionExtensionInterface;
10
//use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryItemExtensionInterface;
11
use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGeneratorInterface;
12
use Chamilo\CoreBundle\Entity\Message;
13
use Doctrine\ORM\QueryBuilder;
14
use Symfony\Component\Security\Core\Security;
15
16
final class UserRelUserExtension implements QueryCollectionExtensionInterface //, QueryItemExtensionInterface
17
{
18
    private Security $security;
19
20
    public function __construct(Security $security)
21
    {
22
        $this->security = $security;
23
    }
24
25
    public function applyToCollection(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, string $operationName = null): void
26
    {
27
        $this->addWhere($queryBuilder, $resourceClass);
28
    }
29
30
    public function applyToItem(QueryBuilder $queryBuilder, QueryNameGeneratorInterface $queryNameGenerator, string $resourceClass, array $identifiers, string $operationName = null, array $context = []): void
31
    {
32
        //error_log('applyToItem');
33
        //$this->addWhere($queryBuilder, $resourceClass);
34
    }
35
36
    private function addWhere(QueryBuilder $queryBuilder, string $resourceClass): void
37
    {
38
        if (Message::class !== $resourceClass) {
39
            return;
40
        }
41
42
        /*if ($this->security->isGranted('ROLE_ADMIN')) {
43
            return;
44
        }*/
45
46
        /*$user = $this->security->getUser();
47
        $alias = $queryBuilder->getRootAliases()[0];
48
49
        $queryBuilder->andWhere("
50
            ($alias.userSender = :current AND $alias.msgType = :outbox) OR
51
            ($alias.userReceiver = :current AND $alias.msgType = :inbox) OR
52
            ($alias.userReceiver = :current AND $alias.msgType = :invitation) OR
53
            ($alias.userReceiver = :current AND $alias.msgType = :promoted) OR
54
            ($alias.userReceiver = :current AND $alias.msgType = :wallPost) OR
55
            ($alias.userReceiver = :current AND $alias.msgType = :conversation)
56
        ");
57
        $queryBuilder->setParameters([
58
            'current' => $user,
59
            'inbox' => Message::MESSAGE_TYPE_INBOX,
60
            'outbox' => Message::MESSAGE_TYPE_OUTBOX,
61
            'invitation' => Message::MESSAGE_TYPE_INVITATION,
62
            'promoted' => Message::MESSAGE_TYPE_PROMOTED,
63
            'wallPost' => Message::MESSAGE_TYPE_WALL,
64
            'conversation' => Message::MESSAGE_TYPE_CONVERSATION,
65
        ]);*/
66
    }
67
}
68