<?
// *****************************************************************************************************
// *********************************** Traitement des modifications ************************************
// *****************************************************************************************************
switch($choice)
{
case 1 : // Suppression de cours
{
if(isset($id_promotion[0]) && isset($s_semaine) && isset($id_periode))
{
$taille_chaine=strlen($tableau1);
for($i=1;$i<=$taille_chaine;$i++)
{
$val_i=substr($tableau1,$i-1,1);
if ($val_i==1)
{
$request_sup="DELETE FROM planifie WHERE id_planifie=".$ValId[$i];
mysql_query($request_sup);
}
}
}
break;
}
case 2 : // Suppression d'une matiere
{
if(isset($id_promotion[0]))
{
$taille_chaine=strlen($tableau1);
for($i=1;$i<=$taille_chaine;$i++)
{
$val_i=substr($tableau1,$i-1,1);
// suppression de tous les cours de la matiere
if ($val_i==1)
{
$request_sup="DELETE FROM planifie WHERE id_matiere=$ValId[$i]";
mysql_query($request_sup);
if($id_groupe==-1)
mysql_query("DELETE FROM suiviparpromotion WHERE id_matiere=$ValId[$i]");
else
mysql_query("DELETE FROM suivipargroupe WHERE id_matiere=$ValId[$i]");
}
}
}
break;
}
case 3 : // Changements divers pour une promotion
{
if(isset($tableau1) && $NombreElement>0)
{
// Variables
$nb_enreg=$NombreElement/8;
$mes="----- Les modifications suivantes n'ont pas pu etre validees -----";
for($i=1;$i<=$nb_enreg;$i++)
{
$enreg_en_cours=substr($tableau1,$i*8-8,8);
$val_i=substr($enreg_en_cours,0,1);
$secu1=1;
$secu2=0;
$secu3=0;
$secu4=0;
$secu5=1;
$chg_matiere=substr($enreg_en_cours,0,1);
$chg_type=substr($enreg_en_cours,1,1);
$chg_professeur=substr($enreg_en_cours,2,1);
$chg_salle=substr($enreg_en_cours,3,1);
$chg_heure_debut=substr($enreg_en_cours,4,1);
$chg_heure_fin=substr($enreg_en_cours,5,1);
$chg_jour=substr($enreg_en_cours,6,1);
$chg_semaine=substr($enreg_en_cours,7,1);
if($chg_semaine || $chg_jour==1 || $chg_matiere==1 || $chg_type==1 || $chg_professeur==1 || $chg_salle==1 || $chg_heure_debut==1 || $chg_heure_fin==1)
{
if($chg_matiere==1 || $chg_type==1 || $chg_professeur==1)
if (($secu1=validite_matiere_type_prof($matiere[$i],$type_de_seance[$i],$professeur[$i]))==0)
$mes=$mes.'\n'."cours numero ".$i." : "." le professeur n'enseigne pas cette matiere (ou ce type)";
if($chg_heure_debut==1 || $chg_heure_fin==1 || $chg_jour==1 || $chg_semaine==1 || $chg_salle==1)
if (($secu2=salle_libre($salle[$i],$heure_debut[$i],$heure_fin[$i],$ValId[$i],$jour[$i],$semaine[$i]))!=0)
$mes=$mes.'\n'."cours numero ".$i." : "." la salle n'est pas libre";
if ($chg_heure_debut==1 || $chg_heure_fin==1 || $chg_jour==1)
if (($secu3=creneau_libre($semaine[$i],$jour[$i],$ValId[$i],$heure_debut[$i],$heure_fin[$i],$id_promotion[0],$id_groupe))!=0)
$mes=$mes.'\n'."cours numero ".$i." : "." un cours est deja prevu dans ce creneau horaire";
if($chg_heure_debut==1 || $chg_heure_fin==1 || $chg_jour==1 || $chg_semaine==1)
if (($secu4=professeur_libre($heure_debut[$i],$heure_fin[$i],$professeur[$i],$ValId[$i],$jour[$i],$semaine[$i]))!=0)
$mes=$mes.'\n'."cours numero ".$i." : "." le professeur n'est pas libre";
if($chg_heure_debut==1 || $chg_heure_fin==1 || $chg_semaine==1)
{
$intervalle=convertHeure($heure_fin[$i])-convertHeure($heure_debut[$i]);
if(($secu5=verifie_Planification($matiere[$i],$type_de_seance[$i],$semaine[$i],$ValId[$i],$intervalle))==0)
$mes=$mes.'\n'."cours numero ".$i." : "." le quota d'heures n'est pas respecté";
}
if($secu1!=0 && $secu2==0 && $secu3==0 && $secu4==0 && $secu5!=0)
{
$requete_mise_a_jour="update planifie set ";
$condition1="";
$condition2="";
$condition3="";
$condition4="";
$condition5="";
$condition6="";
$condition7="";
if ($chg_semaine==1)
{
$condition0=" semaine=\"$semaine[$i]\"";
mysql_query($requete_mise_a_jour.$condition0." WHERE id_planifie=".$ValId[$i]);
}
if ($chg_matiere==1)
{
$condition1=" id_matiere=$matiere[$i]";
mysql_query($requete_mise_a_jour.$condition1." WHERE id_planifie=".$ValId[$i]);
}
if ($chg_type==1)
{
$condition2=" id_type_seance=$type_de_seance[$i]";
mysql_query($requete_mise_a_jour.$condition2." WHERE id_planifie=".$ValId[$i]);
}
if ($chg_professeur==1)
{
$condition3=" id_professeur=".$professeur[$i];
mysql_query($requete_mise_a_jour.$condition3." WHERE id_planifie=".$ValId[$i]);
}
if ($chg_salle==1)
{
$condition4="id_salle=$salle[$i]";
mysql_query($requete_mise_a_jour.$condition4." WHERE id_planifie=".$ValId[$i]);
}
if ($chg_heure_debut==1)
{
$condition5="heure_debut=\"$heure_debut[$i]\"";
mysql_query($requete_mise_a_jour.$condition5." WHERE id_planifie=".$ValId[$i]);
}
if ($chg_heure_fin==1)
{
$condition6="heure_fin=\"$heure_fin[$i]\"";
mysql_query($requete_mise_a_jour.$condition6." WHERE id_planifie=".$ValId[$i]);
}
if ($chg_jour==1)
{
$condition7=" jour_semaine=$jour[$i]";
mysql_query($requete_mise_a_jour.$condition7." WHERE id_planifie=".$ValId[$i]);
}
}
}
}
if($mes!="----- Les modifications suivantes n'ont pas pu etre validees -----")
{
print("<script language=\"JavaScript\">\n");
print("window.alert(\"$mes\");\n");
print("</script>\n");
}
}
break;
}
case 4 : // Changement avec propagation
{
$mes="----- Les modifications n'ont pas pu etre validees -----";
$taille=strlen($tableau1);
$chg_matiere=substr($tableau1,0,1);
$chg_type=substr($tableau1,1,1);
$chg_professeur=substr($tableau1,2,1);
$chg_salle=substr($tableau1,3,1);
$chg_heure_debut=substr($tableau1,4,1);
$chg_heure_fin=substr($tableau1,5,1);
$chg_jour=substr($tableau1,6,1);
$condition1="";
$condition2="";
$condition3="";
$condition4="";
$condition5="";
$condition6="";
$condition7="";
if($chg_jour==1 || $chg_matiere==1 || $chg_type==1 || $chg_professeur==1 || $chg_salle==1 || $chg_heure_debut==1 || $chg_heure_fin==1)
{
$premier=1;
$mk_salle=1;
$mk_creneau=1;
$mk_prof=1;
$mk_Planification=1;
if (validite_matiere_type_prof($matiere,$type_de_seance,$professeur)!=0)
{
$where=" WHERE ";
if (salle_libre($salle,$heure_debut,$heure_fin,$id_en_cours,$jour,$semaine_actu)!=0)
{
$premier=0;
$mk_salle=0;
$mes=$mes.'\n'."semaine ".$semaine_actu." : "." la salle n'est pas libre";
}
if (creneau_libre($semaine_actu,$jour,$id_en_cours,$heure_debut,$heure_fin,$promo_actu,$id_groupe)!=0)
{
$mes=$mes.'\n'."semaine ".$semaine_actu." : "." un cours est deja prevu dans ce creneau horaire";
$mk_creneau=0;
$premier=0;
}
if (professeur_libre($heure_debut,$heure_fin,$professeur,$id_en_cours,$jour,$semaine_actu)!=0)
{
$mes=$mes.'\n'."semaine ".$semaine_actu." : "." le professeur n'est pas libre";
$mk_prof=0;
$premier=0;
}
$intervalle=convertHeure($heure_fin)-convertHeure($heure_debut);
if(verifie_Planification($matiere,$type_de_seance,$semaine_actu,$id_en_cours,$intervalle)==0)
{
$mes=$mes.'\n'."semaine ".$semaine_actu." : "." le quota d'heures n'est pas respecté";
$premier=0;
$mk_Planification=0;
}
if($premier==1 && $mk_salle==1 && $mk_creneau==1 && $mk_prof==1 && $mk_Planification==1)
{
$where=$where." id_planifie=".$id_en_cours;
}
$p=$taille-7;
for($i=1;$i<=$p;$i++)
{
$mk_salle=1;
$mk_creneau=1;
$mk_prof=1;
$mk_Planification=1;
$var=substr($tableau1,$i+6,1);
if($var==1)
{
if (salle_libre($salle,$heure_debut,$heure_fin,$val_id[$i],$jour,$val_sem[$i])!=0)
{
$mk_salle=0;
$mes=$mes.'\n'."semaine ".$val_sem[$i]." : "." la salle n'est pas libre";
}
if (creneau_libre($val_sem[$i],$jour,$val_id[$i],$heure_debut,$heure_fin,$promo_actu,$id_groupe)!=0)
{
$mes=$mes.'\n'."semaine ".$val_sem[$i]." : "." un cours est deja prevu dans ce creneau horaire";
$mk_creneau=0;
}
if (professeur_libre($heure_debut,$heure_fin,$professeur,$val_id[$i],$jour,$val_sem[$i])!=0)
{
$mes=$mes.'\n'."semaine ".$val_sem[$i]." : "." le professeur n'est pas libre";
$mk_prof=0;
}
$intervalle=convertHeure($heure_fin)-convertHeure($heure_debut);
if(verifie_Planification($matiere,$type_de_seance,$val_sem[$i],$val_id[$i],$intervalle)==0)
{
$mes=$mes.'\n'."semaine ".$val_sem[$i]." : "." le quota d'heures n'est pas respecté";
$mk_Planification=0;
}
if($mk_salle==1 && $mk_creneau==1 && $mk_prof==1 && $mk_Planification==1)
{
if ($premier==1)
$where=$where." OR id_planifie=".$val_id[$i];
else
$where=$where." id_planifie=".$val_id[$i];
}
}
}
if ($where!=" WHERE " && $mes=="----- Les modifications n'ont pas pu etre validees -----")
{
$requete_modifier="UPDATE planifie SET";
if ($chg_matiere==1)
{
$condition1=" id_matiere=$matiere";
mysql_query($requete_modifier.$condition1.$where);
}
if ($chg_type==1)
{
$condition2=" id_type_seance=$type_de_seance";
mysql_query($requete_modifier.$condition2.$where);
}
if ($chg_professeur==1)
{
$condition3=" id_professeur=$professeur";
mysql_query($requete_modifier.$condition3.$where);
}
if ($chg_salle==1)
{
$condition4=" id_salle=$salle";
mysql_query($requete_modifier.$condition4.$where);
}
if ($chg_heure_debut==1)
{
$condition5=" heure_debut=\"$heure_debut\"";
mysql_query($requete_modifier.$condition5.$where);
}
if ($chg_heure_fin==1)
{
$condition6=" heure_fin=\"$heure_fin\"";
mysql_query($requete_modifier.$condition6.$where);
}
if ($chg_jour==1)
{
$condition7=" jour_semaine=$jour";
mysql_query($requete_modifier.$condition7.$where);
}
}
else
{
print("<script language=\"JavaScript\">\n");
print("window.alert(\"$mes\");\n");
print("</script>\n");
}
}
else
{
$mes=$mes.'\n'."le professeur n'enseigne pas cette matiere (ou ce type)";
print("<script language=\"JavaScript\">\n");
print("window.alert(\"$mes\");\n");
print("</script>\n");
}
}
print("<script language=\"JavaScript\">\n");
print("window.location.href='modifie.php3?id_session=$id_session&user_type=$user_type&user_id=$user_id&etat=reprogramme&id_periode=$id_periode&id_promotion[0]=$promo_actu&s_semaine=$semaine_actu&id_groupe=$id_groupe';\n");
print("</script>\n");
break;
}
case 5 : // Permutation de salles
{
$taille=strlen($tableau1);
$mark=0;
for($i=1;$i<=$nb_val_1;$i++)
{
if(substr($tableau1,$i-1,1)==1)
{
$request="SELECT p.id_planifie
FROM planifie p
WHERE id_salle=$id_salle[2]
AND ((p.heure_debut>=\"$heure_deb[$i]\" AND p.heure_debut<\"$heure_fin[$i]\")
OR
(p.heure_fin>\"$heure_deb[$i]\" AND p.heure_fin<=\"$heure_fin[$i]\"))
AND jour_semaine=$s_jour
AND semaine=$s_semaine";
for($j=$nb_val_1;$j<$taille;$j++)
{
$val2=substr($tableau1,$j,1);
if($val2==1)
$where=$where." AND id_planifie!=".$ValId[$j+1];
}
$request=$request.$where;
$result=mysql_query($request);
$n1=mysql_num_rows($result);
if($n1>0)
$mark++;
}
}
for($i=$nb_val_1;$i<$taille;$i++)
{
$k=$i+1;
if(substr($tableau1,$i,1)==1)
{
$request="SELECT p.id_planifie
FROM planifie p
WHERE p.id_salle=$id_salle[1]
AND ((p.heure_debut>=\"$heure_deb[$k]\" AND p.heure_debut<\"$heure_fin[$k]\")
OR
(p.heure_fin>\"$heure_deb[$k]\" AND p.heure_fin<=\"$heure_fin[$k]\"))
AND jour_semaine=$s_jour
AND semaine=$s_semaine";
for($j=0;$j<$nb_val_1;$j++)
{
$val2=substr($tableau1,$j,1);
if($val2==1)
$where=$where." AND id_planifie!=".$ValId[$j+1];
}
$request=$request.$where;
$result=mysql_query($request);
$n2=mysql_num_rows($result);
if($n2>0)
$mark++;
}
}
if($mark==0)
{
for($i=1;$i<=$taille;$i++)
{
if(substr($tableau1,$i-1,1)==1)
{
if($i<=$nb_val_1)
mysql_query("UPDATE planifie SET id_salle=$id_salle[2] WHERE id_planifie=$ValId[$i]");
else
mysql_query("UPDATE planifie SET id_salle=$id_salle[1] WHERE id_planifie=$ValId[$i]");
}
}
}
else
{
$mes="Les changements n'ont pas pu etre validés";
print("<script language=\"JavaScript\">\n");
print("window.alert(\"$mes\");\n");
print("</script>\n");
}
break;
}
case 6 : // Permutation de promotion (et groupe) pour un cours
{
$taille=strlen($tableau1); // taille de la chaine tableau1
for($i=1;$i<=$taille;$i++)
{
$val=substr($tableau1,$i-1,1);
if($val==1) // Le cours est coché
{
if (creneau_libre($s_semaine,$jour[$i],$ValId[$i],$heure_deb[$i],$heure_fin[$i],$id_promotion_sub,$id_groupe_sub)==0) // on teste si la promotion de remplacement est libre
{
if(isset($id_groupe_sub) && $id_groupe_sub!=-1)
{
$request="SELECT m.id_matiere
FROM matiere m, suivipargroupe spg, assurer a
WHERE spg.id_matiere=m.id_matiere
AND spg.id_groupe=$id_groupe_sub
AND m.nom=\"$NomMat[$i]\"
AND a.id_matiere=m.id_matiere
AND a.id_professeur=$prof[$i]
AND a.id_type_seance=$type[$i]";
$result=mysql_query($request);
}
else
{
$request="SELECT m.id_matiere
FROM matiere m, suiviparpromotion spp, assurer a
WHERE spp.id_matiere=m.id_matiere
AND spp.id_promotion=$id_promotion_sub
AND m.nom=\"$NomMat[$i]\"
AND a.id_matiere=m.id_matiere
AND a.id_professeur=$prof[$i]
AND a.id_type_seance=$type[$i]";
$result=mysql_query($request);
}
$une_mat=mysql_fetch_row($result);
$n=mysql_num_rows($result);
if($n>0) // si la matiere est suivi par la promotion (identifiant trouvé)
{
$intervalle=convertHeure($heure_fin[$i])-convertHeure($heure_deb[$i]);
if(verifie_Planification($une_mat[0],$type[$i],$s_semaine,$ValId[$i],$intervalle)==1) // quota d'heures respecté
{
if(isset($id_groupe) && $id_groupe!=-1)
{
if(isset($id_groupe_sub) && $id_groupe_sub!=-1)
{
$request="UPDATE planifiegroupe SET id_groupe=$id_groupe_sub WHERE id_planifie=".$ValId[$i];
$result=mysql_query($request);
mysql_query("UPDATE planifie SET id_matiere=$une_mat[0] WHERE id_planifie=$ValId[$i]");
}
else
{
$request1="INSERT INTO planifiepromotion VALUES ('$id_promotion_sub','$ValId[$i]')";
$request2="DELETE FROM planifiegroupe WHERE id_groupe=$id_groupe AND id_planifie=$ValId[$i]";
mysql_query($request1);
mysql_query($request2);
mysql_query("UPDATE planifie SET id_matiere=$une_mat[0] WHERE id_planifie=$ValId[$i]");
}
}
else
{
if(isset($id_groupe_sub) && $id_groupe_sub!=-1)
{
$request1="INSERT INTO planifiegroupe VALUES ('$id_groupe_sub','$ValId[$i]')";
$request2="DELETE FROM planifiepromotion WHERE id_promotion=$id_promotion AND id_planifie=$ValId[$i]";
mysql_query($request1);
mysql_query($request2);
mysql_query("UPDATE planifie SET id_matiere=$une_mat[0] WHERE id_planifie=$ValId[$i]");
}
else
{
$request="UPDATE planifiepromotion SET id_promotion=$id_promotion_sub WHERE id_planifie=".$ValId[$i];
mysql_query($request);
mysql_query("UPDATE planifie SET id_matiere=$une_mat[0] WHERE id_planifie=$ValId[$i]");
}
}
}
else
{
print("<script language=\"JavaScript\">\n");
print("window.alert(\"Le quota d'heures n'est pas respecté\");\n");
print("</script>\n");
}
}
else
{
print("<script language=\"JavaScript\">\n");
print("window.alert(\"Cette promotion (et groupe) ne suit pas ce cours\");\n");
print("</script>\n");
}
}
else
{
print("<script language=\"JavaScript\">\n");
print("window.alert(\"Un autre cours est déjà prévu\");\n");
print("</script>\n");
}
}
}
break;
}
case 7 : // Permutation de cours entre promotions
{
// Variables
$i=1;
$mark=0;
$nb_salle=0;
$nb_prof=0;
$nb_creneau=0;
$where2="";
$mes="----- Les modifications ne peuvent pas etre validées -----";
$taille=strlen($tableau1);
/* $nb_un=0;
for($i=0;$i<$taille;$i++)
if(substr($tableau1,$i,1)==1)
$nb_un++;*/
$i=1;
while(isset($ValId[$i]))
{
$where2=$where2." AND p.id_planifie!=$ValId[$i]";
$i++;
}
$i=1;
while(isset($ValId[$i]))
{
$tab_jour=array("Dimanche"=>0,"Lundi"=>1,"Mardi"=>2,"Mercredi"=>3,"Jeudi"=>4,"Vendredi"=>5,"Samedi"=>6);
// Verifie que les salles sont libres
$request="SELECT p.id_planifie
FROM planifie p
WHERE p.id_salle=$salle[$i]
AND ((p.heure_debut>=\"$heure_debut[$i]\" AND p.heure_debut<\"$heure_fin[$i]\")
OR
(p.heure_fin<=\"$heure_fin[$i]\" AND p.heure_fin>\"$heure_debut[$i]\"))
AND p.jour_semaine=$jour[$i]
AND p.semaine=$semaine[$i] ";
$request=$request.$where2;
$result2=mysql_query($request);
$nb_salle=$nb_salle+mysql_num_rows($result2);
// Vérifie que les professeurs sont libres
$requete_prof="SELECT p.id_planifie
FROM planifie p
WHERE p.id_professeur=$prof[$i]
AND p.jour_semaine=$jour[$i]
AND p.semaine=$semaine[$i]
AND p.id_planifie!=$ValId[$i]
AND ((p.heure_debut>=\"$heure_debut[$i]\" AND p.heure_debut<\"$heure_fin[$i]\")
OR
(p.heure_fin<=\"$heure_fin[$i]\" AND p.heure_fin>\"$heure_debut[$i]\"))";
$requete_prof=$requete_prof.$where2;
$result_prof2=mysql_query($requete_prof);
$nb_prof=$nb_prof+mysql_num_rows($result_prof2);
// Vérifie que le créneau est libre
$requete_creneau="SELECT p.id_planifie
FROM planifie as p, planifiepromotion as pp, promotion as pr, planifiegroupe as pg, groupe as g, associer as a
WHERE p.semaine=$semaine[$i]
AND p.jour_semaine=$jour[$i]
AND p.id_planifie!=$ValId[$i]
AND ((heure_debut>=\"$heure_debut[$i]\" AND heure_debut<\"$heure_fin[$i]\")
OR
(heure_fin<=\"$heure_fin[$i]\" AND heure_fin>\"$heure_debut[$i]\"))
AND ((pp.id_planifie=p.id_planifie AND pp.id_promotion=$id_promotion[$i])
OR
(pg.id_planifie=p.id_planifie AND pg.id_groupe=g.id_groupe AND a.id_promotion=$id_promotion[$i]";
if($id_groupe[$i]==-1)
$requete_creneau=$requete_creneau." AND a.id_groupe=g.id_groupe))";
else
$requete_creneau=$requete_creneau." AND a.id_groupe=$id_groupe[$i]))";
$requete_creneau=$requete_creneau.$where2;
$result_requete_creneau=mysql_query($requete_creneau);
$nb_creneau=$nb_creneau+mysql_num_rows($result_requete_creneau);
$i++;
}
if($nb_salle>0)
$mes=$mes.'\n'."Vérifiez l'attribution des salles";
if($nb_prof>0)
$mes=$mes.'\n'."Un des professeurs n'est pas libre";
if($nb_creneau>0)
$mes=$mes.'\n'."Un des créneaux n'est pas libre";
if($nb_salle==0 && $nb_prof==0 && $nb_creneau==0)
{
$i=1;
while(isset($ValId[$i]))
{
$request="UPDATE planifie
SET id_salle=$salle[$i], jour_semaine=$jour[$i], semaine=$semaine[$i], heure_debut=\"$heure_debut[$i]\", heure_fin=\"$heure_fin[$i]\"
WHERE id_planifie=$ValId[$i]";
$result=mysql_query($request);
$i++;
}
}
else
{
print("<script language=\"JavaScript\">\n");
print("window.alert(\"$mes\");\n");
print("</script>\n");
}
break;
}
}
?>