[PLUGINS] +clavettes et dependances
[lhc/web/clavette_www.git] / www / plugins / agenda_3_5 / agenda_fonctions.php
1 <?php
2 /**
3 * Plugin Agenda 4 pour Spip 3.0
4 * Licence GPL 3
5 *
6 * 2006-2011
7 * Auteurs : cf paquet.xml
8 */
9
10 if (!defined("_ECRIRE_INC_VERSION")) return;
11
12 include_spip('public/agenda');
13 include_spip('inc/agenda_filtres'); // deprecies mais encore supportes pour le moment
14
15 /**
16 * Ajout d'un offset a une date
17 *
18 * @param string $date
19 * @param int $secondes
20 * peut etre une expression math : 24*60*60
21 * @param string $format
22 * format de sortie de la date
23 * @return string
24 */
25 function agenda_dateplus($date,$secondes,$format="Y-m-d H:i:s"){
26 $date = strtotime($date)+eval("return $secondes;"); // permet de passer une expression
27 return date($format,$date);
28 }
29
30 /**
31 * decale les mois de la date.
32 * cette fonction peut raboter le jour si le nouveau mois ne les contient pas
33 * exemple 31/01/2007 + 1 mois => 28/02/2007
34 *
35 * @param string $date
36 * @param int $decalage
37 * @param string $format
38 * @return string
39 */
40 function agenda_moisdecal($date,$decalage,$format="Y-m-d H:i:s"){
41 include_spip('inc/filtres');
42 $date_array = recup_date($date);
43 if ($date_array) list($annee, $mois, $jour) = $date_array;
44 if (!$jour) $jour=1;
45 if (!$mois) $mois=1;
46 $mois2 = $mois + $decalage;
47 $date2 = mktime(1, 1, 1, $mois2, $jour, $annee);
48 // mois normalement attendu
49 $mois3 = date('m', mktime(1, 1, 1, $mois2, 1, $annee));
50 // et si le mois de la nouvelle date a moins de jours...
51 $mois2 = date('m', $date2);
52 if ($mois2 - $mois3) $date2 = mktime(1, 1, 1, $mois2, 0, $annee);
53 return date($format, $date2);
54 }
55
56
57 /**
58 * decale les jours de la date.
59 *
60 * @param string $date
61 * @param int $decalage
62 * @param string $format
63 * @return string
64 */
65 function agenda_jourdecal($date,$decalage,$format="Y-m-d H:i:s"){
66 include_spip('inc/filtres');
67 $date_array = recup_date($date);
68 if ($date_array) list($annee, $mois, $jour) = $date_array;
69 if (!$jour) $jour=1;
70 if (!$mois) $mois=1;
71 $jour2 = $jour + $decalage;
72 $date2 = mktime(1, 1, 1, $mois, $jour2, $annee);
73 return date($format, $date2);
74 }
75
76 /**
77 * Filtre pour tester si une date est dans le futur
78 * [(#DATE|agenda_date_a_venir) Dans le futur...]
79 *
80 * @param string $date_test
81 * @param string $date_ref
82 * date de reference, par defaut celle du serveur (argument utile pour les tests unitaires)
83 * @return string
84 */
85 function agenda_date_a_venir($date_test,$date_ref=null){
86 if (is_null($date_ref))
87 $date_ref = $_SERVER['REQUEST_TIME'];
88 else
89 $date_ref = strtotime($date_ref);
90
91 return (strtotime($date_test)>$date_ref)?' ':'';
92 }
93
94
95 /**
96 * Filtre pour tester si une date est dans le passe
97 * [(#DATE|agenda_date_passee) Dans le passe...]
98 *
99 * @param string $date_test
100 * @param string $date_ref
101 * date de reference, par defaut celle du serveur (argument utile pour les tests unitaires)
102 * @return string
103 */
104 function agenda_date_passee($date_test,$date_ref=null){
105 if (is_null($date_ref))
106 $date_ref = $_SERVER['REQUEST_TIME'];
107 else
108 $date_ref = strtotime($date_ref);
109
110 return (strtotime($date_test)<$date_ref)?' ':'';
111 }
112
113 /**
114 * Determiner la date de debut de l'affichage de la liste des evenements
115 * en fonction du mode demande et de la date courante
116 * @param string $date
117 * @param string $affichage_debut
118 * @return string
119 */
120 function agenda_date_debut_liste($date,$affichage_debut='date_jour'){
121 switch($affichage_debut){
122 case 'date_jour' :
123 break;
124 case 'date_veille' :
125 $date = agenda_jourdecal($date, -1);
126 break;
127 case 'debut_semaine' :
128 $t = strtotime($date);
129 $date = agenda_jourdecal($date, -(date('N', $t)-1));
130 break;
131 case 'debut_semaine_prec' :
132 $t = strtotime($date);
133 $date = agenda_jourdecal($date, -(date('N', $t)-1+7));
134 break;
135 case 'debut_mois' :
136 $t = strtotime($date);
137 $date = agenda_jourdecal($date, -(date('j', $t)-1));
138 break;
139 case 'debut_mois_prec' :
140 $t = strtotime($date);
141 $date = agenda_jourdecal($date, -(date('j', $t)-1)); // debut de mois
142 $date = agenda_moisdecal($date, -1); // precedent
143 break;
144 case 'debut_mois_1' :
145 case 'debut_mois_2' :
146 case 'debut_mois_3' :
147 case 'debut_mois_4' :
148 case 'debut_mois_5' :
149 case 'debut_mois_6' :
150 case 'debut_mois_7' :
151 case 'debut_mois_8' :
152 case 'debut_mois_9' :
153 case 'debut_mois_10' :
154 case 'debut_mois_11' :
155 case 'debut_mois_12' :
156 $t = strtotime($date);
157 $mdebut = intval(substr($affichage_debut,strlen('debut_mois_')));
158 $mcourant = date('n', $t);
159 $offset = ($mcourant-$mdebut+12)%12;
160 $date = agenda_jourdecal($date, -(date('j', $t)-1)); // debut de mois
161 $date = agenda_moisdecal($date, -$offset);
162 break;
163 }
164 return $date;
165 }
166 /**
167 * Afficher la periode de l'agenda :
168 * Le nom du mois si nb_mois = 1
169 * L'annee si nb_mois=12 et debut du mois = janvier
170 * sinon : mois annee - mois annee (xxx 12 - yyy 13)
171 * si le debut de la periode est fixe (debut d'un mois donnee), on precede de
172 * "Annee" ou "Saison" la periode
173 *
174 * @param string $date
175 * @param int $nb_mois
176 * @param string $affichage_debut
177 * @return string
178 */
179 function affdate_periode($date,$nb_mois,$affichage_debut='date_jour'){
180 $fixe = in_array($affichage_debut,array('debut_mois_1','debut_mois_2','debut_mois_3','debut_mois_4','debut_mois_5','debut_mois_6','debut_mois_7','debut_mois_8','debut_mois_9','debut_mois_10','debut_mois_11','debut_mois_12'));
181 if ($nb_mois==1)
182 return affdate_mois_annee($date);
183 if ($nb_mois==12 AND mois($date)==1)
184 return ($fixe?_T('agenda:label_annee').' ':'').annee($date);
185
186 return ($fixe?_T('agenda:label_periode_saison').' ':'').affdate_mois_annee($date)." - ".affdate_mois_annee(agenda_moisdecal($date, $nb_mois-1));
187 }
188
189 /**
190 * Raccourcis [->evenement12] et [->evt12]
191 */
192 /*
193 function generer_url_evenement($id, $args='', $ancre='') {
194 return array('evenement', $id);
195 }*/
196
197 ?>