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