<?php
#=
/*
Copyright 2002, Daniel Deycard, Jacques Messines, Stéphanie Roussel, Jean-Marie Treins
This file is part of GiBii/Melia.
GiBii/Melia 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.

GiBii/Melia 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 GiBii/Melia; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

****************************************************************************/


function purge_demrep($liste) {
$t=array_chunk($liste,100);
foreach($t as $tpart) {
	//print_r($tpart);
	$lpart=implode(",",$tpart);
	query("DELETE FROM reponses WHERE message_id IN ($lpart)");
	query("DELETE FROM demandes WHERE message_id IN ($lpart)");
	}
}	



function desactiver($liste) {
$t=array_chunk($liste,100);
foreach($t as $tpart) {
	//print_r($tpart);
	$lpart=implode(",",$tpart);
	query("UPDATE demandes SET active=0 WHERE message_id IN ($lpart)");
	}
}	
	

function purge_rep($liste) {
$t=array_chunk($liste,100);
foreach($t as $tpart) {
	//print_r($tpart);
	$lpart=implode(",",$tpart);
	query("DELETE FROM reponses WHERE reponse_id IN ($lpart)");
	}
}	

//recherche si une demande peut être affichée
//nacc0 est le nombre de refus, nacc1 le nombre d'accords,
//passage est un paramètre qui dit si on passe dans la page appelante pour la première fois
//si oui, on teste, sinon, c'est inutile de refaire
//nj est le nombre de jours écoulé depuis la demande

function est_inactivee($message_id,$eleve_id,$item_id,$disc_id,$nj,$nacc0,$nacc1,$longue) {
global $MODULE;
//sortie : vrai si la demande a été inactivée
//	$asupp : demande à supprimer (cas de péremption sans réponse) 
//	$acacher : demande à désactiver (cas de péremption)
//	si $asupp est vrai à la fin de la fonction, la demande est supprimée
//	si $acacher est vrai à la fin, la demande est désactivée dans la base

$asupp=false;
$acacher=false;
if ($nj>$_SESSION['etab_nbj_vie_demande']) {
	//demande (non obtenue) ayant dépassé la durée limite étab
	if ($nacc0==0 && $nacc1==0) {
		//demande sans réponse			
		$asupp=true;
		}
	elseif ($_SESSION['etab_profslongs']==0) {
		//pas de profs longs donc pas de demandes longues possibles dans l'étab
		$acacher=true;
		}
	elseif ($_SESSION['etab_nb_validations']==1) {
		//il n'y a pas de demandes longues dans ce cas (un seul prof concerné)
		$acacher=true;
		}
	elseif ($longue) {
		//la demande a déjà été prouvée comme étant longue : elle le reste sans calcul nécessaire
		//on ne fait rien !
		;
		}
	else {  
		//recherche de profs longs pour ce triplet (eleve_id, item_id, disc_id)
		//comme la demande est déjà "normalement" périmée, il faut obligatoirement des profs longs
		// en quantité suffisante et qui n'ont pas encore donné de réponse positive
		//ATTENTION : ne pas remplacer 	reponses.accord IS NULL OR reponses.accord=0
		//						par		reponses.accord=1
		// les "accord" égaux à NULL ne seront pas fournis
			
		if ($MODULE=='Melia') $did=" AND profs.disc_id=$disc_id ";
		else $did='';
		$reslong=query("
					SELECT DISTINCT reponses.accord 
					FROM profs
					LEFT JOIN reponses ON reponses.prof_id=profs.prof_id
					, lien_profs_classes, lpi, lien_eleves_classes
					WHERE lien_eleves_classes.eleve_id =$eleve_id
						AND lien_eleves_classes.classe_id = lien_profs_classes.classe_id
						AND lien_profs_classes.prof_id = lpi.prof_id
						AND lpi.item_id=$item_id
						AND lpi.prof_id = profs.prof_id
						AND profs.opt_dem1an =1
						AND (reponses.reponse_id IS NULL OR reponses.accord=0)
						$did
					");
		//analyser plus précisément qu'avec un mysql_num_rows car il faut compter :
		//	1 : pour les cas où reponse_id IS NULL
		//	2 : pour les cas où reponse_id = 0 (le prof peut se raviser)
		$quantite=0;
		while (list($acc)=mysql_fetch_array($reslong)) {
			if ($acc==NULL) $quantite++; else $quantite+=2;
			}
		if ($quantite+$nbacc1-$nbacc0<$_SESSION['etab_nb_validations']) {
			//pas assez de profs longs pour satisfaire la demande
			$acacher=true;
			}
		mysql_free_result($reslong);
		}
	}

//action !
if ($asupp) { 
	query("DELETE FROM demandes WHERE message_id=$message_id");
	//il n'y a pas de réponse à supprimer
	}
elseif ($acacher) {
	query("UPDATE demandes SET active=0 WHERE message_id=$message_id");
	}
return ($asupp || $acacher);
//on retourne VRAI lorsque la demande doit être inactivee (ou a été supprimée)
}
?>