<?php
/*
 * Gasell: Copyright 2005-2006 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>
 */

/* Historique :
	* 08/01/2006 DrazziB : Ajout de tests sur les dates de l'activite.
	* 15/12/2005 DrazziB : Gestion des erreurs
	* 09/07/2005 DrazziB : Création de l'action
 */

/**
 * Ajout d'une activite
 *
 * @param string args['racine'] : code de l'activite parente
 * @param string args['libelle'] : libelle de l'activite a creer
 * @param string args['datedebut'] : date de debut de l'activite (format Y-m-d)
 * @param string args['datefin'] : date de fin de l'activite (format Y-m-d)
 */

require_once GASELL_BASE . '/lib/Activite.php';

$result = false;
$checkData = true;

/* ==Definition des parametres optionnels== */

/* Si le parametre racine n'a pas ete precise                            */
if (!isset($args['racine']))
 {
	/* Alors, la racine des activites (0) est utilisee                   */
	$args['racine'] = 0;
 }
/* Si le parametre datedebut n'a pas ete precise                            */
if (!isset($args['datedebut']))
 {
	/* La date de debut = date courante */
	$args['datedebut'] = NULL;
 }
/* Si le parametre datefin n'a pas ete precise                            */
if (!isset($args['datefin']))
 {
	/* Alors l'activite n'a pas de date de fin */
	$args['datefin'] = NULL;
 }

/* ==Verification des donnees transmises.== */

/* Si le parent est differente de la racine */
if ($args['racine'] != 0)
 {
	$parentActivity = new Activite($args['racine']);
	if ($parentActivity->startDate != NULL && $args['datedebut'] != NULL)
	 {
		/* Conversion en entiers pour comparaison */
		$currentActStart = strtotime($args['datedebut']);
		$parentActStart = strtotime($parentActivity->startDate);
		if ($currentActStart < $parentActStart)
		 {
			$this->errorMessage("La date de d&eacute;but de l'activit&eacute; ne peut etre inferieure &agrave; celle de son activit&eacute; parente !");
			$checkData = false;
		 }
	 }

	if ($parentActivity->endDate != NULL && $args['datefin'] != NULL)
	 {
		/* Conversion en entiers pour comparaison */
		$currentActEnd = strtotime($args['datefin']);
		$parentActEnd = strtotime($parentActivity->endDate);
		if ($currentActEnd > $parentActEnd)
		 {
			$this->errorMessage("La date de fin de l'activit&eacute; ne peut etre superieure &agrave; celle de son activit&eacute; parente !");
			$checkData = false;
		 }
	 }
 }
/* Si la date de debut et la date de fin sont definies */
if ($args['datedebut'] != NULL && $args['datefin'] != NULL)
 {
	/* Conversion en entiers pour comparaison */
	$dateDeb = strtotime($args['datedebut']);
	$dateFin = strtotime($args['datefin']);
	/* Date de debut doit etre strictement anterieure a la date de fin */
	if ($dateDeb > $dateFin)
	 {
		$this->errorMessage("La date de d&eacute;but doit etre anterieure &agrave; la date de fin de l'activit&eacute; !");
		$checkData = false;
	 }
 }
if (!isset($args['libelle']) || $args['libelle'] == "")
 {
	$this->errorMessage("Vous devez pr&eacute;cisez un libell&eacute; pour l'activit&eacute; !");
	$checkData = false;
 }

/* Si les verifications sont ok, on insert */
if ($checkData == true)
 {
	/* Alors, ajoute l'activite dans la section courante                 */
	$result = Activite::Ajoute($args['racine'], trim($args['libelle']), $args['datedebut'], $args['datefin']);
 }
?>