PassportHelper::setLanguage()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 10
c 0
b 0
f 0
ccs 5
cts 5
cp 1
rs 9.4285
nc 2
cc 2
eloc 6
nop 1
crap 2
1
<?php
2
3
namespace phrlog\FormHelper;
4
5
/**
6
 * Class PassportHelper
7
 * @package FormHelper
8
 */
9
class PassportHelper extends AbstractFormHelper
10
{
11
    use ValidationTrait;
12
13
    public $passport;
14
    public $language;
15
16
    public $pass_srs;
17
    public $pass_num;
18
19
    /**
20
     * @param $passport
21
     * @return $this
22
     */
23 5
    public function set($passport)
24
    {
25 5
        $this->passport = $passport;
26
27 5
        return $this;
28
    }
29
30
    /**
31
     * @param $language
32
     * @return $this
33
     */
34 5
    public function setLanguage($language)
35
    {
36 5
        if (in_array($language, ['ru', 'ua'])) {
37 4
            $this->language = $language;
38
        } else {
39 1
            $this->language = false;
40
        }
41
42 5
        return $this;
43
    }
44
45
    /**
46
     * @return $this
47
     */
48 5
    public function explodePassport()
49
    {
50 5
        mb_internal_encoding("UTF-8");
51
52 5
        $pass_length = mb_strlen($this->passport);
53 5
        $is_valid_ru = $this->language == 'ru' && $pass_length == 10 && $this->isInteger($this->passport);
54 5
        $is_valid_ua = $this->language == 'ua' && $pass_length == 8;
55
56 5
        if ($is_valid_ru) {
57 1
            return $this->explodeRuPassport();
58 4
        } elseif ($is_valid_ua) {
59 2
            return $this->explodeUaPassport();
60
        }
61
62 2
        $this->passport = $this->pass_num = $this->pass_srs = false;
63
64 2
        return $this;
65
    }
66
67
    /**
68
     * Explode ru passport
69
     *
70
     * @return $this
71
     */
72 1
    protected function explodeRuPassport()
73
    {
74 1
        $this->pass_srs = mb_substr($this->passport, 0, 4);
75 1
        $this->pass_num = mb_substr($this->passport, 4, 6);
76
77 1
        return $this;
78
    }
79
80
    /**
81
     * Explode ua passport
82
     *
83
     * @return $this
84
     */
85 2
    protected function explodeUaPassport()
86
    {
87 2
        $this->pass_srs = mb_substr($this->passport, 0, 2);
88 2
        $this->pass_num = mb_substr($this->passport, 2, 6);
89 2
        if (!($this->isText($this->pass_srs) && $this->isInteger($this->pass_num))) {
90 1
            $this->passport = $this->pass_num = $this->pass_srs = false;
91
        }
92
93 2
        return $this;
94
    }
95
96
    /**
97
     * @return mixed
98
     */
99 5
    public function getPassSrc()
100
    {
101 5
        return $this->pass_srs;
102
    }
103
104
    /**
105
     * @return mixed
106
     */
107 2
    public function getPassNum()
108
    {
109 2
        return $this->pass_num;
110
    }
111
112
    /**
113
     * @return array
114
     */
115 2
    public function get()
116
    {
117 2
        return ['pass_src' => $this->pass_srs, 'pass_num' => $this->pass_num];
118
    }
119
}