1
0
mirror of https://github.com/fzaninotto/Faker.git synced 2025-03-20 07:19:50 +01:00

added comments and linked sources; use \Faker\Provider\DateTime::dateTimeThisCentury() for brithdate; added taxpayerIdentificationNumber()

This commit is contained in:
John Was 2013-09-17 22:06:34 +02:00
parent cb3e371b7e
commit 8119a9388e
2 changed files with 48 additions and 4 deletions
src/Faker/Provider/pl_PL

@ -13,6 +13,9 @@ class Address extends \Faker\Provider\Address
protected static $buildingNumber = array('##A', '##', '##A/##', '##/##');
protected static $postcode = array('##-###');
/**
* @var array full list of Polish voivodeship
*/
protected static $state = array(
'dolnośląskie','kujawsko-pomorskie','lubelskie','lubuskie','łódzkie','małopolskie','mazowieckie','opolskie','podkarpackie',
'podlaskie','pomorskie','śląskie','świętokrzyskie','warmińsko-mazurskie','wielkopolskie','zachodniopomorskie'
@ -20,6 +23,9 @@ class Address extends \Faker\Provider\Address
protected static $country = array(
'Polska',
);
/**
* @var array 250 Polish cities with biggest number of streets. Extracted from data issued by the official public postal service of Poland. @link http://www.poczta-polska.pl/
*/
protected static $city = array(
'Warszawa','Kraków','Łódź','Poznań','Wrocław','Gdańsk','Szczecin','Bydgoszcz','Lublin','Bielsko-Biała','Częstochowa','Katowice','Białystok','Gdynia','Radom',
'Rzeszów','Gliwice','Kielce','Opole','Rybnik','Sosnowiec','Zabrze','Ruda Śląska','Jaworzno','Olsztyn','Zielona Góra','Bytom','Koszalin','Dąbrowa Górnicza',
@ -39,6 +45,9 @@ class Address extends \Faker\Provider\Address
'Kętrzyn','Ostróda','Bochnia','Jelcz-Laskowice','Ząbki','Września','Bielawa','Nowy Targ','Giżycko','Dzierżoniów','Myszków','Marylka','Czechowice-Dziedzice','Łowicz','Łomianki','Świebodzice',
'Świebodzin','Lubojenka','Lubliniec','Świecie','Lubartów','Lidzbark Warmiński','Świdnik','Pisz','Szczytno','Świdwin','Kozienice','Brodnica','Kościerzyna','Braniewo','Koło'
);
/**
* @var array 549 most common Polish street names. Extracted from data issued by the official public postal service of Poland. @link http://www.poczta-polska.pl/
*/
protected static $street = array(
'Kościuszki Tadeusza','Mickiewicza Adama','Szkolna','Dworcowa','Kolejowa','Sienkiewicza Henryka','Rynek','Warszawska','Wojska Polskiego','Żeromskiego Stefana',
'Polna','1 Maja','Ogrodowa','Pocztowa','Grunwaldzka','Kopernika Mikołaja','Leśna','Lipowa','Słowackiego Juliusza','Parkowa','Kościelna','Jagiellońska','Słoneczna',

@ -53,13 +53,17 @@ class Person extends \Faker\Provider\Person
}
/**
* PESEL - Universal Electronic System for Registration of the Population
* @link http://en.wikipedia.org/wiki/PESEL
* @param DateTime $birthdate
* @param string $sex M for male or F for female
* @return string 11 digit number, like 44051401358
*/
public static function pesel($birthdate = null, $sex = null)
{
if ($birthdate === null)
$birthdate = new \DateTime(date('Y-m-d',mt_rand(strtotime('1800-01-0'), time())));
if ($birthdate === null) {
$birthdate = \Faker\Provider\DateTime::dateTimeThisCentury();
}
$weights = array(1, 3, 7, 9, 1, 3, 7, 9, 1, 3);
$length = count($weights);
@ -75,9 +79,9 @@ class Person extends \Faker\Provider\Person
$result[$i] = static::randomDigit();
}
if ($sex == "M") {
$b[$length - 1] |= 1;
$result[$length - 1] |= 1;
} elseif ($sex == "F") {
$b[$length - 1] ^= 1;
$result[$length - 1] ^= 1;
}
$checksum = 0;
for ($i = 0; $i < $length; $i++) {
@ -88,6 +92,11 @@ class Person extends \Faker\Provider\Person
return implode('',$result);
}
/**
* National Identity Card number
* @link http://en.wikipedia.org/wiki/Polish_National_Identity_Card
* @return string 3 letters and 6 digits, like ABA300000
*/
public static function personalIdentityNumber()
{
$range = str_split("ABCDEFGHIJKLMNPRSTUVWXYZ");
@ -104,4 +113,30 @@ class Person extends \Faker\Provider\Person
$checksum %= 10;
return implode('',$low).$checksum.implode('',$high);
}
/**
* Taxpayer Identification Number (NIP in Polish)
* @link http://en.wikipedia.org/wiki/PESEL#Other_identifiers
* @link http://pl.wikipedia.org/wiki/NIP
* @return string 10 digit number
*/
public static function taxpayerIdentificationNumber()
{
$weights = array(6, 5, 7, 2, 3, 4, 5, 6, 7);
$result = array();
do {
$result = array(
static::randomDigitNotNull(), static::randomDigitNotNull(), static::randomDigitNotNull(),
static::randomDigit(), static::randomDigit(), static::randomDigit(),
static::randomDigit(), static::randomDigit(), static::randomDigit(),
);
$checksum = 0;
for ($i = 0; $i < count($result); $i++) {
$checksum += $weights[$i] * $result[$i];
}
$checksum %= 11;
} while ($checksum == 10);
$result[] = $checksum;
return implode('', $result);
}
}