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

****************************************************************************/
require_once("../include/define.inc.php");

function paquets_id($res) {
//récupère les id d'un SELECT ayant fourni la ressource $res, les met dans un tableau de listes 
//du genre (1,7,12,3,45) avec 200 éléments max.
//Permet d'effectuer ensuite des DELETE par paquets, une liste trop longue n'étant pas acceptée.
$nb=0;$liste='';
$tliste=array(); //on engrange dans un tableau car MySQL plante s'il y en a trop dans le IN (...)
while (list($id)=mysql_fetch_array($res)) {
    $liste.=','.$id;
    if ($nb>=200) {
        $tliste[]='('.substr($liste,1).')';
        $liste='';
        $nb=0;
        }
    else $nb++;
    }
if ($liste) $tliste[]='('.substr($liste,1).')';
mysql_free_result($res);
return $tliste;
}

function err_log_perimes() {
//supprime les enregistrements trop anciens de la table erreurs_logins
$res=query("DELETE FROM erreurs_logins
			WHERE ( TO_DAYS(CURDATE())-TO_DAYS(quand))>".TIME_OUT_ERREURS_LOGINS);
}

function demRep_perimeesAnnee() {
//suppression des demandes trop anciennes
//C'est fait POUR TOUS LES ETABLISSEMENTS alors qu'un seul est concerné (plus rapide et sans conséquence néfaste)
$res=query("SELECT message_id FROM demandes
                WHERE TO_DAYS(NOW())-TO_DAYS(quand)>=365");  //on garde un an toutes les demandes
$tliste=paquets_id($res);
for ($i=0;$i<count($tliste);$i++) {
   $liste=$tliste[$i];
   query("DELETE FROM demandes WHERE message_id IN $liste");
   query("DELETE FROM reponses WHERE message_id IN $liste");
   }
//à voir : est-ce qu'il peut rester quelques réponses isolées (cad dont les demandes n'existent plus ?)
}

function connexions_perimees() {
$res=query("DELETE FROM connexions
			WHERE ( TO_DAYS(CURDATE())-TO_DAYS(quand))>".TIME_OUT_CONNEXIONS);
}	


function planifier() {
//actions faites pour tous les établissements
//-------------------------------------------
$nbjGlobal=(strtotime('now')-strtotime($_SESSION['LAST_PROC_GLOBAL']))/86400;
if ($nbjGlobal>$_SESSION['PERIODE_PROC_GLOBAL']) {
    demRep_perimeesAnnee();
    err_log_perimes();
    connexions_perimees();
    query("UPDATE _params_globaux SET param_val=NOW() where param_nom='LAST_PROC_GLOBAL'");
    }

//actions faites pour l'établissements dont relève l'user
//-------------------------------------------------------
if ($_SESSION['sess_statut']!='Sadmin') {
	$nbjLocal=(strtotime('now')-strtotime($_SESSION['etab_last_proc_local']))/86400;
	if ($nbjLocal>$_SESSION['PERIODE_PROC_LOCAL'])  {
     	//demRep_perimeesEtab();
     	//dd 6/02/2007 supprimé car purge étab reportée sur élève et prof
    	query("UPDATE etablissements SET last_proc_local=NOW() WHERE etab_id=".$_SESSION['etab_id']);
        }
 	}
}


?>