open(); $events = $drupalEventReader->getEvents(); usort($events, function(Event $x, Event $y) { if ($x->getStartDate() == $y->getStartDate()) { return 0; } else if ($x->getStartDate() < $y->getStartDate()) { return -1; } else { return 1; } }); $drupalEventReader->close(); header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK', true, 200); header('Content-Type: text/plain'); $icsWriter = new ICSEchoWriter(); $icsWriter->open(); /** @var Event $event */ foreach ($events as $event) { if ($event->getStartDate() > new \DateTime()) { $icsWriter->write($event); } } $icsWriter->close(); } catch (\Exception $e) { if (defined('DEBUG') && DEBUG) { echo sprintf('Caught exception: %s' . PHP_EOL, $e->getMessage()); echo $e->getTraceAsString(); } else { echo 'An error occurred'; } header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); }