Completed
Push — master ( 1f4d4b...a8745e )
by Konstantin
01:37
created

PassportHelper::explodeUaPassport()   A

Complexity

Conditions 3
Paths 2

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3

Importance

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