comparison vendor/sabre/vobject/bin/generate_vcards @ 7:430dbd5346f7

vendor sabre as distributed
author Charlie Root
date Sat, 13 Jan 2018 09:06:10 -0500
parents
children
comparison
equal deleted inserted replaced
6:cec75ba50afc 7:430dbd5346f7
1 #!/usr/bin/env php
2 <?php
3
4 namespace Sabre\VObject;
5
6 // This sucks.. we have to try to find the composer autoloader. But chances
7 // are, we can't find it this way. So we'll do our bestest
8 $paths = array(
9 __DIR__ . '/../vendor/autoload.php', // In case vobject is cloned directly
10 __DIR__ . '/../../../autoload.php', // In case vobject is a composer dependency.
11 );
12
13 foreach($paths as $path) {
14 if (file_exists($path)) {
15 include $path;
16 break;
17 }
18 }
19
20 if (!class_exists('Sabre\\VObject\\Version')) {
21 fwrite(STDERR, "Composer autoloader could not be properly loaded.\n");
22 die(1);
23 }
24
25 if ($argc < 2) {
26
27 $version = Version::VERSION;
28
29 $help = <<<HI
30 sabre/vobject $version
31 Usage:
32 generate_vcards [count]
33
34 Options:
35 count The number of random vcards to generate
36
37 Examples:
38 generate_vcards 1000 > testdata.vcf
39
40 HI;
41
42 fwrite(STDERR, $help);
43 exit(2);
44 }
45
46 $count = (int)$argv[1];
47 if ($count < 1) {
48 fwrite(STDERR, "Count must be at least 1\n");
49 exit(2);
50 }
51
52 fwrite(STDERR, "sabre/vobject " . Version::VERSION . "\n");
53 fwrite(STDERR, "Generating " . $count . " vcards in vCard 4.0 format\n");
54
55 /**
56 * The following list is just some random data we compiled from various
57 * sources online.
58 *
59 * Very little thought went into compiling this list, and certainly nothing
60 * political or ethical.
61 *
62 * We would _love_ more additions to this to add more variation to this list.
63 *
64 * Send us PR's and don't be shy adding your own first and last name for fun.
65 */
66
67 $sets = [
68 "nl" => [
69 "country" => "Netherlands",
70 "boys" => [
71 "Anno",
72 "Bram",
73 "Daan",
74 "Evert",
75 "Finn",
76 "Jayden",
77 "Jens",
78 "Jesse",
79 "Levi",
80 "Lucas",
81 "Luuk",
82 "Milan",
83 "René",
84 "Sem",
85 "Sibrand",
86 "Willem",
87 ],
88 "girls" => [
89 "Celia",
90 "Emma",
91 "Fenna",
92 "Geke",
93 "Inge",
94 "Julia",
95 "Lisa",
96 "Lotte",
97 "Mila",
98 "Sara",
99 "Sophie",
100 "Tess",
101 "Zoë",
102 ],
103 "last" => [
104 "Bakker",
105 "Bos",
106 "De Boer",
107 "De Groot",
108 "De Jong",
109 "De Vries",
110 "Jansen",
111 "Janssen",
112 "Meyer",
113 "Mulder",
114 "Peters",
115 "Smit",
116 "Van Dijk",
117 "Van den Berg",
118 "Visser",
119 "Vos",
120 ],
121 ],
122 "us" => [
123 "country" => "United States",
124 "boys" => [
125 "Aiden",
126 "Alexander",
127 "Charles",
128 "David",
129 "Ethan",
130 "Jacob",
131 "James",
132 "Jayden",
133 "John",
134 "Joseph",
135 "Liam",
136 "Mason",
137 "Michael",
138 "Noah",
139 "Richard",
140 "Robert",
141 "Thomas",
142 "William",
143 ],
144 "girls" => [
145 "Ava",
146 "Barbara",
147 "Chloe",
148 "Dorothy",
149 "Elizabeth",
150 "Emily",
151 "Emma",
152 "Isabella",
153 "Jennifer",
154 "Lily",
155 "Linda",
156 "Margaret",
157 "Maria",
158 "Mary",
159 "Mia",
160 "Olivia",
161 "Patricia",
162 "Roxy",
163 "Sophia",
164 "Susan",
165 "Zoe",
166 ],
167 "last" => [
168 "Smith",
169 "Johnson",
170 "Williams",
171 "Jones",
172 "Brown",
173 "Davis",
174 "Miller",
175 "Wilson",
176 "Moore",
177 "Taylor",
178 "Anderson",
179 "Thomas",
180 "Jackson",
181 "White",
182 "Harris",
183 "Martin",
184 "Thompson",
185 "Garcia",
186 "Martinez",
187 "Robinson",
188 ],
189 ],
190 ];
191
192 $current = 0;
193
194 $r = function($arr) {
195
196 return $arr[mt_rand(0,count($arr)-1)];
197
198 };
199
200 $bdayStart = strtotime('-85 years');
201 $bdayEnd = strtotime('-20 years');
202
203 while($current < $count) {
204
205 $current++;
206 fwrite(STDERR, "\033[100D$current/$count");
207
208 $country = array_rand($sets);
209 $gender = mt_rand(0,1)?'girls':'boys';
210
211 $vcard = new Component\VCard([
212 'VERSION' => '4.0',
213 'FN' => $r($sets[$country][$gender]) . ' ' . $r($sets[$country]['last']),
214 'UID' => UUIDUtil::getUUID(),
215 ]);
216
217 $bdayRatio = mt_rand(0,9);
218
219 if($bdayRatio < 2) {
220 // 20% has a birthday property with a full date
221 $dt = new \DateTime('@' . mt_rand($bdayStart, $bdayEnd));
222 $vcard->add('BDAY', $dt->format('Ymd'));
223
224 } elseif ($bdayRatio < 3) {
225 // 10% we only know the month and date of
226 $dt = new \DateTime('@' . mt_rand($bdayStart, $bdayEnd));
227 $vcard->add('BDAY', '--' . $dt->format('md'));
228 }
229 if ($result = $vcard->validate()) {
230 ob_start();
231 echo "\nWe produced an invalid vcard somehow!\n";
232 foreach($result as $message) {
233 echo " " . $message['message'] . "\n";
234 }
235 fwrite(STDERR, ob_get_clean());
236 }
237 echo $vcard->serialize();
238
239 }
240
241 fwrite(STDERR,"\nDone.\n");