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