Completed
Push — master ( e219aa...e1fcb3 )
by Nate
06:24 queued 05:08
created

Domain::rules()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 42
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 42
ccs 0
cts 42
cp 0
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 20
nc 1
nop 0
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\craft\sortable\associations\services\SortableAssociations;
13
use flipbox\domains\db\DomainsQuery;
14
use flipbox\domains\Domains as DomainsPlugin;
15
use flipbox\domains\fields\Domains;
16
use flipbox\domains\validators\DomainValidator;
17
use flipbox\ember\helpers\ModelHelper;
18
use flipbox\ember\traits\SiteRules;
19
20
/**
21
 * @author Flipbox Factory <[email protected]>
22
 * @since  1.0.0
23
 *
24
 * @property int $fieldId
25
 * @property string $domain
26
 * @property int $elementId
27
 */
28
class Domain extends SortableAssociation
29
{
30
    use SiteRules;
31
32
    /**
33
     * @inheritdoc
34
     */
35
    const TABLE_ALIAS = 'domains';
36
37
    /**
38
     * @inheritdoc
39
     */
40
    const TARGET_ATTRIBUTE = 'domain';
41
42
    /**
43
     * @inheritdoc
44
     */
45
    const SOURCE_ATTRIBUTE = 'elementId';
46
47
    /**
48
     * @inheritdoc
49
     */
50
    protected function associationService(): SortableAssociations
51
    {
52
        return DomainsPlugin::getInstance()->getAssociations();
53
    }
54
55
    /**
56
     * {@inheritdoc}
57
     * @return DomainsQuery
58
     */
59
    public static function find()
60
    {
61
        return DomainsPlugin::getInstance()->getAssociations()->getQuery();
62
    }
63
64
    /**
65
     * @return array
66
     */
67
    public function rules(): array
68
    {
69
        return array_merge(
70
            parent::rules(),
71
            $this->siteRules(),
72
            [
73
                [
74
                    [
75
                        'status',
76
                        'fieldId',
77
                    ],
78
                    'required'
79
                ],
80
                [
81
                    [
82
                        'fieldId'
83
                    ],
84
                    'number',
85
                    'integerOnly' => true
86
                ],
87
                [
88
                    'domain',
89
                    DomainValidator::class
90
                ],
91
                [
92
                    'status',
93
                    'in',
94
                    'range' => array_keys(Domains::getStatuses())
95
                ],
96
                [
97
                    [
98
                        'fieldId',
99
                        'status',
100
                    ],
101
                    'safe',
102
                    'on' => [
103
                        ModelHelper::SCENARIO_DEFAULT
104
                    ]
105
                ]
106
            ]
107
        );
108
    }
109
}
110