Subversion Repositories Applications.gtt

Rev

Rev 64 | Rev 114 | Go to most recent revision | 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
 
11 jpm 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);
104 jpm 95
		$this->nom_mois = array(1 => "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
10 jpm 96
 
97
		$this->liste_feries = $this->calculerJoursFeries($this->annee);
98
	}
99
 
100
	public function getAnnee()
101
	{
102
		return $this->annee;
103
	}
104
 
105
	public function getMois()
106
	{
107
		return $this->mois;
108
	}
109
 
110
	public function getSemaine()
111
	{
112
		return $this->semaine;
113
	}
114
 
115
	public function getJour()
116
	{
117
		return $this->jour;
118
	}
119
 
11 jpm 120
	public function getNomJours($j = null)
121
	{
122
		if (is_null($j)) {
123
			return $this->nom_jours;
124
		}
125
		return $this->nom_jours[$j];
126
	}
127
 
128
	public function getNomMois($m = null)
129
	{
130
		if (is_null($m)) {
131
			return $this->nom_mois;
132
		}
133
		return $this->nom_mois[$m];
134
	}
135
 
136
	public function getListeFeries()
137
	{
138
		return $this->liste_feries;
139
	}
140
 
10 jpm 141
	/**
104 jpm 142
	*Calcule les dates des jours fériés pour la france.
10 jpm 143
	*Renvoie un tableau contenant la liste de dates par mois.
144
	*Les dates sont de la forme timestamp unix.
145
	*
104 jpm 146
	*@param integer l'année pour laquelle on veut les jours fériés.
147
	*@return array tableau des dates fériées.
10 jpm 148
	*/
149
	public function calculerJoursFeries($annee)
150
	{
151
		$tab = array(	mktime(0,0,0,1,1,$annee),
152
						$this->donnerDatePaques($annee),
153
						mktime(0,0,0,5,1,$annee),
154
	     				mktime(0,0,0,5,8,$annee),
155
	     				$this->donnerDateAscension($annee),
156
	     				$this->donnerDatePentecote($annee),
157
	     				mktime(0,0,0,7,14,$annee),
158
	     				mktime(0,0,0,8,15,$annee),
159
	     				mktime(0,0,0,11,1,$annee),
160
	     				mktime(0,0,0,11,11,$annee),
161
	     				mktime(0,0,0,12,25,$annee));
162
		return $tab;
163
	}
164
 
165
	/**
104 jpm 166
	*Calcule la date du lundi de Pâques.
10 jpm 167
	*
104 jpm 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
10 jpm 170
	*/
171
	public function donnerDatePaques($annee)
172
	{
173
		$date_paques = easter_date($annee);
174
		$lundi_paques = mktime(	date("H", $date_paques),
175
								date("i", $date_paques),
176
								date("s", $date_paques),
177
								date("m", $date_paques),
178
								date("d", $date_paques) + 1,
179
								date("Y", $date_paques));
180
		return $lundi_paques;
181
	}
182
	/**
183
	*Calcule la date de l'ascension.
184
	*
104 jpm 185
	*@param integer l'année pour laquelle on veut connaître la date de l'ascencion
10 jpm 186
	*@return integer le timestamp de l'ascencion
187
	*/
188
	public function donnerDateAscension($annee)
189
	{
190
		$date_paques = easter_date($annee);
191
		$date_ascension = mktime(	date("H", $date_paques),
192
									date("i", $date_paques),
193
									date("s", $date_paques),
194
									date("m", $date_paques),
195
									date("d", $date_paques) + 39,
196
									date("Y", $date_paques));
197
		return $date_ascension;
198
	}
199
 
200
	/**
201
	*Calcule la date du lundi de la pentecote
202
	*Renvoie un timestamp
203
	*renvoie cette derniere
204
	*/
205
	public function donnerDatePentecote($annee)
206
	{
207
		$date_paques = easter_date($annee);
208
		$date_ascension = $this->donnerDateAscension($annee);
209
		$date_pentecote = mktime(	date("H", $date_ascension),
210
									date("i", $date_ascension),
211
									date("s", $date_ascension),
212
									date("m", $date_ascension),
213
									date("d", $date_ascension) + 11,
214
									date("Y", $date_ascension));
215
		return $date_pentecote;
216
	}
217
 
218
	/**
104 jpm 219
	*Indique si une date est fériée ou non
220
	*renvoie 1 si férié
10 jpm 221
	*0 sinon
222
	*/
223
	function etreFerie($date)
224
	{
225
		if (in_array($date, $this->liste_feries)) {
226
			return 1;
227
		} else {
228
			return 0;
229
		}
230
	}
231
}
232
?>