/** * create element format parts * * @author Kjell-Inge Gustafsson, kigkonsult <*****@*****.**> * @since 2.0.6 - 2006-06-20 * @uses iCalBase::_createFormat() * @uses calendarComponent::$timezonetype * @return string */ function _createFormat() { parent::_createFormat(); $objectname = null; switch ($this->format) { case 'xcal': return isset($this->timezonetype) ? strtolower($this->timezonetype) : strtolower($this->objName); break; default: return isset($this->timezonetype) ? strtoupper($this->timezonetype) : strtoupper($this->objName); break; } }
/** * creates formatted output for calendar object instance * * @author Kjell-Inge Gustafsson, kigkonsult <*****@*****.**> * @since 2.21.07 - 2015-03-31 * @uses vcalendar::$format * @uses vcalendar::$nl * @uses vcalendar::createVersion() * @uses vcalendar::createProdid() * @uses vcalendar::createCalscale() * @uses vcalendar::createMethod() * @uses vcalendar::createXprop() * @uses vcalendar::$components * @uses calendarComponent::setConfig() * @uses vcalendar::getConfig() * @uses calendarComponent::createComponent() * @uses vcalendar::$xcaldecl * @return string */ function createCalendar() { parent::_createFormat(); $calendarInit = $calendarxCaldecl = $calendarStart = $calendar = ''; switch ($this->format) { case 'xcal': $calendarInit = '<?xml version="1.0" encoding="UTF-8"?>' . $this->nl . '<!DOCTYPE vcalendar PUBLIC "-//IETF//DTD XCAL/iCalendar XML//EN"' . $this->nl . '"http://www.ietf.org/internet-drafts/draft-ietf-calsch-many-xcal-01.txt"'; $calendarStart = '>' . $this->nl . '<vcalendar'; break; default: $calendarStart = 'BEGIN:VCALENDAR' . $this->nl; break; } $calendarStart .= $this->createVersion(); $calendarStart .= $this->createProdid(); $calendarStart .= $this->createCalscale(); $calendarStart .= $this->createMethod(); if ('xcal' == $this->format) { $calendarStart .= '>' . $this->nl; } $calendar .= $this->createXprop(); foreach ($this->components as $component) { if (empty($component)) { continue; } $component->setConfig($this->getConfig(), FALSE, TRUE); $calendar .= $component->createComponent($this->xcaldecl); } if ('xcal' == $this->format && 0 < count($this->xcaldecl)) { // xCal only $calendarInit .= ' ['; $old_xcaldecl = array(); foreach ($this->xcaldecl as $declix => $declPart) { if (0 < count($old_xcaldecl) && isset($declPart['uri']) && isset($declPart['external']) && isset($old_xcaldecl['uri']) && isset($old_xcaldecl['external']) && in_array($declPart['uri'], $old_xcaldecl['uri']) && in_array($declPart['external'], $old_xcaldecl['external'])) { continue; } // no duplicate uri and ext. references if (0 < count($old_xcaldecl) && !isset($declPart['uri']) && !isset($declPart['uri']) && isset($declPart['ref']) && isset($old_xcaldecl['ref']) && in_array($declPart['ref'], $old_xcaldecl['ref'])) { continue; } // no duplicate element declarations $calendarxCaldecl .= $this->nl . '<!'; foreach ($declPart as $declKey => $declValue) { switch ($declKey) { // index case 'xmldecl': // no 1 $calendarxCaldecl .= $declValue . ' '; break; case 'uri': // no 2 $calendarxCaldecl .= $declValue . ' '; $old_xcaldecl['uri'][] = $declValue; break; case 'ref': // no 3 $calendarxCaldecl .= $declValue . ' '; $old_xcaldecl['ref'][] = $declValue; break; case 'external': // no 4 $calendarxCaldecl .= '"' . $declValue . '" '; $old_xcaldecl['external'][] = $declValue; break; case 'type': // no 5 $calendarxCaldecl .= $declValue . ' '; break; case 'type2': // no 6 $calendarxCaldecl .= $declValue; break; } } $calendarxCaldecl .= '>'; } $calendarxCaldecl .= $this->nl . ']'; } // end if(( 'xcal'... switch ($this->format) { case 'xcal': $calendar .= '</vcalendar>' . $this->nl; break; default: $calendar .= 'END:VCALENDAR' . $this->nl; break; } return $calendarInit . $calendarxCaldecl . $calendarStart . $calendar; }