Libraire iCalcreator
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.
Utilisation avec les itérateurs de SPIP
Vous pouvez alors utiliser le plugin avec 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_vacances(DATA)
{source ics, https://fr.ftp.opendatasoft.com/openscol/fr-en-calendrier-scolaire/Zone-A.ics}
{par dtstart/str}
{description/0/value != ''}
{dtend/str>=#GET{today}}
{dtstart/str<=#GET{nextyear}}
>
<h3>#VALEUR{description/0/value}</h3>
<dt>
[(#SET{date,#VALEUR{dtstart/str}})]
[(#GET{date}|jour) ][(#GET{date}|nom_mois)][ (#GET{date}|annee{#_zone0:VALEUR})]
[(#SET{date,#VALEUR{dtend/str}})]
[ — (#GET{date}|jour) ][(#GET{date}|nom_mois)][ (#GET{date}|annee{#_zone0:VALEUR})]
</dt>
[<dd>(#VALEUR{summary/0/value})</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/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.
Trouvailles
Si vous utilisez ce plugin, n’hésitez pas à partager vos trouvailles dans le forum ci-dessous.
modèle « prochainement »
C’est ce qu’à fait Jérome. Dès lors, le plugin propose désormais un modèle simple sous modeles/prochainement.html
. Il récupère un flux iCal et retourne les événements futurs.
Insérez ce modèle comme tout autre (voir http://www.spip.net/fr_article3454.html) en lui passant un paramètre ics
pointant vers l’url d’un flux ical. Par exemple : <prochainement|ics=http://www.demosphere.eu/events.ics>
pour afficher les événements à l’agenda de Démosphère dans un texte. Ou encore [(#MODELE{prochainement}{ics=http://www.demosphere.eu/events.ics})]
dans un squelette.
Discussions par date d’activité
17 discussions
Je rencontre un soucis en important, via import_ics le flux d’événements de mon compte facebook.
Pour certaines pages que je suis (du verbe suivre),, l’import se passe normalement et les modifications de l’événéments sont préservées.
Pour d’autres pages, les événements sont systématiquement écrasés, alors même qu’ils ne semble pas subir de modification.
Auriez-vous des suggestions pour débusquer la raison de cette différence de comportement ?
Il vaudrait mieux poser la question sur import ics.
Mais globalemenent il faudrait voir s’il n’y a pas des problèmes dans le flux ICS fournit par FB ; Par exemple des dates de modifs incorrects/des sequence incorrect.
J’avoue que je ne sais pas forcément comment déterminer ce qui est conforme ou pas. Tu aurais un doc sur la façon de voir cela ?
La norme c’est la RFC du formal ICAL que tu peux trouver facilement.
Mais peu de gens respectent la norme, donc le plugin icalendar utilise différenrs contournement selon les différents écarts constatés à la norme.
Répondre à ce message
Bonjour à tous,
J’utilise le plugin avec une boucle DATA et tout fonctionne correctement.
Les données ics d’un autre site s’affichent sans problème.
Ma boucle est incluse dans la page sommaire.
Mon seul soucis et de filtrer l’affichage par exemple sur 15 jours.
comment faut il modifier le script suivant ?
Merci de votre aide
Francis
Répondre à ce message
Bonjour,
En cherchant à intégrer proprement ’DURATION’ dans Import ICS, je me suis rendu compte :
Je pose donc ça là histoire de ne pas l’oublier si d’aventure quelqu’un voulait mettre à jour la lib.
Répondre à ce message
Salut,
il semble que l’adresse de la démo soit
/spip.php?page=demo/iter_icalendar
et pas/plusspip.php?page=demo/iterateurs&demo=iter_icalendar
(dans le paragraphe« Utilisation avec les itérateurs de SPIP »).Cf https://zone.spip.org/trac/spip-zone/browser/_plugins_/icalendar/trunk/demo
Répondre à ce message
quelqu’un a-t-il testé la compatibilité avec SPIP 3.2 ?
Je pense que non. Mais tu peux le faire toi. Dans paquet.xml, modifie
par
Cela te pernettra d’activer. A priori, je dirais que c’est compatible. A vérifier.
Je viens de faire le test et ça marche.
j’ai pu passer à SPIP 3.2 sans problème
Merci, je viens de mettre à jour sur la zone, le zip sera bientôt regenéré.
Répondre à ce message
Bonjour,
une version compatible spip 3.1 serait la bienvenue,
merci !
Je viens de l’utiliser sur un spip 3.1 en changeant tout simplement la version requise dans paquet.xml et plugin.xml.
Ça marche sans soucis de mon côté.
Répondre à ce message
Bonjour
J’ai mis en place ce plugin avec une boucle DATA qui va chercher les données à partir de l’url fournie.
Cela fonctionne parfaitement sur mon serveur local, mais sur 1&1 il ne récupère plus aucune données.
L’url cible est en https//....
Avez-vous rencontré ce genre de problème ?
Répondre à ce message
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) ?
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)
Je serais extrémement intéressé par un mécanisme d’import d’évenements d’ics vers l’agenda SPIP comme évoqué. Ce projet a-t’il avancé ?
Ben, c’est possible avec ce plugin : http://contrib.spip.net/Import-ICS
Répondre à ce message
Bonjour.
J’ai développé un site qui utilise ce plugin sur ma machine. Tout fonctionnait bien.
Quand je l’ai mis en production sur mon serveur, ça ne fonctionnait plus. Plus moyen de lire de fichiers ical distants.
J’ai mis un moment à comprendre d’où ça pouvait venir car je ne voyais pas d’erreurs dans les logs.
En gros, ce n’est pas moi qui ait généré les aspects sécurité sur le serveur et l’option allow_url_fopen était à Off pour php.
Une fois cette fonction activée, ça roule, car le plugin en a besoin ( icalendar/lib/iCalcreator.class.php , ligne 1664 ).
Seulement, de ce que j’en lis, c’est pas super chouette niveau sécurité que d’activé cette option php : http://phpsec.org/projects/phpsecinfo/tests/allow_url_fopen.html
Bon, je sais que ça concerne la lib http://www.kigkonsult.se/iCalcreator/ et pas directement du plugin, mais ça me parait important à soulever également ici.
Répondre à ce message
Bonjour,
J’ai dû trouver un bug dans ics_to_array.php :
$date renvoie toujours 0000/00/00 00:00:00 si le plugin iterateurs n’est pas installé.
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
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |