Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
CRAP | |
100.00% |
8 / 8 |
Phone | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
2 | |
100.00% |
8 / 8 |
check | |
100.00% |
1 / 1 |
2 | |
100.00% |
8 / 8 |
1 | <?php |
2 | |
3 | namespace Qmp\Laravel\ValidationRules\Rules; |
4 | |
5 | class Phone extends Rule |
6 | { |
7 | /** |
8 | * Undocumented variable |
9 | * |
10 | * @var string |
11 | */ |
12 | protected $message = 'The :attribute must be a valid phone number'; |
13 | |
14 | /** |
15 | * Undocumented variable |
16 | * |
17 | * @var array |
18 | */ |
19 | protected $patterns = [ |
20 | 'FR' => '/^(?:(?:\+|00)33|0|\+33\(0\))[1-9](?:[\s.-]*\d{2}){4}$/i', |
21 | 'IT' => '/^(\((00|\+)39\)|(00|\+)39)?(38[890]|34[7-90]|36[680]|33[3-90]|32[89])\d{7}$/i', |
22 | ]; |
23 | |
24 | /** |
25 | * Undocumented function |
26 | * |
27 | * @param string $attribute |
28 | * @param mixed $value |
29 | * @param array $parameters |
30 | * @return bool |
31 | */ |
32 | public function check(string $attribute, $value, array $parameters): bool |
33 | { |
34 | $parameters = array_map('strtoupper', $parameters); |
35 | $value = preg_replace('/[^0-9+]/', '', $value); |
36 | |
37 | $patterns = collect($this->patterns); |
38 | $patterns = empty($parameters) ? $patterns : $patterns->only($parameters); |
39 | |
40 | $filtered = $patterns->filter(function ($pattern) use ($value) { |
41 | return preg_match($pattern, $value); |
42 | }); |
43 | |
44 | return $filtered->count() > 0; |
45 | } |
46 | } |