Создать событие iCal Calendar с PHP - PullRequest
6 голосов
/ 18 июля 2011

Я пытаюсь создать скрипт PHP, который создаст событие календаря в iCal. Я искал здесь и в Google и получал только результаты, которые говорят об импорте событий iCal в календарь, созданный PHP. Это противоположность того, что мне нужно.

У меня нет кода для включения, потому что у меня нет отправной точки. Любые предложения о том, где я должен начать?

Ответы [ 3 ]

3 голосов
/ 18 июля 2011

Несколько лет назад я начал писать библиотеку iCalendar.Он находится в довольно альфа-стадии (и я практически отказался от него), в то время не было PHP 5, и там не было много функциональности, но:

  • Iу меня есть много кода, который используется для моделирования RFC iCalendar (возможно, вы захотите посмотреть его)
  • Он имеет возможность программно создавать события и выплевывать формат iCal

Надеюсь, это поможет:

2 голосов
/ 10 мая 2013

Попробуйте это (от https://gist.github.com/jakebellacera/635416)

<?
// 1. Set the correct headers for this file
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename=' . $filename);

// 2. Define helper functions

// Converts a unix timestamp to an ics-friendly format
// NOTE: "Z" means that this timestamp is a UTC timestamp. If you need
// to set a locale, remove the "\Z" and modify DTEND, DTSTAMP and DTSTART
// with TZID properties (see RFC 5545 section 3.3.5 for info)
//
// Also note that we are using "H" instead of "g" because iCalendar's Time format
// requires 24-hour time (see RFC 5545 section 3.3.12 for info).
function dateToCal($timestamp) {
  return date('Ymd\THis\Z', $timestamp);
}

// Escapes a string of characters
function escapeString($string) {
  return preg_replace('/([\,;])/','\\\$1', $string);
}

// 3. Echo out the ics file's contents
?>
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTEND:<?= dateToCal($dateend) ?>
UID:<?= uniqid() ?>
DTSTAMP:<?= dateToCal(time()) ?>
LOCATION:<?= escapeString($address) ?>
DESCRIPTION:<?= escapeString($description) ?>
URL;VALUE=URI:<?= escapeString($uri) ?>
SUMMARY:<?= escapeString($summary) ?>
DTSTART:<?= dateToCal($datestart) ?>
END:VEVENT
END:VCALENDAR
2 голосов
/ 18 июля 2011

Начните здесь. Это даст вам формат файла для события icalendar. затем вы можете использовать php для вывода файла, подобного этому, с вашими пользовательскими данными:

http://en.wikipedia.org/wiki/ICalendar

Я использовал это в качестве ориентира для проектов в прошлом.

...