<?php
#=
/****************************************************************************
Copyright 2002, Daniel Deycard, Jacques Messines, Alain Pomirol
(CATICE Académie de Bordeaux)

This file is part of Gibii.

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

****************************************************************************/
include("../include/vars_adm.php");
include("../include/util.inc.php");
include("../incorporation/individus.class.php");
include("../incorporation/importation.php");
include("../include/utiljs.php");
include("../include/html.class.php");
include("../incorporation/enluminures.inc.php");


function recupererIncertainAncien475($nid,&$nouveau) {
	//ancien incertain d'une version <=4.7.5, connu seulement par son enr dans $table
	//et des valeurs négatives dans les tables liens
	//on restitue l'environnement par défaut (au mieux !)
	global $champactif,$modele,$logfournis,$mdpfournis,$razmdp,$logprioanc,$mdpenclair;
	global $IMPOSE_CHGT_MDP, $etab_id;	
	if (isset($IMPOSE_CHGT_MDP) && $IMPOSE_CHGT_MDP) $champactif=0; else $champactif=1;

	//récupération des données de la table eleves/profs
	$nouveau->setbyid($nid);
	//récupération des modèles de logins de l'étab
    //$reset=query("SELECT modele_login_e,modele_login_p FROM etablissements WHERE etab_id=$etab_id");
    //list($modele_login_e,$modele_login_p)=mysql_fetch_array($reset); 
	//print "<br>($modele_login_e,$modele_login_p)<br>";
	if ($nouveau->statut=='Eleve') { 
		global $etab_modele_login_e;
		$modele=$etab_modele_login_e;
		$res=query("SELECT rang,disc_id FROM lien_eleves_disciplines WHERE eleve_id=-$nid");
		while (list($rang,$disc_id)=mysql_fetch_array($res)) {
			$nouveau->lv[$rang]=$disc_id;
			}
		query("DELETE FROM lien_eleves_disciplines WHERE eleve_id=-$nid");
		}
	else {
		global $etab_modele_login_p;
		$modele=$etab_modele_login_p;
		$res=query("SELECT classe_id FROM lien_profs_classes WHERE prof_id=-$nid");
		$c=1;
		while (list($classe_id)=mysql_fetch_array($res)) {
			$nouveau->classes[$c++]=$classe_id;
			}
		query("DELETE FROM lien_profs_classes WHERE prof_id=-$nid");
		}
	$logfournis=$mdpfournis=$razmdp=$logprioanc=$mdpenclair=0; //difficile de faire mieux...
	garderVrac($nouveau);	//pour une éventuelle annulation, on évite d'avoir à recalculer tout ça
}


function recupererIncertain($nid,&$nouveau) {
global $modele,$champactif,
	   $logfournis,$mdpfournis,$razmdp,$logprioanc,$mdpenclair;
creer_table_divers();
if (list($vrac)=mysql_fetch_array(query("SELECT vrac FROM divers WHERE motcle='$nouveau->table' AND id=$nid"))) {
	$vrac=stripslashes($vrac);
	$nouveau=unserialize($vrac);
	//récupérer les variables globales $modele,$champactif,$etab_id,$logfournis,$mdpfournis,$razmdp,$logprioanc,$mdpenclair;
	foreach($nouveau->vrac as $idx=>$valeur) {
		global $$idx;
		$$idx=$valeur;
		}
	}
else recupererIncertainAncien475($nid,$nouveau);
}	


function supprimer(&$nouveau) {
query("DELETE FROM $nouveau->table WHERE $nouveau->champ_id=$nouveau->id");
query("DELETE FROM divers WHERE motcle='$nouveau->table' AND id=$nouveau->id");
}


function creer(&$nouveau) {
global $champactif,$modele,$etab_id,$sess_ascol,
	   $logfournis,$mdpfournis,$razmdp,$logprioanc,$mdpenclair;
global $MODULE,$etab_niveau; //viennent de la session

loginPourNouveau($nouveau);
mdpPourNouveau($nouveau);
$nouveau->insertcompte($champactif);
$nouveau->ajoutgroupe_en_lien();

if ('Melia'==$MODULE || 'prof_id'==$nouveau->champ_id)
    $nouveau->ajouteroptions(0); //sinon, la table restera vide (lien_eleves_disciplines) sous GiBii
if ('Melia'==$MODULE && 'prof_id'==$nouveau->champ_id)
    $nouveau->cochercompetences($etab_niveau);

query("UPDATE $nouveau->table SET tag=0 WHERE $nouveau->champ_id=$nouveau->id");
query("DELETE FROM divers WHERE motcle='$nouveau->table' AND id=$nouveau->id");
afficher($nouveau,false);
}


function associer(&$ancien,&$nouveau) {
//on met l'ancien à jour
global $champactif,$modele,$etab_id,$sess_ascol,
	   $logfournis,$mdpfournis,$razmdp,$logprioanc,$mdpenclair;
$res=query("SELECT login,mdp FROM comptes WHERE compte_id=$ancien->compte_id;");
list($ancien->login,$ancien->mdp)=mysql_fetch_array($res);
supprimer($nouveau); //suppression dans la table, pas en mémoire 
majancien($ancien,$nouveau); //dans importation
afficher($nouveau,false);
}


function associer_si_homo_unique(&$nouveau) {
global $champactif,$modele,$etab_id,$sess_ascol,
	   $logfournis,$mdpfournis,$razmdp,$logprioanc,$mdpenclair;
$result=$nouveau->qhomo(true);
//print "### ";print_r($result);exit();
if (is_object($result)) {
    $ancien=$result; //pour rester sémantiquement propre
    associer($ancien,$nouveau);
    return true; //on a affiché
    }
return false;
}


//============================================================================
//entrée en venant de incertains1.php avec
//        - $ep = 1 (eleve) ou 2 (prof)
//		  - $detail (0 ou 1) à retourner à incertains1 (détail d'affichage)
//        - $op = 'creer', 'supprimer', 'good'
//        - $nid = n° de l'individu stocké provisoirement (tag=1) dans sa table (eleves ou profs)
//        - $aid = n° de l'individu retrouvé et correspondant à $nid (cas op='good' seulement)
//        - si passage parla boîte déroulante : $box (tableau de cases à cocher)

opensession("Admin",false);
connecte($host,$user,$mdp,$db);
entete_sansjs("Traitement d'un incertain");
if ($ep==1) $elvprof='eleve'; else $elvprof='prof';

$nouveau=new $elvprof();

//$nouveau est complet, comme au moment de l'incorporation et les variables globales
//$modele,$champactif,$etab_id,$logfournis,$mdpfournis,$razmdp,$logprioanc,$mdpenclair;
//seront récupérées ci-dessous (recupererIncertain)

switch ($op) {
    case 'creer' :
		recupererIncertain($nid,$nouveau);
        creer($nouveau);
        $affichage=true;
        break;
    case 'supprimer':
		recupererIncertain($nid,$nouveau);
        supprimer($nouveau);
        $affichage=false;
        break;
    case 'good' :
		recupererIncertain($nid,$nouveau);
		$ancien=new $elvprof();
		$ancien->setbyid($aid);
        associer($ancien,$nouveau);
		$affichage=true;
        break;
    case 'multiple' :
        if (!isset($box)) {
			alert("Aucune case cochée !");
			$affichage=false;
			}
        else {
        	$affichage=false;
        	//un seul cas à true et $affichage passe à true
            foreach($box as $nid) {
				recupererIncertain($nid,$nouveau);
                switch ($action) {
                    case 'N' :  creer($nouveau);$affichage=true; break;
                    case 'S' :  supprimer($nouveau);  break;
                    case 'A' :  $affichage|=associer_si_homo_unique($nouveau);break;
                    }
				$nouveau->vider();
                }
            }
    }
if ($affichage) {
	print "<p>&nbsp;</p>";
	print "<p style=\"font-family:sans-serif;font-size:12pt;font-style:italic;font-weight:bold;\">\n";
	print "<a href=\"incertains1.php?ep=$ep&amp;detail=$detail\">Retour aux incertains</a></p>\n";
	}
else goto("incertains1.php?ep=$ep&amp;detail=$detail");
enqueue();
?>






