Я пытаюсь найти эффективный метод для создания загружаемого файла «.ics» с использованием PHP на основе заданного диапазона дат (дата начала – дата окончания) и время напоминания.
Может ли кто-нибудь предоставить мне образец кода PHP для создания этой функции.
Примечание: оригинальное сообщение в блоге отсутствует; сохранение с помощью ссылки 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(); ?>