Completed
Push — master ( e32eeb...714cda )
by
unknown
89:50 queued 46:29
created

Converters/WidgetBusinessUnitSelectConverter.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Oro\Bundle\DashboardBundle\Provider\Converters;
4
5
use Doctrine\ORM\EntityRepository;
6
use Doctrine\ORM\QueryBuilder;
7
8
use Oro\Bundle\DashboardBundle\Provider\ConfigValueConverterAbstract;
9
use Oro\Bundle\SecurityBundle\SecurityFacade;
10
use Oro\Bundle\OrganizationBundle\Provider\BusinessUnitAclProvider;
11
12
/**
13
 * Class WidgetBusinessUnitSelectConverter
14
 * @package Oro\Bundle\DashboardBundle\Provider\Converters
15
 */
16
class WidgetBusinessUnitSelectConverter extends ConfigValueConverterAbstract
17
{
18
    /** @var EntityRepository */
19
    protected $businessUnitRepository;
20
21
    /** @var SecurityFacade */
22
    protected $securityFacade;
23
24
    /** @var BusinessUnitAclProvider */
25
    protected $businessUnitAclProvider;
26
27
    /**
28
     * @param EntityRepository $businessUnitRepository
29
     * @param SecurityFacade $securityFacade
30
     * @param BusinessUnitAclProvider $businessUnitAclProvider
31
     */
32
    public function __construct(
33
        EntityRepository $businessUnitRepository,
34
        SecurityFacade $securityFacade,
35
        BusinessUnitAclProvider $businessUnitAclProvider
36
    ) {
37
        $this->businessUnitRepository = $businessUnitRepository;
38
        $this->securityFacade = $securityFacade;
39
        $this->businessUnitAclProvider = $businessUnitAclProvider;
40
    }
41
42
    /**
43
     * {@inheritdoc}
44
     */
45 View Code Duplication
    public function getConvertedValue(array $widgetConfig, $value = null, array $config = [], array $options = [])
46
    {
47
        if ($value === null) {
48
            return $this->getBusinessUnitList($config);
49
        }
50
51
        return parent::getConvertedValue($widgetConfig, $value, $config, $options);
52
    }
53
54
    /**
55
     * {@inheritdoc}
56
     */
57
    public function getFormValue(array $converterAttributes, $value)
58
    {
59
        if ($value === null) {
60
            return $this->getBusinessUnitList($converterAttributes);
61
        }
62
63
        return parent::getFormValue($converterAttributes, $value);
64
    }
65
66
    /**
67
     * @param mixed $value
68
     * @return mixed
69
     */
70
    public function getViewValue($value)
71
    {
72
        return empty($value) ? null : implode('; ', $value);
73
    }
74
75
    /**
76
     * @param array $config
77
     * @return array
78
     */
79
    public function getBusinessUnitList($config)
80
    {
81
        $aclClass = isset($config['aclClass']) ? $config['aclClass'] : null;
82
        $aclPermission = isset($config['aclPermission']) ? $config['aclPermission'] : null;
83
        $queryBuilder = $this->businessUnitRepository->createQueryBuilder('businessUnit');
84
85
        if ($aclClass && $aclPermission) {
86
            $businessUnitIds = $this
87
                ->businessUnitAclProvider
88
                ->getBusinessUnitIds($aclClass, $aclPermission);
89
90
            if (!is_array($businessUnitIds) || count($businessUnitIds) === 0) {
91
                $businessUnitIds = [0];
92
            }
93
94
            $this->applyAdditionalConditions(
95
                $queryBuilder,
96
                $businessUnitIds,
97
                $this->businessUnitAclProvider->getProcessedEntityAccessLevel()
98
            );
99
        }
100
101
        return $queryBuilder->getQuery()->getResult();
102
    }
103
104
    /**
105
     * @param QueryBuilder $queryBuilder
106
     * @param array $businessUnitIds
107
     * @param string $accessLevel
108
     */
109
    protected function applyAdditionalConditions(QueryBuilder $queryBuilder, $businessUnitIds, $accessLevel)
0 ignored issues
show
The parameter $accessLevel is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
110
    {
111
        $queryBuilder->andWhere($queryBuilder->expr()->in('businessUnit.id', $businessUnitIds));
112
    }
113
}
114