Mercurial > hg > rc1
comparison vendor/sabre/vobject/bin/generateicalendardata.php @ 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 use Sabre\VObject; | |
5 | |
6 if ($argc<2) { | |
7 $cmd = $argv[0]; | |
8 fwrite(STDERR, <<<HI | |
9 Fruux test data generator | |
10 | |
11 This script generates a lot of test data. This is used for profiling and stuff. | |
12 Currently it just generates events in a single calendar. | |
13 | |
14 The iCalendar output goes to stdout. Other messages to stderr. | |
15 | |
16 {$cmd} [events] | |
17 | |
18 | |
19 HI | |
20 ); | |
21 die(); | |
22 } | |
23 | |
24 $events = 100; | |
25 | |
26 if (isset($argv[1])) $events = (int)$argv[1]; | |
27 | |
28 include __DIR__ . '/../vendor/autoload.php'; | |
29 | |
30 fwrite(STDERR, "Generating " . $events . " events\n"); | |
31 | |
32 $currentDate = new DateTime('-' . round($events/2) . ' days'); | |
33 | |
34 $calendar = VObject\Component::create('VCALENDAR'); | |
35 $calendar->version = '2.0'; | |
36 $calendar->calscale = 'GREGORIAN'; | |
37 | |
38 $ii=0; | |
39 | |
40 while($ii < $events) { | |
41 | |
42 $ii++; | |
43 | |
44 $event = VObject\Component::create('VEVENT'); | |
45 $event->DTSTART = 'bla'; | |
46 $event->SUMMARY = 'Event #' . $ii; | |
47 $event->UID = md5(microtime(true)); | |
48 | |
49 $doctorRandom = mt_rand(1,1000); | |
50 | |
51 switch($doctorRandom) { | |
52 // All-day event | |
53 case 1 : | |
54 $event->DTEND = 'bla'; | |
55 $dtStart = clone $currentDate; | |
56 $dtEnd = clone $currentDate; | |
57 $dtEnd->modify('+' . mt_rand(1,3) . ' days'); | |
58 $event->DTSTART->setDateTime($dtStart, VObject\Property\DateTime::DATE); | |
59 $event->DTEND->setDateTime($dtEnd, VObject\Property\DateTime::DATE); | |
60 break; | |
61 case 2 : | |
62 $event->RRULE = 'FREQ=DAILY;COUNT=' . mt_rand(1,10); | |
63 // No break intentional | |
64 default : | |
65 $dtStart = clone $currentDate; | |
66 $dtStart->setTime(mt_rand(1,23), mt_rand(0,59), mt_rand(0,59)); | |
67 $event->DTSTART->setDateTime($dtStart, VObject\Property\DateTime::UTC); | |
68 $event->DURATION = 'PT'.mt_rand(1,3).'H'; | |
69 break; | |
70 | |
71 } | |
72 | |
73 $calendar->add($event); | |
74 $currentDate->modify('+ ' . mt_rand(0,3) . ' days'); | |
75 | |
76 } | |
77 fwrite(STDERR, "Validating\n"); | |
78 | |
79 $result = $calendar->validate(); | |
80 if ($result) { | |
81 fwrite(STDERR, "Errors!\n"); | |
82 fwrite(STDERR, print_r($result,true)); | |
83 die(-1); | |
84 } | |
85 | |
86 fwrite(STDERR, "Serializing this beast\n"); | |
87 | |
88 echo $calendar->serialize(); | |
89 | |
90 fwrite(STDERR, "done.\n"); | |
91 |