EmailAddress::setNeedsTrimming()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 2
c 0
b 0
f 0
rs 10
nc 1
nop 0
cc 1
1
<?php
2
3
namespace andmemasin\emailsvalidator\models;
4
5
6
use Egulias\EmailValidator\EmailValidator;
7
use Egulias\EmailValidator\Validation\NoRFCWarningsValidation;
8
use Egulias\EmailValidator\Validation\SpoofCheckValidation;
9
use yii\base\Model;
10
use Egulias\EmailValidator\Validation\RFCValidation;
11
use Egulias\EmailValidator\Validation\DNSCheckValidation;
12
use yii;
13
14
/**
15
 * Class EmailAddress
16
 * @author Tõnis Ormisson <[email protected]>
17
 * @package andmemasin\emailsvalidator\models
18
 */
19
class EmailAddress extends Model
20
{
21
    /** @var  EmailValidator $validator */
22
    private $validator;
23
24
    /** @var string $address */
25
    public $address;
26
27
    /** @var boolean */
28
    public $isValid = true;
29
30
    /** @var boolean */
31
    public $isValidRFC = true;
32
33
    /** @var boolean */
34
    public $isNoRFCWarnings = true;
35
36
    /** @var boolean */
37
    public $isValidDNS = true;
38
39
    /** @var boolean */
40
    public $isValidSpoofCheck = true;
41
42
    /** @var boolean */
43
    public $needsTrimming;
44
45
    /** @var string $error */
46
    public $error;
47
48
    /** @var  boolean */
49
    public $checkDNS = true;
50
51
    /** @var  boolean */
52
    public $checkSpoof = true;
53
54
    public function init()
55
    {
56
        parent::init();
57
        $this->validator = new EmailValidator();
58
59
        $this->runValidator();
60
    }
61
62
    public function attributeLabels()
63
    {
64
        return [
65
            'address'=>Yii::t('app','E-mail address'),
66
            'isValid'=>Yii::t('app','Is valid?'),
67
            'isValidRFC'=>Yii::t('app','In line with RFC standard?'),
68
            'isNoRFCWarnings'=>Yii::t('app','No RFC warnings?'),
69
            'isValidDNS'=>Yii::t('app','DNS check passed?'),
70
            'needsTrimming'=>Yii::t('app','Has spaces to be trimmed?'),
71
            'isValidSpoofCheck'=>Yii::t('app','Spoof check OK?'),
72
73
        ];
74
    }
75
76
77
    /**
78
     * run the different validators
79
     * @return void
80
     */
81
    private function runValidator(){
82
        $this->isValidRFC = $this->validator->isValid($this->address, new RFCValidation());
83
        $this->isNoRFCWarnings = $this->validator->isValid($this->address, new NoRFCWarningsValidation());
84
85
        if($this->checkDNS){
86
            $this->isValidDNS = $this->validator->isValid($this->address, new DNSCheckValidation());
87
        }
88
89
        if($this->checkSpoof) {
90
            $this->isValidSpoofCheck = $this->validator->isValid($this->address, new SpoofCheckValidation());
91
        }
92
93
        $this->setNeedsTrimming();
94
        $this->isValid = ($this->isValidRFC && $this->isNoRFCWarnings && $this->isValidDNS && $this->isValidSpoofCheck );
95
    }
96
97
    private function setNeedsTrimming(){
98
        $this->needsTrimming = ($this->address !== trim($this->address));
99
    }
100
101
}