New file |
0,0 → 1,232 |
<?php |
// +------------------------------------------------------------------------------------------------------+ |
// | PHP version 5.1.1 | |
// +------------------------------------------------------------------------------------------------------+ |
// | Copyright (C) 2006 Tela Botanica (accueil@tela-botanica.org) | |
// +------------------------------------------------------------------------------------------------------+ |
// | This file is part of eFlore. | |
// | | |
// | Foobar is free software; you can redistribute it and/or modify | |
// | it under the terms of the GNU General Public License as published by | |
// | the Free Software Foundation; either version 2 of the License, or | |
// | (at your option) any later version. | |
// | | |
// | Foobar is distributed in the hope that it will be useful, | |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
// | GNU General Public License for more details. | |
// | | |
// | You should have received a copy of the GNU General Public License | |
// | along with Foobar; if not, write to the Free Software | |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
// +------------------------------------------------------------------------------------------------------+ |
// CVS : $Id$ |
/** |
* Classe Calendrier |
* |
* Description |
* |
*@package Calendrier |
//Auteur original : |
*@version 1 |
*@author Dorian BANNIER <dbannier@aol.com> |
//Autres auteurs : |
*@version 3 |
*@author Shaheen ABDOOL RAHEEM <shaheenar50@hotmail.com> |
*@version 4 |
*@author Jean-Pascal MILCENT <jpm@clapas.org> |
*@author aucun |
*@copyright Tela-Botanica 2000-2006 |
*@version $Revision$ $Date$ |
// +------------------------------------------------------------------------------------------------------+ |
*/ |
|
/** |
* Classe calendrier pour gerer le calendrier pour un mois et une annee |
* |
*@param annee |
*@param mois |
*@param premier jour du mois |
*@param semaine |
*@param l'url du resultat affiche |
*@param liste de noms des jours |
*@param liste de noms des mois |
*@param liste des jours feries du mois |
*/ |
class Calendrier |
{ |
private $annee; |
private $mois; |
private $semaine; |
private $jour; |
private $nom_jours = array(); |
private $nom_mois = array(); |
private $liste_feries = array(); |
|
/** |
*constructeur de la classe calendrier |
*toutes les variables sont initialises avec les donnees |
*de la date du jour si on ne passe aucune date en parametre |
*sinon on initialise le calendrier avec |
*@param semaine |
*@param annee |
*/ |
public function __construct($jour = null, $semaine = null, $mois = null, $annee = null) |
{ |
if (is_null($jour)) { |
$jour = date('d', time()); |
} |
$this->jour = $jour; |
if (is_null($semaine)) { |
$semaine = date('W', time()); |
} |
$this->semaine = $semaine; |
if (is_null($mois)) { |
$mois = date('m', time()); |
} |
$this->mois = $mois; |
if (is_null($annee)) { |
// TODO : vérifier le standard ISO-8601 |
$annee = date('Y', time()); |
} |
$this->annee = $annee; |
|
$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); |
$this->nom_mois = array(1 => "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"); |
|
$this->liste_feries = $this->calculerJoursFeries($this->annee); |
} |
|
public function getAnnee() |
{ |
return $this->annee; |
} |
|
public function getMois() |
{ |
return $this->mois; |
} |
|
public function getSemaine() |
{ |
return $this->semaine; |
} |
|
public function getJour() |
{ |
return $this->jour; |
} |
|
public function getNomJours($j = null) |
{ |
if (is_null($j)) { |
return $this->nom_jours; |
} |
return $this->nom_jours[$j]; |
} |
|
public function getNomMois($m = null) |
{ |
if (is_null($m)) { |
return $this->nom_mois; |
} |
return $this->nom_mois[$m]; |
} |
|
public function getListeFeries() |
{ |
return $this->liste_feries; |
} |
|
/** |
*Calcule les dates des jours fériés pour la france. |
*Renvoie un tableau contenant la liste de dates par mois. |
*Les dates sont de la forme timestamp unix. |
* |
*@param integer l'année pour laquelle on veut les jours fériés. |
*@return array tableau des dates fériées. |
*/ |
public function calculerJoursFeries($annee) |
{ |
$tab = array( mktime(0,0,0,1,1,$annee), |
$this->donnerDatePaques($annee), |
mktime(0,0,0,5,1,$annee), |
mktime(0,0,0,5,8,$annee), |
$this->donnerDateAscension($annee), |
$this->donnerDatePentecote($annee), |
mktime(0,0,0,7,14,$annee), |
mktime(0,0,0,8,15,$annee), |
mktime(0,0,0,11,1,$annee), |
mktime(0,0,0,11,11,$annee), |
mktime(0,0,0,12,25,$annee)); |
return $tab; |
} |
|
/** |
*Calcule la date du lundi de Pâques. |
* |
*@param integer l'année pour laquelle on veut connaître la date de Pâques |
*@return integer le timestamp du lundi de Pâques |
*/ |
public function donnerDatePaques($annee) |
{ |
$date_paques = easter_date($annee); |
$lundi_paques = mktime( date("H", $date_paques), |
date("i", $date_paques), |
date("s", $date_paques), |
date("m", $date_paques), |
date("d", $date_paques) + 1, |
date("Y", $date_paques)); |
return $lundi_paques; |
} |
/** |
*Calcule la date de l'ascension. |
* |
*@param integer l'année pour laquelle on veut connaître la date de l'ascencion |
*@return integer le timestamp de l'ascencion |
*/ |
public function donnerDateAscension($annee) |
{ |
$date_paques = easter_date($annee); |
$date_ascension = mktime( date("H", $date_paques), |
date("i", $date_paques), |
date("s", $date_paques), |
date("m", $date_paques), |
date("d", $date_paques) + 39, |
date("Y", $date_paques)); |
return $date_ascension; |
} |
|
/** |
*Calcule la date du lundi de la pentecote |
*Renvoie un timestamp |
*renvoie cette derniere |
*/ |
public function donnerDatePentecote($annee) |
{ |
$date_paques = easter_date($annee); |
$date_ascension = $this->donnerDateAscension($annee); |
$date_pentecote = mktime( date("H", $date_ascension), |
date("i", $date_ascension), |
date("s", $date_ascension), |
date("m", $date_ascension), |
date("d", $date_ascension) + 11, |
date("Y", $date_ascension)); |
return $date_pentecote; |
} |
|
/** |
*Indique si une date est fériée ou non |
*renvoie 1 si férié |
*0 sinon |
*/ |
function etreFerie($date) |
{ |
if (in_array($date, $this->liste_feries)) { |
return 1; |
} else { |
return 0; |
} |
} |
} |
?> |