$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"); ?>