Créer .fichier ics dynamiquement
J'ai fait un site pour un client où ils peuvent afficher des événements. Plutôt que de créer manuellement .fichiers ics depuis iCal pour chaque événement et de le télécharger, je pensais qu'il serait mieux de le retirer de la base de données et de créer automatiquement un .fichier ics automatiquement avec PHP.
Je peux extraire des informations à partir de la base de données (pas de problème), mais lors de la conversion à un timbre de temps pour le fichier de calendrier un exemple difficile. Voici ce que j'ai stocker dans la base de données:
Month: 05
Day: 02
Year: 2011
Time: 11:30am - 1:30pm
Voici le code pour créer mon .fichiers ics:
//This is the most important coding.
header("Content-Type: text/Calendar");
header("Content-Disposition: inline; filename=adamhouston_$id.ics");
echo "BEGIN:VCALENDAR\n";
echo "PRODID:-//Microsoft Corporation//Outlook 12.0 MIMEDIR//EN\n";
echo "VERSION:2.0\n";
echo "METHOD:PUBLISH\n";
echo "X-MS-OLK-FORCEINSPECTOROPEN:TRUE\n";
echo "BEGIN:VEVENT\n";
echo "CLASS:PUBLIC\n";
echo "CREATED:20091109T101015Z\n";
echo "DESCRIPTION:Speaker: $event_query_row[speaker_name]\\n\\nTopic: $event_query_row[speaker_topic]\n";
echo "DTEND:20100208T040000Z\n";
echo "DTSTAMP:20100109T093305Z\n";
echo "DTSTART:20100208T003000Z\n";
echo "LAST-MODIFIED:20091109T101015Z\n";
echo "LOCATION:$event_query_row[location]\n";
echo "PRIORITY:5\n";
echo "SEQUENCE:0\n";
echo "SUMMARY;LANGUAGE=en-us:ADAM-Houston Event\n";
echo "TRANSP:OPAQUE\n";
echo "UID:040000008200E00074C5B7101A82E008000000008062306C6261CA01000000000000000\n";
echo "X-MICROSOFT-CDO-BUSYSTATUS:BUSY\n";
echo "X-MICROSOFT-CDO-IMPORTANCE:1\n";
echo "X-MICROSOFT-DISALLOW-COUNTER:FALSE\n";
echo "X-MS-OLK-ALLOWEXTERNCHECK:TRUE\n";
echo "X-MS-OLK-AUTOFILLLOCATION:FALSE\n";
echo "X-MS-OLK-CONFTYPE:0\n";
//Here is to set the reminder for the event.
echo "BEGIN:VALARM\n";
echo "TRIGGER:-PT1440M\n";
echo "ACTION:DISPLAY\n";
echo "DESCRIPTION:Reminder\n";
echo "END:VALARM\n";
echo "END:VEVENT\n";
echo "END:VCALENDAR\n";
Maintenant, comment puis-je convertir les données dans ma base de données dans un temps correct/timbre à date?
Vous devez vous connecter pour publier un commentaire.
iCal fois stockés au format UTC et pas dans la zone de temps qu'ils sont originaires, à moins d'indication contraire (voir edit)
Si vous voulez que votre code générique, vous aurez besoin de stocker du fuseau horaire. Si vous voulez vraiment... vous pouvez coder en dur dans la conversion.
Je recommande également de ne pas stocker de temps dans ce format:
et de passer à un format d'horodatage. Vous accédez à partir d'4(?) les colonnes vers le bas à un. Pourquoi est-ce bon? Parce que vous pouvez utiliser PHP date() pour le format de la date pour vous exactement ce dont vous avez besoin! (vous aurez besoin d'utiliser la fonction strtotime() je crois et aussi quelqu'un a un fuseau horaire de conversion la fonction dans les commentaires)
En regardant ce qui doit être fait à partir d'un fichier iCal point de vue:
EDIT:
Le Z représente l'heure UTC, ou de temps absolu.
Vous pouvez régler le fuseau horaire dans le fichier et quitter la conversion pour le programme de calendrier.
http://tools.ietf.org/html/rfc5545#section-3.2.19