<?php
/*
 * Gasell: Copyright 2005 Linux-Nantes Association <contact@linux-nantes.fr.eu.org>
 *
 * You should have received a copy of the GNU Public
 * License along with this package; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 * Authors: Raude-Morvan Damien (DrazziB) <drazzib@drazzib.com>
 *
 * Histoire
 *  * 09/07/02005 DrazziB : Création de l'action
 */

/**
 * Cette action permet d'obtenir une liste de dates entre deux intervalles.
 * Elle peut etre utilisee dans les formulaires qui necessitent la selection
 * d'une date.
 *
 * @param string datedeb Date de debut de l'intervalle (incluse)
 * Si aucune date de debut n'est fournie, on prend le 1 jour du mois précédent
 * la date courante comme date de debut de l'intervalle.
 * Ex : si la date courante = 12/12/2005, on prend le 01/11/2005.
 *
 * @param string datefin Date de fin de l'intervalle (incluse)
 * Si aucune date de fin n'est fournie, on prend la date courante + 1 an.
 * Ex : si la date courante = 12/12/2005, on prend le 12/12/2006.
 */

/* La fonction setlocale() de PHP semble limitee :
 - Si on passe "fr_FR" et qu'il n'existe que la locale "fr_FR.utf-8" ca ne marche pas
 - Son utilisation ne semble pas possible partout...
Donc pour le moment, les mois sont localises a la main */
$_MONTHSARRAY = Array(
1 => "Janvier",
2 => "F&eacute;vrier",
3 => "Mars",
4 => "Avril",
5 => "Mai",
6 => "Juin",
7 => "Juillet",
8 => "Aout",
9 => "Septembre",
10 => "Octobre",
11 => "Novembre",
12 => "D&eacute;cembre"
);

/* Creation du tableau pour le stockage */
$result['jours']	= array();
$result['mois']		= array();
$result['annees']	= array();

$basetime			= 0;
$endtime			= 0;

if (isset($args['datedeb']) && $args['datedeb'] != "")
 {
	/* Convertion de la date pour obtenir un timestamp */
// FIXME Ca semble pas hyper solide.
	$basetime = strtotime($args['datedeb']);
 }
if ($basetime <= 0)
 {
	/* premier jour du mois précédent la date courante */
	$currentDateInfo = getdate();
	$curentMonth = $currentDateInfo['mon'];
	$curentYear = $currentDateInfo['year'];
	$basetime = strtotime($curentMonth."/01/".$curentYear." -1 month");
 }


if (isset($args['datefin']) && $args['datefin'] != "")
 {
	/* Convertion de la date pour obtenir un timestamp */
// FIXME Ca semble pas hyper solide.
	$endtime = strtotime($args['datefin']);
 }
if ($endtime <= 0 || $endtime < $basetime)
 {
	/* date courante + 1 an */
	$endtime = strtotime("now +1 year");
 }


while ($basetime <= $endtime)
 {
	/* Insertion des infos dans le retour */
	$result['jours'][date("d",$basetime)] = date("d",$basetime);
// FIXME Selection du format du mois : nombre ou texte
	$result['mois'][date("m",$basetime)] = $_MONTHSARRAY[date("n",$basetime)];
	$result['annees'][date("Y",$basetime)] = date("Y",$basetime);

	/* On passe au jour suivante */
	$basetime = strtotime(date("m/d/Y",$basetime) . " +1 day");
 }

/* Permet de remettre les tableaux dans le bon ordre */
// FIXME A rendre parametrable
ksort($result['jours']);
ksort($result['mois']);
ksort($result['annees']);

?>