Skip to content
bestlibre edited this page Jul 29, 2014 · 4 revisions

Un petit projet permettant d'afficher un calendrier de disponibilités (occupé/libre) utilisant un fichier ics. Ne nécessite que php et un serveur webdav optionnel pour publier le fichier ics.

Le traitement du fichier ics est effectué en utilisant la bibliothèque iCalcreator L'affichage est basé sur le projet de Thanh Nguyen Un système de cache est utilisé, pour ne pas avoir a reparcourir le fichier ics si il n'a pas été modifié. Système basé sur simplecache

Éléments requis :

  • php, avec un accès en écriture (pour le cache)
  • un fichier ics indiquant les disponibilités de la ressource
  • optionel : un serveur webdav

Installation

  • Récupérez les sources Le répertoire include contient les bibliothèques, le répertoire css la feuille de style associée au calendrier (cal.css)

  • Mettez en place le fichier ics Il faut utiliser un fichier par ressource dont on veut afficher la disponibilité. L'affichage utilise la notion de disponibilité liée a un événement pour déterminer si la ressource est disponible ou non. Il faut donc, pour réserver la ressource, créé un événement pour la plage voulue en spécifiant "occupé" dans le status.

Optionnel : si ce fichier est dans un répertoire accessible avec webdav, il est alors possible de s'y abonner via ical ou thunderbird/lightning

Un fichier ics avec le contenu suivant permet de réserver la ressource du 11 avril 2012 15:00 au 19 avril 2012 10:00. La granularité de la réservation est actuellement d'une journée (cf issue #1 ). Le 19 avril apparaîtra donc comme réservé.

BEGIN:VCALENDAR
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
VERSION:2.0
X-WR-CALNAME:Exemple
X-WR-TIMEZONE:Europe/Paris
BEGIN:VEVENT
CREATED:20120110T143503Z
LAST-MODIFIED:20120110T143851Z
DTSTAMP:20120110T143851Z
UID:31ca60c8-1b50-4869-9184-88ec4544e9dd
SUMMARY:Exemple de reservation
STATUS:CONFIRMED
ORGANIZER;RSVP=TRUE;CN=Moi;PARTSTAT=ACCEPTED;ROLE=CHAIR:mail
 to:moi@bestlibre
DTSTART;VALUE=DATE-TIME:20120411T150000Z
DTEND;VALUE=DATE-TIME:20120419T100000Z
TRANSP:OPAQUE
SEQUENCE:1
X-MOZ-GENERATION:1
END:VEVENT
END:VCALENDAR
  • Mettez en place le calendrier Le fichier dispo.php présente un exemple documenté d'utilisation du calendrier.Il affiche l'année courante et les deux suivantes. Les points importants sont :

    • la lecture du fichier ics et la construction de l'objet associé avec :
  $vcal=new vcalendar();
   $vcal->setConfig( 'directory', 'calendar' ); // set directory
   $vcal->setConfig( 'filename', $ics_file ); // set file name
   $vcal->parse();
   $vcal->sort();
  • la construction, mois par mois, du calendrier :
    $mois=Array("01","02","03","04","05","06","07","08","09","10","11","12");
    foreach($mois as $periode){
      $content .=  showCalendar($annee."-".$periode,$vcal);
    }

License

Ce projet est distribué sous license LGPL

TODOS (pas d'ordre particulier)

  • Documenter l'exemple sur le wiki
    • affichage proprement dit
    • lien avec un serveur webdav
    • lien avec google agenda (?)
  • Ajouter la possibilité de dispo par demi-journées: #1
  • Traduire la doc en anglais
Clone this wiki locally