Completed
Push — develop ( 54eba4...9cf550 )
by Nate
09:57
created

Domain::associate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 7
ccs 0
cts 7
cp 0
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 4
nc 1
nop 1
crap 2
1
<?php
2
3
/**
4
 * @copyright  Copyright (c) Flipbox Digital Limited
5
 * @license    https://flipboxfactory.com/software/domains/license
6
 * @link       https://www.flipboxfactory.com/software/domains/
7
 */
8
9
namespace flipbox\domains\records;
10
11
use flipbox\craft\sortable\associations\records\SortableAssociation;
12
use flipbox\domains\db\DomainsQuery;
13
use flipbox\domains\Domains as DomainsPlugin;
14
use flipbox\domains\fields\Domains;
15
use flipbox\domains\validators\DomainValidator;
16
use flipbox\ember\helpers\ModelHelper;
17
use flipbox\ember\traits\SiteRules;
18
19
/**
20
 * @author Flipbox Factory <[email protected]>
21
 * @since  1.0.0
22
 *
23
 * @property int $fieldId
24
 * @property string $domain
25
 * @property int $elementId
26
 */
27
class Domain extends SortableAssociation
28
{
29
    use SiteRules;
30
31
    /**
32
     * @inheritdoc
33
     */
34
    const TABLE_ALIAS = 'domains';
35
36
    /**
37
     * @inheritdoc
38
     */
39
    const TARGET_ATTRIBUTE = 'domain';
40
41
    /**
42
     * @inheritdoc
43
     */
44
    const SOURCE_ATTRIBUTE = 'elementId';
45
46
    /**
47
     * {@inheritdoc}
48
     * @return DomainsQuery
49
     */
50
    public static function find()
51
    {
52
        return DomainsPlugin::getInstance()->getAssociations()->getQuery();
53
    }
54
55
    /**
56
     * @inheritdoc
57
     */
58
    public function associate(bool $autoReorder = true): bool
59
    {
60
        return DomainsPlugin::getInstance()->getAssociations()->associate(
61
            $this,
62
            $autoReorder
63
        );
64
    }
65
66
    /**
67
     * @inheritdoc
68
     */
69
    public function dissociate(bool $autoReorder = true): bool
70
    {
71
        return DomainsPlugin::getInstance()->getAssociations()->dissociate(
72
            $this,
73
            $autoReorder
74
        );
75
    }
76
77
    /**
78
     * @return array
79
     */
80
    public function rules(): array
81
    {
82
        return array_merge(
83
            parent::rules(),
84
            $this->siteRules(),
85
            [
86
                [
87
                    [
88
                        'status',
89
                        'fieldId',
90
                    ],
91
                    'required'
92
                ],
93
                [
94
                    [
95
                        'fieldId'
96
                    ],
97
                    'number',
98
                    'integerOnly' => true
99
                ],
100
                [
101
                    'domain',
102
                    DomainValidator::class
103
                ],
104
                [
105
                    'status',
106
                    'in',
107
                    'range' => array_keys(Domains::getStatuses())
108
                ],
109
                [
110
                    [
111
                        'fieldId',
112
                        'status',
113
                    ],
114
                    'safe',
115
                    'on' => [
116
                        ModelHelper::SCENARIO_DEFAULT
117
                    ]
118
                ]
119
            ]
120
        );
121
    }
122
}
123