source: spip-zone/_plugins_/icalendar/inc/ics_to_array.php @ 43491

Last change on this file since 43491 was 43491, checked in by fil@…, 10 years ago

lire les calendrier aux sauts de ligne windows cr-lf

File size: 1.1 KB
Line 
1<?php
2
3
4# hors de la fonction, de facon a ce que la class soit chargee
5# meme si le resultat est deja dans le cache (sinon le cache est inexploitable).
6# cf. iterateur/data.php
7include_spip('lib/iCalcreator.class');
8
9function inc_ics_to_array($u) {
10
11        # on passe par un fichier temp car notre librairie fonctionne comme ca
12        $tmp = _DIR_TMP . 'ics-'.md5($u);
13        ecrire_fichier($tmp, str_replace("\r\n", "\n", $u));
14
15        $cal = new vcalendar();
16        $cal->setConfig( 'filename', $tmp );
17        $cal->parse();
18
19        supprimer_fichier($tmp);
20
21        $table_valeur = function_exists('Iterateurs_table_valeur')
22                ? 'Iterateurs_table_valeur' : 'table_valeur';
23
24        # noter les dates cles dans un format plus facile a recuperer
25        foreach($cal->components as $k => &$v) {
26                foreach(array('dtstart', 'dtend', 'dtstamp', 'lastmodified', 'created')
27                as $champ) {
28                        if (isset($v->$champ)) {
29                                $w = &$v->$champ;
30                                $date = $table_valeur($w, "/value");
31                                $w['str'] = sprintf('%04d-%02d-%02d %02d:%02d:%02d',
32                                        $date['year'],
33                                        $date['month'],
34                                        $date['day'],
35                                        $date['hour'],
36                                        $date['min'],
37                                        $date['sec']
38                                );
39                        }
40                }
41        }
42
43        return($cal->components);
44}
45
Note: See TracBrowser for help on using the repository browser.