2011-07-18 21 views
6

Próbuję utworzyć skrypt PHP, który utworzy wydarzenie w kalendarzu w programie iCal. Szukałem tutaj i w Google i wymyślam tylko wyniki, które mówią o importowaniu zdarzeń iCal do kalendarza stworzonego przez PHP. Jest to przeciwieństwo tego, czego potrzebuję.Utwórz wydarzenie kalendarza iCal z PHP

Nie mam żadnego kodu do uwzględnienia, ponieważ nie mam punktu początkowego. Wszelkie sugestie na temat, gdzie powinienem zacząć?

+0

Czy to znaczy, iCal, aplikacja kalendarza Apple lub iCalendar, format pliku? (Mimo to, aby rozwiązać ten pierwszy, prawdopodobnie i tak wezmę ten ostatni ...) –

+0

Dziękuję za wyjaśnienie. Potrzebuję utworzyć wydarzenie iCal (kalendarz Apple). – Shattuck

+0

Znalazłem tę bibliotekę na github: https://github.com/markuspoerschke/iCal –

Odpowiedz

3

Kilka lat temu zacząłem pisać bibliotekę iCalendar. To jest w ładnej fazie alpha (oraz I już praktycznie zrezygnowała z niego), w tym czasie nie było w PHP 5, i nie ma wiele funkcjonalności tam, ale:

  • Mam dużo kodu, który idzie do modelowania RFC iCalendar (warto zajrzeć do niego)
  • to ma możliwość programowego tworzenia wydarzeń i wypluć formacie iCal

Nadzieję, że to pomaga:

+0

Byłoby to pomocne, aby spojrzeć na. Dziękuję za odpowiedź. – Shattuck

+0

Ten start jest tym, czego szukałem. Dziękujemy – Shattuck

2

Zacznij tutaj. W ten sposób otrzymasz format pliku dla wydarzenia icalendar. następnie można użyć php do wyjścia plik tak z niestandardowych danych:

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

Użyłem tego jako punkt odniesienia dla projektów w przeszłości.

+0

Dziękuję za punkt wyjścia. To bardzo pomoże. – Shattuck

2

Spróbuj tego (z 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

sposób wypełniania pola DESCRIPTION nie jest zgodny z RFC i nie działa. – datayeah

Powiązane problemy