<?php
#=
function dedoub_resultats($ecrire_dans_page) {
global $MODULE;
//supprimer tous les index de resultats (sauf PRIMARY), ce qui supprimera l'ancien (mauvais)
$tnoms=array();
$res=query("SHOW INDEX FROM resultats");
while ($row=mysql_fetch_array($res)) {
    $nom=$row['Key_name'];
    if ($nom=='PRIMARY') continue;
    if (!in_array($nom,$tnoms)) {
        query("ALTER TABLE resultats DROP INDEX $nom");
        $tnoms[]=$nom; //pour ne pas la supprimer plusieurs fois (affichage de SHOW)
        }
    }

//rajouter l'index voulu
query("ALTER IGNORE TABLE resultats ADD UNIQUE ix_elitdi (eleve_id,item_id,disc_id)");

//à ce stade, dans Melia, tout baigne
//dans GiBii, il peut rester des scories comme (1,2,3) et (1,2,-1) ou (1,2,4)
//il faut donc garder le premier trouvé et lui mettre -1 en disc_id : (1,2,-1)
//en évitant de risquer avoir à un moment deux fois (1,2,-1) !

if ($MODULE=='Melia') return;


$supp=0;
$update=0;
//pour gibii uniquement (pour Melia, l'ajout d'index à la table resultats suffit).
$res=query("SELECT DISTINCT r1.resultat_id AS rid,r1.eleve_id AS eid,r1.item_id AS iid,r1.disc_id AS did
              FROM resultats AS r1,resultats AS r2
             WHERE r1.eleve_id=r2.eleve_id
               AND r1.item_id=r2.item_id
               AND r1.resultat_id<>r2.resultat_id
             ORDER BY r1.eleve_id, r1.item_id, r1.resultat_id");

$firstrid=$firsteid=$firstiid=$firstdid=0;
while (list($rid,$eid,$iid,$did)=mysql_fetch_array($res)) {
    if ($eid==$firsteid && $iid==$firstiid) {
        if ($rid!=$firstrid) {
        	suppr_resultat($rid);
            $supp+=mysql_affected_rows();
            }
        }
    else {  //on change de couple (eleve,item)
        //vérifier celui qui vient de finir
        if ($firstrid!=0 && $firstdid!=-1) {
            //réajouster la discipline à -1. Ce doit être fait obligatoirement
            //en fin d'homonymes, après les suppressions, pour éviter une erreur
            //sur l'index unique. Par sécurité, on ajoute en plus IGNORE :-)
            //print "Mise à jour de $rid (disc_id à -1)<br>";
            query("UPDATE IGNORE resultats SET disc_id=-1 WHERE resultat_id=".seci($firstrid));
            $update+=mysql_affected_rows();
            }
        $firstrid=$rid;$firsteid=$eid;$firstiid=$iid;$firstdid=$did;
        //on vérifie le seul qu'on va garder (le premier trouvé donc en principe le bon)
        }
    }


//Il reste des enregistrement uniques mais éventuellement avec disc_id=-1
//rappel : on n'est pas dans Melia (voir plus haut !)
query("UPDATE resultats SET disc_id=-1");
$update+=mysql_affected_rows();

$msg1="Enregistrements supprimés : $supp";
$msg2="Enregistrements modifiés (discipline=-1) : $update";

if ($ecrire_dans_page) print "$msg1<br>$msg2<br>";
else alert("$msg1\n$msg2");
return true;
}
?>