Completed
Push — master ( 52bc20...1f4d4b )
by Konstantin
02:50
created

PassportHelper   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 87
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 96.88%

Importance

Changes 2
Bugs 2 Features 0
Metric Value
wmc 14
lcom 1
cbo 2
dl 0
loc 87
ccs 31
cts 32
cp 0.9688
rs 10
c 2
b 2
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A set() 0 6 1
A setLanguage() 0 10 2
C explodePassport() 0 23 8
A getPassSrc() 0 4 1
A getPassNum() 0 4 1
A get() 0 4 1
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->pass_srs = mb_substr($this->passport, 0, 4);
58 1
            $this->pass_num = mb_substr($this->passport, 4, 6);
59 4
        } elseif ($is_valid_ua) {
60 2
            $this->pass_srs = mb_substr($this->passport, 0, 2);
61 2
            $this->pass_num = mb_substr($this->passport, 2, 6);
62 2
            if (!($this->isText($this->pass_srs) && $this->isInteger($this->pass_num))) {
63 1
                $this->passport = $this->pass_num = $this->pass_srs = false;
64 1
            }
65 2
        } else {
66 1
            $this->passport = $this->pass_num = $this->pass_srs = false;
67
        }
68
69 4
        return $this;
70
    }
71
72
    /**
73
     * @return mixed
74
     */
75 4
    public function getPassSrc()
76
    {
77 4
        return $this->pass_srs;
78
    }
79
80
    /**
81
     * @return mixed
82
     */
83 2
    public function getPassNum()
84
    {
85 2
        return $this->pass_num;
86
    }
87
88
    /**
89
     * @return array
90
     */
91 2
    public function get()
92
    {
93 2
        return ['pass_src' => $this->pass_srs, 'pass_num' => $this->pass_num];
94
    }
95
}