/** * * 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; }