init
This commit is contained in:
73
vendor/fzaninotto/faker/src/Faker/Calculator/Iban.php
vendored
Normal file
73
vendor/fzaninotto/faker/src/Faker/Calculator/Iban.php
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace Faker\Calculator;
|
||||
|
||||
class Iban
|
||||
{
|
||||
/**
|
||||
* Generates IBAN Checksum
|
||||
*
|
||||
* @param string $iban
|
||||
* @return string Checksum (numeric string)
|
||||
*/
|
||||
public static function checksum($iban)
|
||||
{
|
||||
// Move first four digits to end and set checksum to '00'
|
||||
$checkString = substr($iban, 4) . substr($iban, 0, 2) . '00';
|
||||
|
||||
// Replace all letters with their number equivalents
|
||||
$checkString = preg_replace_callback('/[A-Z]/', array('self','alphaToNumberCallback'), $checkString);
|
||||
|
||||
// Perform mod 97 and subtract from 98
|
||||
$checksum = 98 - self::mod97($checkString);
|
||||
|
||||
return str_pad($checksum, 2, '0', STR_PAD_LEFT);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $match
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
private static function alphaToNumberCallback($match)
|
||||
{
|
||||
return self::alphaToNumber($match[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts letter to number
|
||||
*
|
||||
* @param string $char
|
||||
* @return int
|
||||
*/
|
||||
public static function alphaToNumber($char)
|
||||
{
|
||||
return ord($char) - 55;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates mod97 on a numeric string
|
||||
*
|
||||
* @param string $number Numeric string
|
||||
* @return int
|
||||
*/
|
||||
public static function mod97($number)
|
||||
{
|
||||
$checksum = (int)$number[0];
|
||||
for ($i = 1, $size = strlen($number); $i < $size; $i++) {
|
||||
$checksum = (10 * $checksum + (int) $number[$i]) % 97;
|
||||
}
|
||||
return $checksum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether an IBAN has a valid checksum
|
||||
*
|
||||
* @param string $iban
|
||||
* @return boolean
|
||||
*/
|
||||
public static function isValid($iban)
|
||||
{
|
||||
return self::checksum($iban) === substr($iban, 2, 2);
|
||||
}
|
||||
}
|
||||
34
vendor/fzaninotto/faker/src/Faker/Calculator/Inn.php
vendored
Normal file
34
vendor/fzaninotto/faker/src/Faker/Calculator/Inn.php
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
namespace Faker\Calculator;
|
||||
|
||||
class Inn
|
||||
{
|
||||
/**
|
||||
* Generates INN Checksum
|
||||
*
|
||||
* https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BD%D0%BE%D0%BC%D0%B5%D1%80_%D0%BD%D0%B0%D0%BB%D0%BE%D0%B3%D0%BE%D0%BF%D0%BB%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D1%89%D0%B8%D0%BA%D0%B0
|
||||
*
|
||||
* @param string $inn
|
||||
* @return string Checksum (one digit)
|
||||
*/
|
||||
public static function checksum($inn)
|
||||
{
|
||||
$multipliers = array(1 => 2, 2 => 4, 3 => 10, 4 => 3, 5 => 5, 6 => 9, 7 => 4, 8 => 6, 9 => 8);
|
||||
$sum = 0;
|
||||
for ($i = 1; $i <= 9; $i++) {
|
||||
$sum += intval(substr($inn, $i-1, 1)) * $multipliers[$i];
|
||||
}
|
||||
return strval(($sum % 11) % 10);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether an INN has a valid checksum
|
||||
*
|
||||
* @param string $inn
|
||||
* @return boolean
|
||||
*/
|
||||
public static function isValid($inn)
|
||||
{
|
||||
return self::checksum(substr($inn, 0, -1)) === substr($inn, -1, 1);
|
||||
}
|
||||
}
|
||||
75
vendor/fzaninotto/faker/src/Faker/Calculator/Luhn.php
vendored
Normal file
75
vendor/fzaninotto/faker/src/Faker/Calculator/Luhn.php
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
namespace Faker\Calculator;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
/**
|
||||
* Utility class for generating and validating Luhn numbers.
|
||||
*
|
||||
* Luhn algorithm is used to validate credit card numbers, IMEI numbers, and
|
||||
* National Provider Identifier numbers.
|
||||
*
|
||||
* @see http://en.wikipedia.org/wiki/Luhn_algorithm
|
||||
*/
|
||||
class Luhn
|
||||
{
|
||||
/**
|
||||
* @param string $number
|
||||
* @return int
|
||||
*/
|
||||
private static function checksum($number)
|
||||
{
|
||||
$number = (string) $number;
|
||||
$length = strlen($number);
|
||||
$sum = 0;
|
||||
for ($i = $length - 1; $i >= 0; $i -= 2) {
|
||||
$sum += $number{$i};
|
||||
}
|
||||
for ($i = $length - 2; $i >= 0; $i -= 2) {
|
||||
$sum += array_sum(str_split($number{$i} * 2));
|
||||
}
|
||||
|
||||
return $sum % 10;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $partialNumber
|
||||
* @return string
|
||||
*/
|
||||
public static function computeCheckDigit($partialNumber)
|
||||
{
|
||||
$checkDigit = self::checksum($partialNumber . '0');
|
||||
if ($checkDigit === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (string) (10 - $checkDigit);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether a number (partial number + check digit) is Luhn compliant
|
||||
*
|
||||
* @param string $number
|
||||
* @return bool
|
||||
*/
|
||||
public static function isValid($number)
|
||||
{
|
||||
return self::checksum($number) === 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a Luhn compliant number.
|
||||
*
|
||||
* @param string $partialValue
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function generateLuhnNumber($partialValue)
|
||||
{
|
||||
if (!preg_match('/^\d+$/', $partialValue)) {
|
||||
throw new InvalidArgumentException('Argument should be an integer.');
|
||||
}
|
||||
return $partialValue . Luhn::computeCheckDigit($partialValue);
|
||||
}
|
||||
}
|
||||
52
vendor/fzaninotto/faker/src/Faker/Calculator/TCNo.php
vendored
Normal file
52
vendor/fzaninotto/faker/src/Faker/Calculator/TCNo.php
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace Faker\Calculator;
|
||||
|
||||
use InvalidArgumentException;
|
||||
|
||||
class TCNo
|
||||
{
|
||||
/**
|
||||
* Generates Turkish Identity Number Checksum
|
||||
* Gets first 9 digit as prefix and calcuates checksums
|
||||
*
|
||||
* https://en.wikipedia.org/wiki/Turkish_Identification_Number
|
||||
*
|
||||
* @param string $identityPrefix
|
||||
* @return string Checksum (two digit)
|
||||
*/
|
||||
public static function checksum($identityPrefix)
|
||||
{
|
||||
if (strlen((string)$identityPrefix) !== 9) {
|
||||
throw new InvalidArgumentException('Argument should be an integer and should be 9 digits.');
|
||||
}
|
||||
|
||||
$oddSum = 0;
|
||||
$evenSum = 0;
|
||||
|
||||
$identityArray = array_map('intval', str_split($identityPrefix)); // Creates array from int
|
||||
foreach ($identityArray as $index => $digit) {
|
||||
if ($index % 2 == 0) {
|
||||
$evenSum += $digit;
|
||||
} else {
|
||||
$oddSum += $digit;
|
||||
}
|
||||
}
|
||||
|
||||
$tenthDigit = (7 * $evenSum - $oddSum) % 10;
|
||||
$eleventhDigit = ($evenSum + $oddSum + $tenthDigit) % 10;
|
||||
|
||||
return $tenthDigit . $eleventhDigit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether an TCNo has a valid checksum
|
||||
*
|
||||
* @param string $tcNo
|
||||
* @return boolean
|
||||
*/
|
||||
public static function isValid($tcNo)
|
||||
{
|
||||
return self::checksum(substr($tcNo, 0, -2)) === substr($tcNo, -2, 2);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user