public function generateIcal() { // set default timezone (PHP 5.4) date_default_timezone_set('Europe/Berlin'); $ical_name = 'HSG Wesel - Gesamtspielplan'; $ical_calid = 'hsg_wesel_1516_total'; $ics_file_name = 'hsg_wesel_1516_total.ics'; $team_info = $this->getTeamInfo(); if (is_array($team_info)) { $ical_name = 'HSG Wesel - Saison 2015/16 - ' . $team_info['team']; $ical_calid = 'hsg_wesel_1516_' . $team_info['liga_id']; $ics_file_name = 'hsg_wesel_1516_' . $this->getTeam() . '.ics'; } else { switch ($this->art) { case '188': $ical_name = 'HSG Wesel - Saison 2015/16 - Spielplan Heim'; $ical_calid = 'hsg_wesel_1516_1330105011_heim'; $ics_file_name = 'hsg_wesel_1516_spielplan_heim' . '.ics'; break; case '199': $ical_name = 'HSG Wesel - Saison 2015/16 - Spielplan Auswärts'; $ical_calid = 'hsg_wesel_1516_1330105011_auswaerts'; $ics_file_name = 'hsg_wesel_1516_auswaerts' . '.ics'; break; } } // 1. Create new calendar $vCalendar = new \Eluceo\iCal\Component\Calendar('HSG Wesel SIS-Handball ICS-Generator'); $vCalendar->setName($ical_name); $vCalendar->setDescription('HSG Wesel / photominister.de'); $vCalendar->setCalId($ical_calid); $vCalendar->setMethod('PUBLISH'); // 2. Create an event // $this->framework->dump($this->art); if (count($this->xml->Spiel) > 0) { foreach ($this->xml->Spiel as $spiel) { $element = $this->getHash($spiel); $show_heim = substr($spiel->Heim, 0, 9) == 'HSG Wesel'; $show_gast = substr($spiel->Gast, 0, 9) == 'HSG Wesel'; switch ($this->art) { case '188': $cond = $show_heim; break; case '199': $cond = $show_gast; break; default: $cond = $show_heim || $show_gast; break; } if ($cond) { $description = $spiel->LigaName . '..... www.hsg-wesel.de ..... www.handballinwesel.de ..... www.facebook.com/hsgwesel'; $description = str_replace("\r\n", "\\n", $description); $vEvent = new \Eluceo\iCal\Component\Event(); $vEvent->setDtStart(new \DateTime($spiel->SpielVon)); $vEvent->setDtEnd(new \DateTime($spiel->SpielBis)); $vEvent->setSummary($spiel->Heim . ' - ' . $spiel->Gast); $vEvent->setDescription($description); $vEvent->setLocation($spiel->HallenName . ', ' . $spiel->HallenStrasse . ', ' . $spiel->HallenOrt); $vEvent->setUseTimezone(TRUE); // 3. Add event to calendar $vCalendar->addComponent($vEvent); unset($vEvent); } } } // 4. Set headers header('Content-Type: text/calendar; charset=utf-8'); header('Content-Disposition: attachment; filename="' . $ics_file_name . '"'); // 5. Output echo $vCalendar->render(); exit; }