Blame view

sources/3rdparty/sabre/vobject/bin/generateicalendardata.php 2.13 KB
6d9380f96   Cédric Dupont   Update sources OC...
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.
  ");