Completed
Pull Request — 5.6 (#2830)
by Jeroen
14:14
created

AdminBundle/Helper/AdminPanel/AdminPanel.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 Kunstmaan\AdminBundle\Helper\AdminPanel;
4
5
class AdminPanel
6
{
7
    /**
8
     * @var AdminPanelAdaptorInterface[]
9
     */
10
    private $adaptors = [];
11
12
    /**
13
     * @var AdminPanelAdaptorInterface[]
14
     */
15
    private $sorted = [];
16
17
    /**
18
     * @var AdminPanelActionInterface[]
19
     */
20
    private $actions = null;
21
22
    /**
23
     * Add admin panel adaptor
24
     */
25 1
    public function addAdminPanelAdaptor(AdminPanelAdaptorInterface $adaptor, $priority = 0)
26
    {
27 1
        $this->adaptors[$priority][] = $adaptor;
28 1
        unset($this->sorted);
29 1
    }
30
31
    /**
32
     * Return current admin panel actions
33
     */
34 1
    public function getAdminPanelActions()
35
    {
36 1
        if (!$this->actions) {
0 ignored issues
show
Bug Best Practice introduced by
The expression $this->actions of type Kunstmaan\AdminBundle\He...nPanelActionInterface[] is implicitly converted to a boolean; are you sure this is intended? If so, consider using empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
37 1
            $this->actions = [];
38 1
            $adaptors = $this->getAdaptors();
39 1
            foreach ($adaptors as $adaptor) {
40 1
                $this->actions = array_merge($this->actions, $adaptor->getAdminPanelActions());
41
            }
42
        }
43
44 1
        return $this->actions;
45
    }
46
47
    /**
48
     * Get adaptors sorted by priority.
49
     *
50
     * @return \Kunstmaan\AdminBundle\Helper\AdminPanel\AdminPanelAdaptorInterface[]
51
     */
52 1
    private function getAdaptors()
53
    {
54 1
        if (!isset($this->sorted)) {
55 1
            $this->sortAdaptors();
56
        }
57
58 1
        return $this->sorted;
59
    }
60
61
    /**
62
     * Sorts the internal list of adaptors by priority.
63
     */
64 1 View Code Duplication
    private function sortAdaptors()
65
    {
66 1
        $this->sorted = [];
67
68 1
        if (isset($this->adaptors)) {
69 1
            krsort($this->adaptors);
70 1
            $this->sorted = array_merge(...$this->adaptors);
71
        }
72 1
    }
73
}
74