Как сгенерировать файл .ics с использованием PHP для заданного диапазона дат и времени

Я пытаюсь найти эффективный метод для создания загружаемого файла «.ics» с использованием PHP на основе заданного диапазона дат (дата начала – дата окончания) и время напоминания.

Может ли кто-нибудь предоставить мне образец кода PHP для создания этой функции.

http://web.archive.org/web/20120419230026/http://jamiebicknell.tumblr.com/post/413492676/ics-generator-php-class

Примечание: оригинальное сообщение в блоге отсутствует; сохранение с помощью ссылки arhcive.org.


Скопируйте и вставьте информацию из вышеуказанной ссылки:

<?php class ICS { var $data; var $name; function ICS($start,$end,$name,$description,$location) { $this->name = $name; $this->data = "BEGIN:VCALENDAR\nVERSION:2.0\nMETHOD:PUBLISH\nBEGIN:VEVENT\nDTSTART:".date("Ymd\THis\Z",strtotime($start))."\nDTEND:".date("Ymd\THis\Z",strtotime($end))."\nLOCATION:".$location."\nTRANSP: OPAQUE\nSEQUENCE:0\nUID:\nDTSTAMP:".date("Ymd\THis\Z")."\nSUMMARY:".$name."\nDESCRIPTION:".$description."\nPRIORITY:1\nCLASS:PUBLIC\nBEGIN:VALARM\nTRIGGER:-PT10080M\nACTION:DISPLAY\nDESCRIPTION:Reminder\nEND:VALARM\nEND:VEVENT\nEND:VCALENDAR\n"; } function save() { file_put_contents($this->name.".ics",$this->data); } function show() { header("Content-type:text/calendar"); header('Content-Disposition: attachment; filename="'.$this->name.'.ics"'); Header('Content-Length: '.strlen($this->data)); Header('Connection: close'); echo $this->data; } } ?> 

Выведите файл ICS в браузер и дайте пользователю возможность открыть или сохранить

 <?php $event = new ICS("2009-11-06 09:00","2009-11-06 21:00","Test Event","This is an event made by Jamie Bicknell","GU1 1AA"); $event->show(); ?> 

Сохраните файл ICS на сервере в текущем рабочем каталоге

 <?php $event = new ICS("2009-11-06 09:00","2009-11-06 21:00","Test Event","This is an event made by Jamie Bicknell","GU1 1AA"); $event->save(); ?>