source: trunk/spip/esqueleto-redcta/plugins/agenda/1_9_2/inc/agenda_filtres.php @ 30

Last change on this file since 30 was 30, checked in by sebas, 17 years ago

nueva importacion del codigo del esqueleto de redcta con los plugins

File size: 6.4 KB
Line 
1<?php
2/**
3 * Fichier de filtres communs au plugin Agenda et PIM_agenda
4 *
5 */
6
7function Agenda_memo_full($date_deb=0, $date_fin=0 , $titre='', $descriptif='', $lieu='', $url='', $cal='')
8{
9        static $agenda = array();
10        if (!$date_deb) {
11                $res = $agenda;
12                $agenda=array();
13                return $res;
14        }
15        $url=str_replace("&amp;","&",$url);
16       
17        $idatedeb = date_ical($date_deb);
18        $idatefin = date_ical($date_fin);
19        $cal = trim($cal); // func_get_args (filtre alterner) rajoute \n !!!!
20        $startday1=explode(' ',$date_deb);
21        $startday1=$startday1['0'].' 00:00:00';
22        $ts_startday1=strtotime($startday1);
23        $ts_date_fin=strtotime($date_fin);
24        $maxdays=365;
25        while (($ts_startday1<$ts_date_fin)&&($maxdays-->0))
26        {
27                $day=date('Y-m-d H:i:s',$ts_startday1);
28                $agenda[$cal][(date_anneemoisjour($day))][] =  array(
29                        'CATEGORIES' => $cal,
30                        'DTSTART' => $idatedeb,
31                        'DTEND' => $idatefin,
32                        'DESCRIPTION' => $descriptif,
33                        'SUMMARY' => $titre,
34                        'LOCATION' => $lieu,
35                        'URL' => $url);
36                $ts_startday1 += 26*3600; // le jour suivant : +26 h pour gerer les changements d'heure
37                $ts_startday1 = mktime(0, 0, 0, date("m",$ts_startday1), 
38                date("d",$ts_startday1), date("Y",$ts_startday1)); // et remise a zero de l'heure       
39        }
40
41        // toujours retourner vide pour qu'il ne se passe rien
42        return "";
43}
44
45function Agenda_memo_evt_full($date_deb=0, $date_fin=0 , $titre='', $descriptif='', $lieu='', $url='', $cal='')
46{
47        static $evenements = array();
48        if (!$date_deb) return $evenements;
49        $url=str_replace("&amp;","&",$url);
50       
51        $idatedeb = date_ical(reset(explode(" ",$date_deb))." 00:00:00");
52        $idatefin = date_ical(reset(explode(" ",$date_fin))." 00:00:00");
53        $cal = trim($cal); // func_get_args (filtre alterner) rajoute \n !!!!
54        $startday1=explode(' ',$date_deb);
55        $startday1=$startday1['0'].' 00:00:00';
56        $ts_startday1=strtotime($startday1);
57        $ts_date_fin=strtotime($date_fin);
58        $maxdays=365;
59        while (($ts_startday1<$ts_date_fin)&&($maxdays-->0))
60        {
61                $day=date('Y-m-d H:i:s',$ts_startday1);
62                $evenements[$cal][(date_anneemoisjour($day))][] =  array(
63                        'CATEGORIES' => $cal,
64                        'DTSTART' => $idatedeb,
65                        'DTEND' => $idatefin,
66                        'DESCRIPTION' => $descriptif,
67                        'SUMMARY' => $titre,
68                        'LOCATION' => $lieu,
69                        'URL' => $url);
70                $ts_startday1 += 26*3600; // le jour suivant : +26 h pour gerer les changements d'heure
71                $ts_startday1 = mktime(0, 0, 0, date("m",$ts_startday1), 
72                date("d",$ts_startday1), date("Y",$ts_startday1)); // et remise a zero de l'heure       
73        }
74
75        // toujours retourner vide pour qu'il ne se passe rien
76        return "";
77}
78
79function Agenda_affiche_full($i)
80{
81        $args = func_get_args();
82        $nb = array_shift($args); // nombre d'evenements (on pourrait l'afficher)
83        $sinon = array_shift($args);
84        if (!$nb) return $sinon;
85        $type = array_shift($args);
86        $agenda = Agenda_memo_full(0);
87        $evt_avec = array();
88        foreach (($args ? $args : array_keys($agenda)) as $k) {
89                if (isset($agenda[$k])&&is_array($agenda[$k]))
90                        foreach($agenda[$k] as $d => $v) {
91                                $evt_avec[$d] = isset($evt_avec[$d]) ? (array_merge($evt_avec[$d], $v)) : $v;
92                        }
93        }
94
95        $evenements = Agenda_memo_evt_full(0);
96        $evt_sans = array();
97        foreach (($args ? $args : array_keys($evenements)) as $k) {
98                if (isset($evenements[$k])&&is_array($evenements[$k]))
99                        foreach($evenements[$k] as $d => $v) {
100                                $evt_sans[$d] = isset($evt_sans[$d]) ? (array_merge($evt_sans[$d], $v)) : $v;
101                        }
102        }
103
104
105        if ($type != 'periode')
106                $evt = array($evt_sans, $evt_avec);
107        else
108        {
109                $d = array_keys($evt_avec);
110                $mindate = min($d);
111                $min = substr($mindate,6,2);
112                $max = $min + ((strtotime(max($d)) - strtotime($mindate)) / (3600 * 24));
113                if ($max < 31) $max = 0;
114                        $evt = array($evt_sans, $evt_avec, $min, $max);
115                $type = 'mois';
116        }
117
118        include_spip('inc/agenda');
119        $texte=http_calendrier_init('', $type, '', '', self(), $evt);
120
121        return $texte;
122}
123
124function Agenda_affdate_debut_fin($date_debut, $date_fin, $horaire = 'oui'){
125        static $trans_tbl=NULL;
126        if ($trans_tbl==NULL){
127                $trans_tbl = get_html_translation_table (HTML_ENTITIES);
128                $trans_tbl = array_flip ($trans_tbl);
129        }
130       
131        $date_debut = strtotime($date_debut);
132        $date_fin = strtotime($date_fin);
133        $s = "";
134        if (($d=date("Y-m-d",$date_debut))==date("Y-m-d",$date_fin))
135        { // meme jour
136                $s = ucfirst(nom_jour($d))." ".affdate_jourcourt($d);
137                if ($horaire=='oui'){
138                        $s .= " ".($hd=date("H:i",$date_debut));
139                        if ($hd!=($hf=date("H:i",$date_fin)))
140                                $s .= "-$hf";
141                }
142        }
143        else if ((date("Y-m",$date_debut))==date("Y-m",$date_fin))
144        { // meme annee et mois, jours differents
145                $d=date("Y-m-d",$date_debut);
146                if ($horaire=='oui'){
147                        $s = _T('agenda:evenement_date_du') . " " . affdate_jourcourt($d);
148                        $s .= " ".($hd=date("H:i",$date_debut));
149                        $s .= " " . _T('agenda:evenement_date_au').date("d  H:i ",$date_fin);
150                }
151                else {
152                        $s = _T('agenda:evenement_date_du') . " " . jour($d);
153                        $s .= " " . _T('agenda:evenement_date_au').affdate_jourcourt(date("Y-m-d",$date_fin));
154                }
155        }
156        else if ((date("Y",$date_debut))==date("Y",$date_fin))
157        { // meme annee, mois et jours differents
158                $d=date("Y-m-d",$date_debut);
159                $s = _T('agenda:evenement_date_du') . " " . affdate_jourcourt($d);
160                if ($horaire=='oui')
161                        $s .= " ".date("H:i",$date_debut);
162                $d = date("Y-m-d",$date_fin);
163                $s .= " "._T('agenda:evenement_date_au').affdate_jourcourt($d);
164                if ($horaire=='oui')
165                        $s .= " ".date("H:i",$date_fin);
166        }
167        else
168        { // tout different
169                $s = _T('agenda:evenement_date_du') . " " . affdate($d);
170                if ($horaire=='oui')
171                        $s .= " ".date("(H:i)",$date_debut);
172                $d = date("Y-m-d",$date_fin);
173                $s .= " "._T('agenda:evenement_date_au').affdate($d);
174                if ($horaire=='oui')
175                        $s .= " ".date("(H:i)",$date_fin);
176        }
177        return unicode2charset(charset2unicode(strtr($s,$trans_tbl),''));       
178}
179
180function Agenda_dateplus($date,$secondes,$format){
181        $date = strtotime($date)+eval("return $secondes;"); // permet de passer une expression
182        return date($format,$date);
183}
184
185// decale les mois de la date.
186// cette fonction peut raboter le jour si le nouveau mois ne les contient pas
187// exemple 31/01/2007 + 1 mois => 28/02/2007
188function Agenda_moisdecal($date,$decalage,$format){
189        include_spip('inc/filtres');
190        $date_array = recup_date($date);
191        if ($date_array) list($annee, $mois, $jour) = $date_array;
192        if (!$jour) $jour=1;
193        if (!$mois) $mois=1;
194        $mois2 = $mois + $decalage;
195        $date2 = mktime(1, 1, 1, $mois2, $jour, $annee);
196        // mois normalement attendu
197        $mois3 = date('m', mktime(1, 1, 1, $mois2, 1, $annee));
198        // et si le mois de la nouvelle date a moins de jours...
199        $mois2 = date('m', $date2);
200        if ($mois2 - $mois3) $date2 = mktime(1, 1, 1, $mois2, 0, $annee);
201        return date($format, $date2);
202}
203
204?>
Note: See TracBrowser for help on using the repository browser.