Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
namespace Faker\Provider\pl_PL;
4
 
5
/**
6
 * Most popular first and last names published by Ministry of the Interior:
7
 *
8
 * @see https://msw.gov.pl/pl/sprawy-obywatelskie/ewidencja-ludnosci-dowo/statystyki-imion-i-nazw
9
 */
10
class Person extends \Faker\Provider\Person
11
{
12
    protected static $lastNameFormat = [
13
        '{{lastNameMale}}',
14
        '{{lastNameFemale}}',
15
    ];
16
 
17
    protected static $maleNameFormats = [
18
        '{{firstNameMale}} {{lastNameMale}}',
19
        '{{firstNameMale}} {{lastNameMale}}',
20
        '{{firstNameMale}} {{lastNameMale}}',
21
        '{{title}} {{firstNameMale}} {{lastNameMale}}',
22
        '{{firstNameMale}} {{lastNameMale}}',
23
        '{{title}} {{title}} {{firstNameMale}} {{lastNameMale}}',
24
    ];
25
 
26
    protected static $femaleNameFormats = [
27
        '{{firstNameFemale}} {{lastNameFemale}}',
28
        '{{firstNameFemale}} {{lastNameFemale}}',
29
        '{{firstNameFemale}} {{lastNameFemale}}',
30
        '{{title}} {{firstNameFemale}} {{lastNameFemale}}',
31
        '{{firstNameFemale}} {{lastNameFemale}}',
32
        '{{title}} {{title}} {{firstNameFemale}} {{lastNameFemale}}',
33
    ];
34
 
35
    protected static $firstNameMale = [
36
        'Adam', 'Adrian', 'Alan', 'Albert', 'Aleks', 'Aleksander', 'Alex', 'Andrzej', 'Antoni', 'Arkadiusz', 'Artur',
37
        'Bartek', 'Błażej', 'Borys', 'Bruno', 'Cezary', 'Cyprian', 'Damian', 'Daniel', 'Dariusz', 'Dawid', 'Dominik',
38
        'Emil', 'Ernest', 'Eryk', 'Fabian', 'Filip', 'Franciszek', 'Fryderyk', 'Gabriel', 'Grzegorz', 'Gustaw', 'Hubert',
39
        'Ignacy', 'Igor', 'Iwo', 'Jacek', 'Jakub', 'Jan', 'Jeremi', 'Jerzy', 'Jędrzej', 'Józef', 'Julian', 'Juliusz',
40
        'Kacper', 'Kajetan', 'Kamil', 'Karol', 'Kazimierz', 'Konrad', 'Konstanty', 'Kornel', 'Krystian', 'Krzysztof', 'Ksawery',
41
        'Leon', 'Leonard', 'Łukasz', 'Maciej', 'Maks', 'Maksymilian', 'Marcel', 'Marcin', 'Marek', 'Mariusz', 'Mateusz', 'Maurycy',
42
        'Michał', 'Mieszko', 'Mikołaj', 'Miłosz', 'Natan', 'Nataniel', 'Nikodem', 'Norbert', 'Olaf', 'Olgierd', 'Oliwier', 'Oskar',
43
        'Patryk', 'Paweł', 'Piotr', 'Przemysław', 'Radosław', 'Rafał', 'Robert', 'Ryszard', 'Sebastian', 'Stanisław', 'Stefan', 'Szymon',
44
        'Tadeusz', 'Tomasz', 'Tymon', 'Tymoteusz', 'Wiktor', 'Witold', 'Wojciech',
45
    ];
46
 
47
    protected static $firstNameFemale = [
48
        'Ada', 'Adrianna', 'Agata', 'Agnieszka', 'Aleksandra', 'Alicja', 'Amelia', 'Anastazja', 'Angelika', 'Aniela', 'Anita',
49
        'Anna', 'Anna', 'Antonina', 'Apolonia', 'Aurelia', 'Barbara', 'Bianka', 'Blanka', 'Dagmara', 'Daria', 'Dominika', 'Dorota',
50
        'Eliza', 'Elżbieta', 'Emilia', 'Ewa', 'Ewelina', 'Gabriela', 'Hanna', 'Helena', 'Ida', 'Iga', 'Inga', 'Izabela',
51
        'Jagoda', 'Janina', 'Joanna', 'Julia', 'Julianna', 'Julita', 'Justyna', 'Kaja', 'Kalina', 'Kamila', 'Karina', 'Karolina',
52
        'Katarzyna', 'Kinga', 'Klara', 'Klaudia', 'Kornelia', 'Krystyna', 'Laura', 'Lena', 'Lidia', 'Liliana', 'Liwia', 'Łucja',
53
        'Magdalena', 'Maja', 'Malwina', 'Małgorzata', 'Marcelina', 'Maria', 'Marianna', 'Marika', 'Marta', 'Martyna', 'Matylda',
54
        'Melania', 'Michalina', 'Milena', 'Monika', 'Nadia', 'Natalia', 'Natasza', 'Nela', 'Nicole', 'Nikola', 'Nina',
55
        'Olga', 'Oliwia', 'Patrycja', 'Paulina', 'Pola', 'Roksana', 'Rozalia', 'Róża', 'Sandra', 'Sara', 'Sonia', 'Sylwia',
56
        'Tola', 'Urszula', 'Weronika', 'Wiktoria', 'Zofia', 'Zuzanna',
57
    ];
58
 
59
    protected static $lastNameMale = [
60
        'Adamczyk', 'Adamski', 'Andrzejewski', 'Baran', 'Baranowski', 'Bąk', 'Błaszczyk', 'Borkowski', 'Borowski', 'Brzeziński',
61
        'Chmielewski', 'Cieślak', 'Czarnecki', 'Czerwiński', 'Dąbrowski', 'Duda', 'Dudek', 'Gajewski', 'Głowacki', 'Górski', 'Grabowski',
62
        'Jabłoński', 'Jakubowski', 'Jankowski', 'Jasiński', 'Jaworski', 'Kaczmarczyk', 'Kaczmarek', 'Kalinowski', 'Kamiński', 'Kaźmierczak',
63
        'Kołodziej', 'Konieczny', 'Kowalczyk', 'Kowalski', 'Kozłowski', 'Krajewski', 'Krawczyk', 'Król', 'Krupa', 'Kubiak', 'Kucharski', 'Kwiatkowski',
64
        'Laskowski', 'Lewandowski', 'Lis', 'Maciejewski', 'Majewski', 'Makowski', 'Malinowski', 'Marciniak', 'Mazur', 'Mazurek', 'Michalak',
65
        'Michalski', 'Mróz', 'Nowak', 'Nowakowski', 'Nowicki', 'Olszewski', 'Ostrowski', 'Pawlak', 'Pawłowski', 'Pietrzak', 'Piotrowski', 'Przybylski',
66
        'Rutkowski', 'Sadowski', 'Sawicki', 'Sikora', 'Sikorski', 'Sobczak', 'Sokołowski', 'Stępień', 'Szczepański', 'Szewczyk', 'Szulc', 'Szymański', 'Szymczak',
67
        'Tomaszewski', 'Urbański', 'Walczak', 'Wasilewski', 'Wieczorek', 'Wilk', 'Wiśniewski', 'Witkowski', 'Włodarczyk', 'Wojciechowski',
68
        'Woźniak', 'Wójcik', 'Wróbel', 'Wróblewski', 'Wysocki', 'Zając', 'Zakrzewski', 'Zalewski', 'Zawadzki', 'Zieliński', 'Ziółkowski',
69
    ];
70
 
71
    protected static $lastNameFemale = [
72
        'Adamczyk', 'Adamska', 'Andrzejewska', 'Baran', 'Baranowska', 'Bąk', 'Błaszczyk', 'Borkowska', 'Borowska', 'Brzezińska',
73
        'Chmielewska', 'Cieślak', 'Czarnecka', 'Czerwińska', 'Dąbrowska', 'Duda', 'Dudek', 'Gajewska', 'Głowacka', 'Górecka', 'Górska', 'Grabowska',
74
        'Jabłońska', 'Jakubowska', 'Jankowska', 'Jasińska', 'Jaworska', 'Kaczmarczyk', 'Kaczmarek', 'Kalinowska', 'Kamińska', 'Kaźmierczak',
75
        'Kołodziej', 'Kowalczyk', 'Kowalska', 'Kozłowska', 'Krajewska', 'Krawczyk', 'Król', 'Krupa', 'Kubiak', 'Kucharska', 'Kwiatkowska',
76
        'Laskowska', 'Lewandowska', 'Lis', 'Maciejewska', 'Majewska', 'Makowska', 'Malinowska', 'Marciniak', 'Mazur', 'Mazurek', 'Michalak',
77
        'Michalska', 'Mróz', 'Nowak', 'Nowakowska', 'Nowicka', 'Olszewska', 'Ostrowska', 'Pawlak', 'Pawłowska', 'Pietrzak', 'Piotrowska', 'Przybylska',
78
        'Rutkowska', 'Sadowska', 'Sawicka', 'Sikora', 'Sikorska', 'Sobczak', 'Sokołowska', 'Stępień', 'Szczepańska', 'Szewczyk', 'Szulc', 'Szymańska', 'Szymczak',
79
        'Tomaszewska', 'Urbańska', 'Walczak', 'Wasilewska', 'Wieczorek', 'Wilk', 'Wiśniewska', 'Witkowska', 'Włodarczyk', 'Wojciechowska',
80
        'Woźniak', 'Wójcik', 'Wróbel', 'Wróblewska', 'Wysocka', 'Zając', 'Zakrzewska', 'Zalewska', 'Zawadzka', 'Zielińska', 'Ziółkowska',
81
    ];
82
 
83
    /**
84
     * Unisex academic degree
85
     *
86
     * @var string[]
87
     */
88
    protected static $title = ['mgr', 'inż.', 'dr', 'doc.'];
89
 
90
    /**
91
     * @param string|null $gender 'male', 'female' or null for any
92
     *
93
     * @example 'Adamczyk'
94
     */
95
    public function lastName($gender = null)
96
    {
97
        if ($gender === static::GENDER_MALE) {
98
            return static::lastNameMale();
99
        }
100
 
101
        if ($gender === static::GENDER_FEMALE) {
102
            return static::lastNameFemale();
103
        }
104
 
105
        return $this->generator->parse(static::randomElement(static::$lastNameFormat));
106
    }
107
 
108
    public static function lastNameMale()
109
    {
110
        return static::randomElement(static::$lastNameMale);
111
    }
112
 
113
    public static function lastNameFemale()
114
    {
115
        return static::randomElement(static::$lastNameFemale);
116
    }
117
 
118
    public function title($gender = null)
119
    {
120
        return static::randomElement(static::$title);
121
    }
122
 
123
    /**
124
     * replaced by specific unisex Polish title
125
     */
126
    public static function titleMale()
127
    {
128
        return static::randomElement(static::$title);
129
    }
130
 
131
    /**
132
     * replaced by specific unisex Polish title
133
     */
134
    public static function titleFemale()
135
    {
136
        return static::randomElement(static::$title);
137
    }
138
 
139
    /**
140
     * PESEL - Universal Electronic System for Registration of the Population
141
     *
142
     * @see http://en.wikipedia.org/wiki/PESEL
143
     *
144
     * @param DateTime $birthdate
145
     * @param string   $sex       M for male or F for female
146
     *
147
     * @return string 11 digit number, like 44051401358
148
     */
149
    public static function pesel($birthdate = null, $sex = null)
150
    {
151
        if ($birthdate === null) {
152
            $birthdate = \Faker\Provider\DateTime::dateTimeThisCentury();
153
        }
154
 
155
        $weights = [1, 3, 7, 9, 1, 3, 7, 9, 1, 3];
156
        $length = count($weights);
157
 
158
        $fullYear = (int) $birthdate->format('Y');
159
        $year = (int) $birthdate->format('y');
160
        $month = $birthdate->format('m') + (((int) ($fullYear / 100) - 14) % 5) * 20;
161
        $day = $birthdate->format('d');
162
 
163
        $result = [(int) ($year / 10), $year % 10, (int) ($month / 10), $month % 10, (int) ($day / 10), $day % 10];
164
 
165
        for ($i = 6; $i < $length; ++$i) {
166
            $result[$i] = static::randomDigit();
167
        }
168
 
169
        $result[$length - 1] |= 1;
170
 
171
        if ($sex == 'F') {
172
            $result[$length - 1] -= 1;
173
        }
174
 
175
        $checksum = 0;
176
 
177
        for ($i = 0; $i < $length; ++$i) {
178
            $checksum += $weights[$i] * $result[$i];
179
        }
180
        $checksum = (10 - ($checksum % 10)) % 10;
181
        $result[] = $checksum;
182
 
183
        return implode('', $result);
184
    }
185
 
186
    /**
187
     * National Identity Card number
188
     *
189
     * @see http://en.wikipedia.org/wiki/Polish_National_Identity_Card
190
     *
191
     * @return string 3 letters and 6 digits, like ABA300000
192
     */
193
    public static function personalIdentityNumber()
194
    {
195
        $range = str_split('ABCDEFGHIJKLMNPRSTUVWXYZ');
196
        $low = ['A', static::randomElement($range), static::randomElement($range)];
197
        $high = [static::randomDigit(), static::randomDigit(), static::randomDigit(), static::randomDigit(), static::randomDigit()];
198
        $weights = [7, 3, 1, 7, 3, 1, 7, 3];
199
        $checksum = 0;
200
 
201
        for ($i = 0, $size = count($low); $i < $size; ++$i) {
202
            $checksum += $weights[$i] * (ord($low[$i]) - 55);
203
        }
204
 
205
        for ($i = 0, $size = count($high); $i < $size; ++$i) {
206
            $checksum += $weights[$i + 3] * $high[$i];
207
        }
208
        $checksum %= 10;
209
 
210
        return implode('', $low) . $checksum . implode('', $high);
211
    }
212
 
213
    /**
214
     * Taxpayer Identification Number (NIP in Polish)
215
     *
216
     * @see http://en.wikipedia.org/wiki/PESEL#Other_identifiers
217
     * @see http://pl.wikipedia.org/wiki/NIP
218
     *
219
     * @return string 10 digit number
220
     */
221
    public static function taxpayerIdentificationNumber()
222
    {
223
        $weights = [6, 5, 7, 2, 3, 4, 5, 6, 7];
224
        $result = [];
225
 
226
        do {
227
            $result = [
228
                static::randomDigitNotNull(), static::randomDigitNotNull(), static::randomDigitNotNull(),
229
                static::randomDigit(), static::randomDigit(), static::randomDigit(),
230
                static::randomDigit(), static::randomDigit(), static::randomDigit(),
231
            ];
232
            $checksum = 0;
233
 
234
            for ($i = 0, $size = count($result); $i < $size; ++$i) {
235
                $checksum += $weights[$i] * $result[$i];
236
            }
237
            $checksum %= 11;
238
        } while ($checksum == 10);
239
        $result[] = $checksum;
240
 
241
        return implode('', $result);
242
    }
243
}