Completed
Push — develop ( fcce06...87d9a9 )
by Nate
02:07
created

OrganizationAttributesToUserQueryBehavior   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 12
lcom 1
cbo 3
dl 0
loc 94
ccs 0
cts 46
cp 0
rs 10
c 0
b 0
f 0

8 Methods

Rating   Name   Duplication   Size   Complexity  
A init() 0 5 1
A applyOrganizationParams() 0 4 1
A getOrganization() 0 4 1
A setOrganization() 0 14 3
A organization() 0 4 1
A setOrganizationId() 0 4 1
A organizationId() 0 4 1
A findSubNodes() 0 10 3
1
<?php
2
3
namespace flipbox\organizations\queries;
4
5
use craft\elements\db\UserQuery;
6
use craft\helpers\ArrayHelper;
7
use flipbox\organizations\elements\Organization;
8
use yii\base\Behavior;
9
10
/**
11
 * Class UserOrganizationBehavior
12
 * @package flipbox\organizations\db\behaviors
13
 *
14
 * @property UserQuery $owner
15
 */
16
class OrganizationAttributesToUserQueryBehavior extends Behavior
17
{
18
    /**
19
     * @inheritdoc
20
     */
21
    public function init()
22
    {
23
        parent::init();
24
        $this->handler = new UserQueryParamHandler($this);
25
    }
26
27
    /**
28
     * @var UserQueryParamHandler
29
     */
30
    private $handler;
31
32
    /**
33
     * @param UserQuery $query
34
     */
35
    public function applyOrganizationParams(UserQuery $query)
36
    {
37
        $this->handler->applyParams($query);
38
    }
39
40
    /**
41
     * @return UserQueryParamHandler
42
     */
43
    public function getOrganization(): UserQueryParamHandler
44
    {
45
        return $this->handler;
46
    }
47
48
    /**
49
     * @param string|string[]|int|int[]|Organization|Organization[]|null $value
50
     * @return UserQuery
51
     */
52
    public function setOrganization($value): UserQuery
53
    {
54
        if (is_array($value)) {
55
            $this->findSubNodes($value);
56
57
            // If we removed everything, we're all done here
58
            if (empty($value)) {
59
                return $this->owner;
60
            }
61
        }
62
63
        $this->handler->setOrganization($value);
64
        return $this->owner;
65
    }
66
67
    /**
68
     * @param string|string[]|int|int[]|Organization|Organization[]|null $value
69
     * @return UserQuery
70
     */
71
    public function organization($value): UserQuery
72
    {
73
        return $this->setOrganization($value);
74
    }
75
76
    /**
77
     * @param string|string[]|int|int[]|Organization|Organization[]|null $value
78
     * @return UserQuery
79
     */
80
    public function setOrganizationId($value): UserQuery
81
    {
82
        return $this->setOrganization($value);
83
    }
84
85
    /**
86
     * @param string|string[]|int|int[]|Organization|Organization[]|null $value
87
     * @return UserQuery
88
     */
89
    public function organizationId($value): UserQuery
90
    {
91
        return $this->setOrganization($value);
92
    }
93
94
    /**
95
     * Extract the sub nodes (userType and type) from a criteria array
96
     *
97
     * @param array $value
98
     */
99
    private function findSubNodes(array &$value)
100
    {
101
        if (null !== ($subValue = ArrayHelper::remove($value, 'organizationType'))) {
102
            $this->handler->setOrganizationType($subValue);
103
        }
104
105
        if (null !== ($subValue = ArrayHelper::remove($value, 'userType'))) {
106
            $this->handler->setUserType($subValue);
107
        }
108
    }
109
}
110