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 |
