SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

274 Plugins, 192 contribs sur SPIP-Zone, 247 visiteurs en ce moment

Accueil > Outils pour plugins > Itérateurs > iCalendar > Plugin iCalendar

Plugin iCalendar

29 décembre 2010 – par Fil – commentaires

8 votes

Le plugin icalendar contient la librairie iCalcreator de Kjell-Inge Gustafsson (disponible sur le site http://www.kigkonsult.se/iCalcreator/ en licence GNU/GPL 2.1 ou ultérieure). Cette librairie permet notamment d’écrire et de lire des fichiers au format iCalendar (RFC 2445). C’est le format d’échange qu’utilisent la plupart des logiciels de calendrier, qu’ils soient « de bureau » ou « en ligne ». Vous pouvez utiliser ce plugin pour exploiter la librairie en PHP.

Mais le plus intéressant de ce plugin est peut-être le format qu’il offre pour la boucle (DATA) (cf. Les Itérateurs pour SPIP 2.1).

Avec ce format il devient possible de boucler sur les événements d’un calendrier géré depuis un logiciel spécialisé, ou publié sur un site internet.

Voici un exemple de boucle en faisant usage.

Boucle :

<BOUCLE_vacances(DATA)
{source ics, http://media.education.gouv.fr/ics/Calendrier_Scolaire_Zone_B.ics}
{par dtstart/str}
>
<dt>
[(#SET{date,#VALEUR{dtstart/str}})]
[(#GET{date}|jour) ][(#GET{date}|nom_mois)]
[(#SET{date,#VALEUR{dtend/str}})]
[ &mdash; (#GET{date}|jour) ][(#GET{date}|nom_mois)]
</dt>
<dd>[(#VALEUR{summary/value}|replace{- Zone.*$})]</dd>
</BOUCLE_vacances>

Résultat :

18 décembre — 3 janvier
Vacances de Noël
19 février — 7 mars
Vacances d'hiver
16 avril — 2 mai
Vacances de printemps
2 juillet — 5 septembre
Vacances d'été
22 octobre — 3 novembre
Vacances de la Toussaint

(Une fois le plugin installé, vous pouvez visualiser l’adresse spip.php?page=demo/iterateurs&demo=iter_icalendar pour une version élaborée de cet exemple.)

Données accessibles

Comme le montre l’exemple ci-dessus, la date de début de chaque événement se trouve au format YYYY-MM-DD hh:mm:ss dans le datapath (chemin XPath) dtstart/str.

Pour aller plus loin on peut aussi récupérer l’année, le mois etc. dans les variables dtstart/value/year, dtstart/value/month et dtstart/value/day, dtstart/value/hour, dtstart/value/min, dtstart/value/sec et dtstart/value/tz (time zone).

La date de fin figure, de même, dans le tableau dtend ; la définition du format ics veut que, lorsque l’événement dure une journée entière, dtend soit la date du lendemain (autrement dit, on indique mardi à 00h00 plutôt que lundi à 23h59).

Pour trier par date de début de l’événement, on utilisera :
{par dtstart/str}.

Le résumé (titre) de l’événement se trouve dans summary/value.

Les données possibles sont nombreuses ; pour les explorer dans une boucle icalendar, il suffit d’indiquer [<pre>(#VALEUR|print_r{1})</pre>]. On voit alors apparaître un enregistrement complet, où l’on peut lire le datapath de chaque élément.

Par exemple, le code ci-dessous indique que le contenu du champ description peut s’obtenir via #VALEUR{description/0/value} :

   [description] => Array
       (
           [0] => Array
               (
                   [value] => Vacances d'hiver
                   [params] =>
               )

       )

En procédant ainsi on peut trouver notamment :
— created : date de création de l’événement dans le calendrier ;
— lastmodified : date de mise à jour de l’événement ;
— location/value : lieu de l’événement ;
— uid/value : identifiant unique de l’événement ;
— rrule/0/value/FREQ : fréquence de récurrence (pour les événements se répétant à intervalle défini)
— etc.

 

Si vous utilisez ce plugin, n’hésitez pas à partager vos trouvailles dans le forum ci-dessous.

Retour en haut de la page

Vos commentaires

  • Le 9 février à 01:53, par erational En réponse à : Plugin iCalendar

    Bonjour Fil,

    Est ce que tu crois qu’il serait possible de partir de ce plugin pour réaliser un plugin d’import d’iCal vers le plugin Agenda (à la manière qu’une syndication de sites) ?

    • Le 9 février à 07:21, par Fil En réponse à : Plugin iCalendar

      Il y a certainement une bonne base de travail, oui, mais il faut voir précisément ce que signifie « importer » ; est-ce en une fois, ou en continu (avec des problématiques de rendez-vous qui changent d’heure etc)

    Répondre à ce message

  • Le 4 octobre 2011 à 10:19, par Stéphane Santon En réponse à : Plugin iCalendar

    Bonjour,

    J’ai dû trouver un bug dans ics_to_array.php :

    function inc_ics_to_array($u) {
    [...]
    $table_valeur = function_exists('Iterateurs_table_valeur')
                    ? 'Iterateurs_table_valeur' : 'table_valeur';
    [...]
            $date = $table_valeur($w, "/value");

    $date renvoie toujours 0000/00/00 00:00:00 si le plugin iterateurs n’est pas installé.

    • Le 8 octobre 2011 à 08:41, par Stéphane Santon En réponse à : Plugin iCalendar

      Bon en fait c’est très bizarre,
      j’ai installé le plugin Iterateurs, et un coup sur2 à peu près, les champ date en [str] me renvoient 0000-00-00 00:00:00 bien que les champs individuels de date soient correctement remplis...

    Répondre à ce message

  • Le 27 septembre 2011 à 09:29, par Stéphane Santon En réponse à : Plugin iCalendar

    Bonjour,

    En php, quand on a le résultat issu de la fonction inc_ics_to_array, comment récupère-t-on une donnée de l’événement ?
    J’ai trouvé ceci, mais y a-t-il plus simple, avec un XPath par exemple ?

           $laEvent = inc_ics_to_array( $lsEvent);
           echo $laEvent[0]->description[0][value];
    [[

    ]]

    Répondre à ce message

  • Le 5 janvier 2011 à 07:51, par Boyquotes En réponse à : Plugin iCalendar

    Bonjour,

    Merci ( pour les itérateurs en général ), il est noté dans cet article :

    (Une fois le plugin installé, vous pouvez visualiser l’adresse spip.php ?page=demo/vacances pour une version élaborée de cet exemple.)


    Donne une erreur 404, j’ai regardé vite fait le plugin ce serait plutôt :
    /demo/iter_icalendar.html
    mais ça donne rien non plus.

    PS/ La page de démo des itérateurs fonctionne correctement.

    Nicolas.

    • Le 5 janvier 2011 à 07:58, par Boyquotes En réponse à : Plugin iCalendar

      Petite précision, je suis en php 5.2, spip 2.2.0-dev SVN [15979], si je copie/colle le code de la boucle ci-dessus, j’obtiens bien les informations mais le code à l’air « de sauter » vers replace :
      extrait.

      1er septembre
         (Rentrée scolaire des enseignants - Zone B|replace{- Zone.*$})
      2 septembre
         (Rentrée scolaire des élèves - Zone B|replace{- Zone.*$})
      25 octobre — 6 novembre

      C’est mon copié/collé qui à déconné ou bien ?

      Merci,
      Nicolas.

    • Le 5 janvier 2011 à 09:27, par Fil En réponse à : Plugin iCalendar

      j’ai corrigé le code et le lien vers la démo

      merci

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d'abord sur gravatar.com (gratuit et indolore) et n'oubliez pas d'indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Le Couteau Suisse

    4 mai 2007 – 1359 commentaires

    Ce plugin propose d’introduire facilement de simples fonctionnalités supplémentaires à SPIP et qui s’avèrent rapidement indispensables ! Par exemple : le contrôle de nombreuses variables « cachées » de SPIP, des améliorations ou facilités typographiques, (...)

  • Métas

    8 août 2009 – 34 commentaires

    Ce petit plugin permet l’ajout, depuis l’espace privé, de metatags aux articles et rubriques de SPIP, ainsi que la mise en exergue de mots importants.

  • Modèles Facebook

    28 juin 2011 – 42 commentaires

    Ce plugin propose un ensemble de modèles SPIP (ou noisettes) pour intégrer simplement et rapidement les modules sociaux du site Facebook. Voici la liste des modèles proposés : ’send’ : le bouton « Envoyer » classique (avec commentaire), ’like’ : (...)

  • Plugin Contacts & Organisations

    4 janvier 2010 – 139 commentaires

    Ce plugin ajoute à SPIP des fonctionnalités de gestionnaire de contacts. Distingue les personnes morales (organisations) des personnes physiques (contacts) en conservant tous les attributs des auteurs SPIP. En conjonction avec le plugin (...)

  • Sarka-SPIP 3.0

    15 septembre 2009 – 153 commentaires

    Si la lignée 3.0 de Sarka-SPIP a été l’occasion de refaire presque entièrement le code du squelette elle continue à évoluer et à s’améliorer au fil des versions. Nous ne saurions trop conseiller aux nouveaux utilisateurs - et aussi aux anciens - (...)