$val) {
$$cle = $val;
}
$login=isauth();
$now =date("Y-m-d");
$table="devoirs";
// requete pour avoir le detail de ce devoir $id
$req = "SELECT * FROM $table WHERE id = '$id'";
$resultat = mysql_query($req);
$ligne= mysql_fetch_array($resultat);
list($id,$id_prof,$id_devoir,$nom_devoir,$date_distrib,$date_retour,$description,$liste_distrib, $liste_retard) = $ligne;
// liste complete des eleves beneficiaires du devoir
$liste_distrib=preg_replace("/\|$/","",$liste_distrib);
$tab_distrib = liste_tab($liste_distrib); // tableau associatif : nom_classe --> uid1#uid2#..
$tab_eleves_retard = array();
$tab_eleves_remis = array();
$tab_retard = array(); // tableau associatif : nom_classe --> uid1#uid2#..
$nb_eleves_remis=0;
$nb_eleves_retard=0;
echo "
".gettext("Récupération du devoir")." $id_devoir (".gettext("par")." $login, ".gettext("le ").affiche_date($now).")
";
/* Si le rep de reception n'existe pas dans le home prof, le creer au nom $id_devoir
***********************************************************************************/
$rep_devoir= "$id_devoir";
$ch ="/usr/bin/sudo /usr/share/se3/scripts/creer_rep_dev.sh $login $rep_devoir" ;
$cr= exec($ch) ;
if ($cr)
echo "Création du dossier K:/Devoirs/$rep_devoir";
/* 1er cas : $liste_retard est vide :
* premiere tentative de recup, boucle sur TOUS les $nb_eleves
*************************************************************/
if ($liste_retard == "") {
// boucle sur toutes les classes/groupes
foreach ($tab_distrib as $classe => $liste_distrib_classe) {
$liste_distrib_classe=preg_replace("/#$/","",$liste_distrib_classe);
$tab_eleves_classe=preg_split("/#/",$liste_distrib_classe);
$nb_eleves_classe=count($tab_eleves_classe);
$liste_classe_retard =""; // liste eleves en retard par classe
// boucle sur tous les eleves de la classe/groupe
for ($p=0; $p < $nb_eleves_classe; $p++) {
$uid_eleve = $tab_eleves_classe[$p];
$cla=classe_eleve($uid_eleve); // $cla est la VRAIE classe de l'eleve (# $classe si $classe designe un groupe !)
// $param= params_eleve($uid_eleve);
$ch ="/usr/bin/sudo /usr/share/se3/scripts/copie_dev.sh $login $id_devoir $nom_devoir ".inverse_login($uid_eleve)." $cla ";
$cr=exec($ch); // echo "$ch --> $cr
";
if ($cr) {
$tab_eleves_remis[$classe][]="$uid_eleve";
$nb_eleves_remis++;
} else {
$liste_classe_retard .= "$uid_eleve#";
$tab_eleves_retard[$classe][] = "$uid_eleve";
$nb_eleves_retard++;
}
} // fin boucle eleves / classe
//echo "liste retard = $liste_classe_retard
";
$tab_retard[$classe]=$liste_classe_retard;
}
}
/* fin 1ere fois, debut des recup d'eleves en retard
****************************************************/
else {
// traiter la liste des eleves en retard
$liste_retard = preg_replace("/\|$/","",$liste_retard);
$tab_retard = liste_tab($liste_retard); // tableau associatif : nom_classe --> uid1#uid2#..
foreach ($tab_retard as $classe => $liste_classe) {
$liste_classe=preg_replace("/#$/","",$liste_classe);
$tab_eleves_classe=preg_split("/#/",$liste_classe);
$nb_eleves_classe=count($tab_eleves_classe);
$liste_classe_retard =""; // liste eleves en retard par classe
if ($nb_eleves_classe == 0) continue; // continue ! il n'y a rien a recuperer dans ce groupe !
// boucle sur la liste des eleves en retard de cette classe/groupe
for ($p=0; $p < $nb_eleves_classe; $p++) {
$uid_eleve = $tab_eleves_classe[$p];
$cla=classe_eleve($uid_eleve); // $cla est la VRAIE classe de l'eleve (# $classe si $classe designe un groupe !)
// $param= params_eleve($uid_eleve);
$ch ="/usr/bin/sudo /usr/share/se3/scripts/copie_dev.sh $login $id_devoir $nom_devoir ".inverse_login($uid_eleve)." $cla ";
$cr=exec($ch); // echo "$ch --> $cr
";
if ($cr) {
$tab_eleves_remis[$classe][]="$uid_eleve";
$nb_eleves_remis++;
} else {
$liste_classe_retard .= "$uid_eleve#";
$tab_eleves_retard[$classe][] = "$uid_eleve";
$nb_eleves_retard++;
}
} // fin boucle eleves / classe
$tab_retard[$classe]=$liste_classe_retard;
// echo "$classe --> $liste_classe_retard
";
}
}
/* Compte-rendu global
*********************/
if ($nb_eleves_remis==0)
echo "".gettext("Aucun élève nouveau n'a remis le devoir")." $id_devoir
";
else {
echo "".gettext("Le devoir")." $id_devoir ".gettext("vient d'être remis par").($nb_eleves_remis==1?gettext("l'élève :"):gettext("les")." $nb_eleves_remis ".gettext(" élèves :"))."
";
foreach ($tab_eleves_remis as $classe => $tab_eleves) {
if (preg_match("/^Classe_/", $classe))
echo gettext("Classe")." ".$classe."
";
else
echo gettext("Groupe")." ".$classe."
";
for ($p=0; $p < count($tab_eleves); $p++) {
$param= params_eleve($tab_eleves[$p]);
echo ($param["sexe"]=="F"?"":
"");
echo $param["nom"]."
";
}
}
}
if ($nb_eleves_retard==0) {
$etat="F";
echo "".gettext("Tous les élèves ont maintenant remis leur devoir")."
".gettext("
Il est possible :
- d'envoyer un corrigé (\"Envoi de corrigés\")
- de l'archiver ou de revenir à une phase de récupération (\"Gestion des devoirs\")
");
}
else {
$etat="R";
if ($now <= $date_retour) {
echo "".gettext("Il doit être remis, au plus tard le ").affiche_date($date_retour).",".gettext(" par")."
";
} else {
echo "".($nb_eleves_retard==1?gettext("Elève")." ".gettext("en retard")." :":gettext("Liste des")." $nb_eleves_retard ".gettext("élèves")." ".gettext("en retard")." :")."
";
}
foreach ($tab_eleves_retard as $classe => $tab_eleves) {
if (preg_match("/^Classe_/", $classe))
echo gettext("Classe")."".$classe."
";
else
echo gettext("Groupe")." ".$classe."
";
for ($p=0; $p < count($tab_eleves); $p++) {
$param= params_eleve($tab_eleves[$p]);
echo ($param["sexe"]=="F"?"":
"");
echo $param["nom"]."
";
}
}
}
// conclusion
$liste_retard=tab_liste($tab_retard); // transformation du tableau (classe, eleves en retard) en liste a enregistrer
// Dans tous les cas, mettre a jour le champ liste_retard et les indicateurs de recup
$req_maj = "UPDATE $table SET liste_retard='$liste_retard', etat='$etat' WHERE id='$id' ";
@mysql_query($req_maj);
include("pdp.inc.php");
?>