2011-07-18 43 views
6

Estoy tratando de crear un script PHP que va a crear un evento de calendario en iCal. He buscado aquí y en Google y solo he obtenido resultados que hablan sobre la importación de eventos de iCal a un calendario hecho en PHP. Esto es lo opuesto a lo que necesito.Crear evento de calendario iCal con PHP

no tengo ningún código para incluir porque no tengo punto de partida. ¿Alguna sugerencia sobre dónde debería comenzar?

+0

¿Quiere decir iCal, la aplicación de calendario de Apple, o iCalendar, el formato de archivo? (Aunque para resolver el primero probablemente involucre el último, de todos modos ...) –

+0

Gracias por la aclaración. Necesito crear un evento iCal (calendario de Apple). – Shattuck

+0

Encontramos este lib en github: https://github.com/markuspoerschke/iCal –

Respuesta

3

unos años que había empezado a escribir una biblioteca de iCalendar. Está en fase alpha bastante (y he prácticamente renunciado a ella), en el momento en que no había PHP 5, y no hay una gran cantidad de funcionalidad de allí, pero:

  • tengo una gran cantidad de código que se dedica a modelar el RFC iCalendar (es posible que desee buscar en ella)
  • se tiene la capacidad de crear mediante programación de eventos y escupir formato iCal

creo que sirve:

+0

Eso sería útil para mirar. Gracias por la respuesta. – Shattuck

+0

Este inicio es lo que estaba buscando. Gracias – Shattuck

2

Empezar aquí. Esto le dará el formato de archivo para un evento icalendar. entonces se puede usar PHP para imprimir un archivo de este tipo con los datos personalizados:

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

he utilizado esto como un punto de referencia para proyectos en el pasado. Hace

+0

Gracias por el punto de inicio. Esto ayudará mucho. – Shattuck

2

probar este (de 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 
+0

la forma en que llene el campo DESCRIPCIÓN no es conforme a RFC y no funciona. – datayeah

Cuestiones relacionadas