security_check();
if ($resultat_session == 'c') {
header("Location: ../utilisateurs/mon_compte.php?change_mdp=yes");
die();
} else if ($resultat_session == '0') {
header("Location: ../logout.php?auto=1");
die();
}
if (!checkAccess()) {
header("Location: ../logout.php?auto=1");
die();
}
//**************** EN-TETE *****************
$titre_page = "Outil d'initialisation de l'année : Importation des élèves";
require_once("../lib/header.inc.php");
//**************** FIN EN-TETE *****************
// Utilisation de la classe LDAP chargee et configuree
$ldap = new LDAPServerScribe();
echo "
Retour
";
//----***** STEP 2 *****-----//
/*
* L'étape 2 consiste à
* - Creer les periodes pour les classes recemment importees
* - Associer les eleves a leurs classes
*/
if ($_POST['step'] == "2") {
check_token(false);
// On se connecte au LDAP
$ldap->connect();
if (!isset($_SESSION['classesamodifier'])) {
echo "Erreur : aucune périodes à créer";
require("../lib/footer.inc.php");
}
else {
// Si on a bien les donnees dans la session, on peut continuer
/*
* Vidage des tables qui le necessitent
*/
/*
* Affichage du résumé de l'étape 2
*/
echo " Résumé de l'étape 2
";
/*
* Recuperation de toutes les classes pour lesquelles l'utilisateur a choisi de creer des periodes
* et Creation du nombre de periodes souhaite
*/
$classes_concernees = $_SESSION['classesamodifier'];
unset($_SESSION['classesamodifier']);
foreach($classes_concernees as $key => $val) {
$indice = "classe".$key;
// $key contient l'id de la classe, et $val son "nom" (ou numéro publique..)
// Si un nombre de periodes a ete selectionne pour cette classe, on cree les periodes
// Pour chaque periode, jusqu'au nombre souhaite (REVOIR pour choix non faits...)
for ($i=1; $i<=$_POST[$indice]; $i++) {
$req_insertion_periode = "INSERT INTO periodes VALUES ('P$i','$i','T', '$key',NULL,NULL,NULL)";
mysqli_query($GLOBALS["mysqli"], $req_insertion_periode);
// Si tout s'est bien deroule
if (((is_object($GLOBALS["mysqli"])) ? mysqli_errno($GLOBALS["mysqli"]) : (($___mysqli_res = mysqli_connect_errno()) ? $___mysqli_res : false)) != 0) {
die("Une erreur s'est produite lors de la creation des périodes");
}
}
if (isset($_POST[$indice])) {
echo "Creation de ".$_POST[$indice]." période(s) pour la classe $val
";
}
}
$sql="update periodes set date_verrouillage='0000-00-00 00:00:00';";
$res=mysqli_query($GLOBALS["mysqli"], $sql);
if($res) {
echo "Réinitialisation des dates de verrouillage de périodes effectuée.
";
}
else {
echo "Erreur lors de la réinitialisation des dates de verrouillage de périodes.
";
}
/*
* Association des eleves a leur classes (pour chaque classe qui possede des periodes)
* car on ne peut pas associer d'eleve a une classe sans periode
*/
//Il faut reprendre les liens dans j_eleves_classes pour savoir dans quelle classe est chaque eleve
// Et creer une ligne par periode de la classe
// Peut-etre faire choisir à l'admin d'ajouter les les eleves pour toutes les periodes, ou juste pour la premiere
// On cree un critere pour ramener tous les liens eleve_classe/periode qui sont temporaires
// (c'est a dire qui ont un leur periode a 0 = pas de periode associe)
echo "
";
$crit = new Criteria();
$crit->add(JEleveClassePeer::PERIODE, 0);
// Construction d'un tableau contenant les id des classes pour lesquelles l'utilisateur
// a defini un nombre de periodes (on ne va affecter les eleves QUE pour ces classes la)
//$classes_avec_periodes_definies =
//$crit->add(JEleveClassePeer::ID_CLASSE, );
$relations_eleves_classes = JEleveClassePeer::doSelect($crit);
// Pour chaque relation eleve_classe/periode
foreach($relations_eleves_classes as $relation_ec) {
// Recuperation des periodes correspondantes a la classe de l'eleve
echo "recuperation des periodes pour la classe ".$relation_ec->getIdClasse()."
";
$req_periodes_classe = "SELECT * FROM periodes WHERE id_classe = ".$relation_ec->getIdClasse();
$periodes_de_la_classe = mysqli_query($GLOBALS["mysqli"], $req_periodes_classe);
// Si on trouve des periodes,
echo mysqli_num_rows($periodes_de_la_classe)." periodes trouvees
";
if (mysqli_num_rows($periodes_de_la_classe) > 0) {
// On met d'abord a jour la relation temporaire eleve_classe deja presente
// (en lui affectant le numero de premiere periode (normalement 1...))
// Pour cela on recupere separement la premiere periode
$periodes_de_la_classe_row = mysqli_fetch_object($periodes_de_la_classe);
$relation_ec_a_modifier = JEleveClassePeer::retrieveByPK($relation_ec->getLogin(), $periodes_de_la_classe_row->id_classe, 0);
//echo "relation a modifier : ".$relation_ec_a_modifier->getLogin()
//." (Periode numero ".$relation_ec_a_modifier->getPeriode()
//." Classe : ".$relation_ec_a_modifier->getClasse()->getId()."(".$relation_ec_a_modifier->getClasse()->getClasse().") )
";
//echo "Mise de la periode a : ".$periodes_de_la_classe_row->num_periode."
";
//$relation_ec_a_modifier->setPeriode($periodes_de_la_classe_row->num_periode);
//$relation_ec_a_modifier->save();
$new_relation = new JEleveClasse();
$new_relation->setClasse($relation_ec->getClasse());
$new_relation->setLogin($relation_ec->getLogin());
$new_relation->setPeriode(1);
$new_relation->save();
// Suppression de la relation temporaire (voir pourquoi modif impossible !)
$relation_ec_a_modifier->delete();
//$relation_ec->setPeriode($periodes_de_la_classe_row->num_periode);
//$relation_ec->save();
//echo "mise a jour du lien temporaire effectuee pour ".$relation_ec->getLogin()
// ." (Periode numero ".$periodes_de_la_classe_row->num_periode
// ." Classe : ".$periodes_de_la_classe_row->id_classe.")
";
// Ensuite, pour chaque periode restante, on ajoute une relation eleve / periode de la classe
while ($periodes_de_la_classe_row = mysqli_fetch_object($periodes_de_la_classe)) {
$nouvelle_relation_ep = new JEleveClasse();
$eleve_concerne = ElevePeer::retrieveByLOGIN($relation_ec->getLogin());
$nouvelle_relation_ep->setEleve($eleve_concerne); // On passe l'objet eleve
$classe_concerne = ClassePeer::retrieveByPK($relation_ec->getIdClasse());
$nouvelle_relation_ep->setClasse($classe_concerne); // On passe l'objet classe
$nouvelle_relation_ep->setPeriode($periodes_de_la_classe_row->num_periode); // On passe le numero de periode
$nouvelle_relation_ep->save();
}
}
// Si on ne trouve pas de periodes pour cette association temporaire, on ne fait rien
}
// Eleves associees a leurs classes ? pas d'erreur ?
echo "
";
echo "";
}
}
else {
// Affichage de la page des explications de l'etape 2 (aucune donnee postee)
// La deuxieme étape consiste a creer les periodes pour les classes et a affecter les eleves aux classes
echo "
L'étape 2 vous permet de créer les périodes pour les classes.
";
echo "Une fois celles-ci créées, les élèves seront affectés à toutes les périodes de leur(s) classe(s)
";
$req_classes_sans_periodes = "select id, classe from classes WHERE id NOT IN(Select id_classe from periodes) ORDER BY classe ASC";
$res = mysqli_query($GLOBALS["mysqli"], $req_classes_sans_periodes);
if (((is_object($GLOBALS["mysqli"])) ? mysqli_errno($GLOBALS["mysqli"]) : (($___mysqli_res = mysqli_connect_errno()) ? $___mysqli_res : false)) != 0) {
echo "
Impossible de récupérer les classes dans la base GEPI.
";
require("../lib/footer.inc.php");
die();
}
else {
// Si des classes virtuelles sont trouvees (= classes sans periodes)
if (mysqli_num_rows($res) != 0) {
echo "Voici la liste des classes présentes dans GEPI pour lesquelles aucune période n'a été définie,
";
echo "
Choisissez pour chaque classe le nombre de périodes :
";
echo "";
echo "
";
require("../lib/footer.inc.php");
}
else {
// Si aucune classe virtuelle trouvee : rien a faire
echo "
Aucune classe sans période n'a été trouvée.
";
echo "Aucune action à effectuer.
";
require("../lib/footer.inc.php");
}
}
}
?>