Subversion Repositories Applications.gtt

Rev

Rev 64 | Rev 114 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 64 Rev 104
1
<?php
1
<?php
2
// +------------------------------------------------------------------------------------------------------+
2
// +------------------------------------------------------------------------------------------------------+
3
// | PHP version 5.1.1                                                                                    |
3
// | PHP version 5.1.1                                                                                    |
4
// +------------------------------------------------------------------------------------------------------+
4
// +------------------------------------------------------------------------------------------------------+
5
// | Copyright (C) 2006 Tela Botanica (accueil@tela-botanica.org)                                         |
5
// | Copyright (C) 2006 Tela Botanica (accueil@tela-botanica.org)                                         |
6
// +------------------------------------------------------------------------------------------------------+
6
// +------------------------------------------------------------------------------------------------------+
7
// | This file is part of eFlore.                                                                         |
7
// | This file is part of eFlore.                                                                         |
8
// |                                                                                                      |
8
// |                                                                                                      |
9
// | Foobar is free software; you can redistribute it and/or modify                                       |
9
// | Foobar is free software; you can redistribute it and/or modify                                       |
10
// | it under the terms of the GNU General Public License as published by                                 |
10
// | it under the terms of the GNU General Public License as published by                                 |
11
// | the Free Software Foundation; either version 2 of the License, or                                    |
11
// | the Free Software Foundation; either version 2 of the License, or                                    |
12
// | (at your option) any later version.                                                                  |
12
// | (at your option) any later version.                                                                  |
13
// |                                                                                                      |
13
// |                                                                                                      |
14
// | Foobar is distributed in the hope that it will be useful,                                            |
14
// | Foobar is distributed in the hope that it will be useful,                                            |
15
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
15
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
16
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
16
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                        |
17
// | GNU General Public License for more details.                                                         |
17
// | GNU General Public License for more details.                                                         |
18
// |                                                                                                      |
18
// |                                                                                                      |
19
// | You should have received a copy of the GNU General Public License                                    |
19
// | You should have received a copy of the GNU General Public License                                    |
20
// | along with Foobar; if not, write to the Free Software                                                |
20
// | along with Foobar; if not, write to the Free Software                                                |
21
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
21
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
22
// +------------------------------------------------------------------------------------------------------+
22
// +------------------------------------------------------------------------------------------------------+
23
// CVS : $Id$
23
// CVS : $Id$
24
/**
24
/**
25
* Classe Calendrier
25
* Classe Calendrier
26
*
26
*
27
* Description
27
* Description
28
*
28
*
29
*@package Calendrier
29
*@package Calendrier
30
//Auteur original :
30
//Auteur original :
31
*@version 1
31
*@version 1
32
*@author        Dorian BANNIER <dbannier@aol.com>
32
*@author        Dorian BANNIER <dbannier@aol.com>
33
//Autres auteurs :
33
//Autres auteurs :
34
*@version 3
34
*@version 3
35
*@author        Shaheen ABDOOL RAHEEM <shaheenar50@hotmail.com>
35
*@author        Shaheen ABDOOL RAHEEM <shaheenar50@hotmail.com>
36
*@version 4
36
*@version 4
37
*@author        Jean-Pascal MILCENT <jpm@clapas.org>
37
*@author        Jean-Pascal MILCENT <jpm@clapas.org>
38
*@author        aucun
38
*@author        aucun
39
*@copyright     Tela-Botanica 2000-2006
39
*@copyright     Tela-Botanica 2000-2006
40
*@version       $Revision$ $Date$
40
*@version       $Revision$ $Date$
41
// +------------------------------------------------------------------------------------------------------+
41
// +------------------------------------------------------------------------------------------------------+
42
*/
42
*/
43
 
43
 
44
/**
44
/**
45
* Classe calendrier pour gerer le calendrier pour un mois et une annee 
45
* Classe calendrier pour gerer le calendrier pour un mois et une annee 
46
*
46
*
47
*@param annee
47
*@param annee
48
*@param mois 
48
*@param mois 
49
*@param premier jour du mois 
49
*@param premier jour du mois 
50
*@param semaine
50
*@param semaine
51
*@param l'url du resultat affiche
51
*@param l'url du resultat affiche
52
*@param liste de noms des jours
52
*@param liste de noms des jours
53
*@param liste de noms des mois
53
*@param liste de noms des mois
54
*@param liste des jours feries du mois
54
*@param liste des jours feries du mois
55
*/
55
*/
56
class Calendrier
56
class Calendrier
57
{
57
{
58
	private $annee;   
58
	private $annee;   
59
	private $mois;
59
	private $mois;
60
	private $semaine;
60
	private $semaine;
61
	private $jour; 
61
	private $jour; 
62
	private $nom_jours = array();
62
	private $nom_jours = array();
63
	private $nom_mois = array();
63
	private $nom_mois = array();
64
	private $liste_feries = array();  
64
	private $liste_feries = array();  
65
	
65
	
66
	/**
66
	/**
67
	*constructeur de la classe calendrier
67
	*constructeur de la classe calendrier
68
	*toutes les variables sont initialises 	avec les donnees 
68
	*toutes les variables sont initialises 	avec les donnees 
69
	*de la date du jour si on ne passe aucune date en parametre
69
	*de la date du jour si on ne passe aucune date en parametre
70
	*sinon on initialise le calendrier avec 
70
	*sinon on initialise le calendrier avec 
71
	*@param semaine
71
	*@param semaine
72
	*@param annee
72
	*@param annee
73
	*/
73
	*/
74
	public function __construct($jour = null, $semaine = null, $mois = null, $annee = null)
74
	public function __construct($jour = null, $semaine = null, $mois = null, $annee = null)
75
	{
75
	{
76
		if (is_null($jour)) {
76
		if (is_null($jour)) {
77
			$jour = date('d', time());
77
			$jour = date('d', time());
78
		}
78
		}
79
		$this->jour = $jour;
79
		$this->jour = $jour;
80
		if (is_null($semaine)) {
80
		if (is_null($semaine)) {
81
			$semaine = date('W', time());
81
			$semaine = date('W', time());
82
		}
82
		}
83
		$this->semaine = $semaine;
83
		$this->semaine = $semaine;
84
		if (is_null($mois)) {
84
		if (is_null($mois)) {
85
			$mois = date('m', time());
85
			$mois = date('m', time());
86
		}
86
		}
87
		$this->mois = $mois;
87
		$this->mois = $mois;
88
		if (is_null($annee)) {
88
		if (is_null($annee)) {
89
			// TODO : vérifier le standard ISO-8601
89
			// TODO : vérifier le standard ISO-8601
90
			$annee = date('Y', time());
90
			$annee = date('Y', time());
91
		}
91
		}
92
		$this->annee = $annee;
92
		$this->annee = $annee;
93
		
93
		
94
		$this->nom_jours = array (1 => GESTION_LUN_L, GESTION_MAR_L, GESTION_MER_L, GESTION_JEU_L, GESTION_VEN_L, GESTION_SAM_L ,GESTION_DIM_L); 
94
		$this->nom_jours = array (1 => GESTION_LUN_L, GESTION_MAR_L, GESTION_MER_L, GESTION_JEU_L, GESTION_VEN_L, GESTION_SAM_L ,GESTION_DIM_L); 
95
		$this->nom_mois = array(1 => "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
95
		$this->nom_mois = array(1 => "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
96
		
96
		
97
		$this->liste_feries = $this->calculerJoursFeries($this->annee);
97
		$this->liste_feries = $this->calculerJoursFeries($this->annee);
98
	}
98
	}
99
	
99
	
100
	public function getAnnee()
100
	public function getAnnee()
101
	{
101
	{
102
		return $this->annee;
102
		return $this->annee;
103
	}
103
	}
104
	
104
	
105
	public function getMois()
105
	public function getMois()
106
	{
106
	{
107
		return $this->mois;
107
		return $this->mois;
108
	}
108
	}
109
	
109
	
110
	public function getSemaine()
110
	public function getSemaine()
111
	{
111
	{
112
		return $this->semaine;
112
		return $this->semaine;
113
	}
113
	}
114
	
114
	
115
	public function getJour()
115
	public function getJour()
116
	{
116
	{
117
		return $this->jour;
117
		return $this->jour;
118
	}
118
	}
119
	
119
	
120
	public function getNomJours($j = null)
120
	public function getNomJours($j = null)
121
	{
121
	{
122
		if (is_null($j)) {
122
		if (is_null($j)) {
123
			return $this->nom_jours;
123
			return $this->nom_jours;
124
		}
124
		}
125
		return $this->nom_jours[$j];
125
		return $this->nom_jours[$j];
126
	}
126
	}
127
 
127
 
128
	public function getNomMois($m = null)
128
	public function getNomMois($m = null)
129
	{
129
	{
130
		if (is_null($m)) {
130
		if (is_null($m)) {
131
			return $this->nom_mois;
131
			return $this->nom_mois;
132
		}
132
		}
133
		return $this->nom_mois[$m];
133
		return $this->nom_mois[$m];
134
	}
134
	}
135
	
135
	
136
	public function getListeFeries()
136
	public function getListeFeries()
137
	{
137
	{
138
		return $this->liste_feries;
138
		return $this->liste_feries;
139
	}
139
	}
140
	
140
	
141
	/**
141
	/**
142
	*Calcule les dates des jours fériés pour la france.
142
	*Calcule les dates des jours fériés pour la france.
143
	*Renvoie un tableau contenant la liste de dates par mois.
143
	*Renvoie un tableau contenant la liste de dates par mois.
144
	*Les dates sont de la forme timestamp unix.
144
	*Les dates sont de la forme timestamp unix.
145
	*
145
	*
146
	*@param integer l'année pour laquelle on veut les jours fériés.
146
	*@param integer l'année pour laquelle on veut les jours fériés.
147
	*@return array tableau des dates fériées.
147
	*@return array tableau des dates fériées.
148
	*/
148
	*/
149
	public function calculerJoursFeries($annee)
149
	public function calculerJoursFeries($annee)
150
	{
150
	{
151
		$tab = array(	mktime(0,0,0,1,1,$annee), 
151
		$tab = array(	mktime(0,0,0,1,1,$annee), 
152
						$this->donnerDatePaques($annee),
152
						$this->donnerDatePaques($annee),
153
						mktime(0,0,0,5,1,$annee),
153
						mktime(0,0,0,5,1,$annee),
154
	     				mktime(0,0,0,5,8,$annee),
154
	     				mktime(0,0,0,5,8,$annee),
155
	     				$this->donnerDateAscension($annee),
155
	     				$this->donnerDateAscension($annee),
156
	     				$this->donnerDatePentecote($annee),
156
	     				$this->donnerDatePentecote($annee),
157
	     				mktime(0,0,0,7,14,$annee),
157
	     				mktime(0,0,0,7,14,$annee),
158
	     				mktime(0,0,0,8,15,$annee),
158
	     				mktime(0,0,0,8,15,$annee),
159
	     				mktime(0,0,0,11,1,$annee),
159
	     				mktime(0,0,0,11,1,$annee),
160
	     				mktime(0,0,0,11,11,$annee),
160
	     				mktime(0,0,0,11,11,$annee),
161
	     				mktime(0,0,0,12,25,$annee));
161
	     				mktime(0,0,0,12,25,$annee));
162
		return $tab;
162
		return $tab;
163
	} 
163
	} 
164
	
164
	
165
	/**
165
	/**
166
	*Calcule la date du lundi de Pâques.
166
	*Calcule la date du lundi de Pâques.
167
	*
167
	*
168
	*@param integer l'année pour laquelle on veut connaître la date de Pâques
168
	*@param integer l'année pour laquelle on veut connaître la date de Pâques
169
	*@return integer le timestamp du lundi de Pâques
169
	*@return integer le timestamp du lundi de Pâques
170
	*/
170
	*/
171
	public function donnerDatePaques($annee)
171
	public function donnerDatePaques($annee)
172
	{
172
	{
173
		$date_paques = easter_date($annee);
173
		$date_paques = easter_date($annee);
174
		$lundi_paques = mktime(	date("H", $date_paques),
174
		$lundi_paques = mktime(	date("H", $date_paques),
175
								date("i", $date_paques),
175
								date("i", $date_paques),
176
								date("s", $date_paques),
176
								date("s", $date_paques),
177
								date("m", $date_paques),
177
								date("m", $date_paques),
178
								date("d", $date_paques) + 1,
178
								date("d", $date_paques) + 1,
179
								date("Y", $date_paques));
179
								date("Y", $date_paques));
180
		return $lundi_paques;
180
		return $lundi_paques;
181
	}
181
	}
182
	/**
182
	/**
183
	*Calcule la date de l'ascension.
183
	*Calcule la date de l'ascension.
184
	*
184
	*
185
	*@param integer l'année pour laquelle on veut connaître la date de l'ascencion
185
	*@param integer l'année pour laquelle on veut connaître la date de l'ascencion
186
	*@return integer le timestamp de l'ascencion
186
	*@return integer le timestamp de l'ascencion
187
	*/
187
	*/
188
	public function donnerDateAscension($annee)
188
	public function donnerDateAscension($annee)
189
	{
189
	{
190
		$date_paques = easter_date($annee);
190
		$date_paques = easter_date($annee);
191
		$date_ascension = mktime(	date("H", $date_paques),
191
		$date_ascension = mktime(	date("H", $date_paques),
192
									date("i", $date_paques),
192
									date("i", $date_paques),
193
									date("s", $date_paques),
193
									date("s", $date_paques),
194
									date("m", $date_paques),
194
									date("m", $date_paques),
195
									date("d", $date_paques) + 39,
195
									date("d", $date_paques) + 39,
196
									date("Y", $date_paques));
196
									date("Y", $date_paques));
197
		return $date_ascension;
197
		return $date_ascension;
198
	}
198
	}
199
 
199
 
200
	/**
200
	/**
201
	*Calcule la date du lundi de la pentecote
201
	*Calcule la date du lundi de la pentecote
202
	*Renvoie un timestamp
202
	*Renvoie un timestamp
203
	*renvoie cette derniere
203
	*renvoie cette derniere
204
	*/
204
	*/
205
	public function donnerDatePentecote($annee)
205
	public function donnerDatePentecote($annee)
206
	{
206
	{
207
		$date_paques = easter_date($annee);
207
		$date_paques = easter_date($annee);
208
		$date_ascension = $this->donnerDateAscension($annee);
208
		$date_ascension = $this->donnerDateAscension($annee);
209
		$date_pentecote = mktime(	date("H", $date_ascension),
209
		$date_pentecote = mktime(	date("H", $date_ascension),
210
									date("i", $date_ascension),
210
									date("i", $date_ascension),
211
									date("s", $date_ascension),
211
									date("s", $date_ascension),
212
									date("m", $date_ascension),
212
									date("m", $date_ascension),
213
									date("d", $date_ascension) + 11,
213
									date("d", $date_ascension) + 11,
214
									date("Y", $date_ascension)); 
214
									date("Y", $date_ascension)); 
215
		return $date_pentecote;
215
		return $date_pentecote;
216
	}
216
	}
217
 
217
 
218
	/**
218
	/**
219
	*Indique si une date est fériée ou non
219
	*Indique si une date est fériée ou non
220
	*renvoie 1 si férié
220
	*renvoie 1 si férié
221
	*0 sinon
221
	*0 sinon
222
	*/
222
	*/
223
	function etreFerie($date)
223
	function etreFerie($date)
224
	{
224
	{
225
		if (in_array($date, $this->liste_feries)) {
225
		if (in_array($date, $this->liste_feries)) {
226
			return 1;
226
			return 1;
227
		} else {
227
		} else {
228
			return 0;
228
			return 0;
229
		}
229
		}
230
	}
230
	}
231
}
231
}
232
?>
232
?>