Esempio n. 1
0
 /**
  *
  * some automagic
  * - array urls are transformed in (full) absolute urls
  * - id => uid with @host
  * - start/end/timestamp to atom
  * - class to upper
  *
  * @param array $data
  * @param bool $addStartAndEnd
  * @return string icalContent (single vevent)
  */
 public function build($data, $addStartAndEnd = true)
 {
     $replacements = array('-', ':');
     if (isset($data['timezone'])) {
         $replacements[] = 'Z';
     }
     if (isset($data['start'])) {
         $data['dtstart'] = TimeLib::toAtom($data['start']);
         $data['dtstart'] = str_replace($replacements, '', $data['dtstart']);
         unset($data['start']);
     }
     if (isset($data['end'])) {
         $data['dtend'] = TimeLib::toAtom($data['end']);
         $data['dtend'] = str_replace($replacements, '', $data['dtend']);
         unset($data['end']);
     }
     if (isset($data['timestamp'])) {
         $data['dtstamp'] = TimeLib::toAtom($data['timestamp']);
         $data['dtstamp'] = str_replace(array('-', ':'), '', $data['dtstamp']);
         unset($data['timestamp']);
     }
     if (isset($data['timezone'])) {
         $data['tzid'] = $data['timezone'];
         unset($data['timezone']);
     }
     if (isset($data['id'])) {
         $data['uid'] = $data['id'] . '@' . env('HTTP_HOST');
         unset($data['id']);
     }
     if (isset($data['class'])) {
         $data['class'] = strtoupper($data['class']);
     }
     if (isset($data['url']) && is_array($data['url'])) {
         $data['url'] = Router::url($data['url'], true);
     }
     $res = $this->ICalObject->create($data);
     if ($addStartAndEnd) {
         $res = 'BEGIN:VEVENT' . PHP_EOL . trim($res) . PHP_EOL . 'END:VEVENT';
     }
     return $res;
 }