<?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
 */

/**
 * Creation d'une participation (qui lie l'activite et la personne).
 *
 * @param string $args['activity'] : code de l'activite
 * @param string $args['personne'] : code de la personne
 * @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/Participation.php';
require_once GASELL_BASE . '/lib/Activite.php';

$result = false;
$checkData = true;

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

/* sinon on prend la valeur du formulaire pour la 'personne' */
if (isset($args['personne']) && (!empty($args['personne'])))
 {
	$idUser = $args['personne'];
 }
else
 {
	/* Par defaut, on utilise le user logue dans l'application */
	// FIXME Attention l'objet Gasell n'est pas disponible dans ce contexte
	// ... on passe donc par le tableau GLOBALS = c'est mal
	$idUser = $GLOBALS['Gasell']->user['memnum'];
 }

/* Si le parametre datedebut n'a pas ete precise                            */
if (!isset($args['datedebut']))
 {
	/* Alors la participation n'a pas de date de debut */
	$args['datedebut'] = NULL;
 }

/* Si le parametre datefin n'a pas ete precise                            */
if (!isset($args['datefin']))
 {
	/* Alors la participation n'a pas de date de fin */
	$args['datefin'] = NULL;
 }

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

/* Si le libelle existe et que la saisie est non-nulle                    */
if (!isset($args['activity']) || $args['activity'] == "")
 {
	$this->errorMessage("Vous devez pr&eacute;cisez l'activit&eacute; de votre participation !");
	$checkData = false;
 }

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

	if ($activity->endDate != NULL && $args['datefin'] != NULL)
	 {
		/* Conversion en entiers pour comparaison */
		$partEnd = strtotime($args['datefin']);
		$activityEnd = strtotime($activity->endDate);
		if ($partEnd > $activityEnd)
		 {
			$this->errorMessage("La date de fin de la participation ne peut etre superieure &agrave; celle de son activit&eacute; !");
			$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 !");
		$checkData = false;
	 }
 }


/* Si les verifications sont ok, on insert */
if ($checkData == true)
 {
	/* Alors, ajoute la participation dans la section courante                 */
	$result = VolontaryHelp::CreateVolontaryHelpForPerson($idUser, trim($args['activity']), $args['datedebut'], $args['datefin']);
 }
?>