Subversion Repositories Applications.gtt

Rev

Rev 162 | Details | Compare with Previous | Last modification | View Log | RSS feed

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