| Conditions | 5 |
| Paths | 4 |
| Total Lines | 23 |
| Code Lines | 13 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
| 1 | <?php |
||
| 12 | public function passes($attribute, $value): bool |
||
| 13 | { |
||
| 14 | $imei = $value; |
||
| 15 | |||
| 16 | if (strlen($imei) != 15 || ! ctype_digit($imei)) { |
||
| 17 | return false; |
||
| 18 | } |
||
| 19 | |||
| 20 | $digits = str_split($imei); // Get digits |
||
| 21 | $imei_last = array_pop($digits); // Remove last digit, and store it |
||
|
|
|||
| 22 | $log = []; |
||
| 23 | |||
| 24 | foreach ($digits as $key => $n) { |
||
| 25 | if ($key & 1) { |
||
| 26 | $double = str_split($n * 2); // Get double digits |
||
| 27 | $n = array_sum($double); // Sum double digits |
||
| 28 | } |
||
| 29 | |||
| 30 | $log[] = $n; // Append log |
||
| 31 | } |
||
| 32 | $sum = array_sum($log) * 9; // Sum log & multiply by 9 |
||
| 33 | |||
| 34 | return substr($sum, -1) === $imei_last; |
||
| 35 | } |
||
| 45 |