<?php include "../authentification/authcheck.php"; if ($_SESSION['droits']<>1) { header("Location: ../index.php");}; require_once('../Connections/conn_cahier_de_texte.php'); require_once('../inc/functions_inc.php'); if(isset($_SESSION['cdt_envole'])) require_once('../inc/functions_envole.inc.php'); function supprime_cours_calendar() { extract(calendar_settings()); $conn_webcalendar = mysql_pconnect($db_host, $db_login, $db_password) or die(mysql_error()); mysql_select_db($db_database, $conn_webcalendar) or die(mysql_error()); echo "<ul>"; $query_verif1 = "SELECT count(*) FROM `webcal_entry` WHERE `cal_name` NOT LIKE 'C -%'"; $result_verif1 = mysql_query ($query_verif1,$conn_webcalendar) or die(mysql_error()); $row_verif1 = mysql_fetch_row($result_verif1); echo "<li>Nombre d'entrées non concernées par la suppression : ".$row_verif1[0]."</li>"; $query_verif3 = "SELECT count(*) FROM `webcal_entry` WHERE `cal_name` LIKE 'C -%'"; $result_verif3 = mysql_query ($query_verif3,$conn_webcalendar) or die(mysql_error()); $row_verif3 = mysql_fetch_row($result_verif3); echo "<li>Nombre d'entrées à supprimer : ".$row_verif3[0]."</li>"; $query_delete1 = "DELETE FROM `webcal_entry_user` WHERE `cal_id` IN (SELECT `cal_id` FROM `webcal_entry` WHERE `cal_name` LIKE 'C -%');"; $result_delete1 = mysql_query ($query_delete1,$conn_webcalendar) or die(mysql_error()); echo "<li>Suppression...</li>"; $query_delete2 = "DELETE FROM `webcal_entry` WHERE `cal_name` LIKE 'C -%';"; $result_delete2 = mysql_query ($query_delete2,$conn_webcalendar) or die(mysql_error()); $query_verif2 = "SELECT count(*) FROM `webcal_entry` WHERE `cal_name` NOT LIKE 'C -%'"; $result_verif2 = mysql_query ($query_verif2,$conn_webcalendar) or die(mysql_error()); $row_verif2 = mysql_fetch_row($result_verif2); echo "<li>Nombre d'entrées restantes après la suppression : ".$row_verif2[0]."</li>"; echo "</ul>"; } function user_search_ldap($login) { $ldap_server = "localhost"; $ldap_port = "389"; $ldap_login = ""; $ldap_pwd = ""; $ldap_base = "o=gouv,c=fr"; $ldap_attr = array('sn','codecivilite'); $output = array(); //echo "connexion..."; $ds = @ldap_connect ($ldap_server, $ldap_port); if($ds) { //echo "ok<br/>options..."; @ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); //echo "ok<br/>identification anonyme..."; $r = @ldap_bind ($ds); if($r) { //echo "ok<br/>recherche..."; $sr = @ldap_search($ds,$ldap_base,"(uid=" . $login . ")",$ldap_attr); if($sr) { //echo "ok<br/>r�cup�ration des donn�es..."; $info = @ldap_get_entries($ds,$sr); if($info['count']>0) { $output["lastname"] = $info[0]["sn"][0]; $output["civilite"] = $info[0]["codecivilite"][0]; //echo "ok<br/>"; } @ldap_free_result($sr); } } @ldap_close($ds); } return $output; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-15" /> <title>Nettoyage de WebCalendar</title> <style> body {background:#ffdd99; color:#3333CC; font-size:16px; font-family:verdana, sans-serif;} </style> </head> <body> <?php if(!isset($_POST["go"])) { echo ' <h2>Procédure de nettoyage des emplois du temps présents dans WebCalendar avant réinsertion d’après le contenu du CDT</h2> <p>Dans WebCalendar, tous les cours commençant par "C -" seront effacés avant d’être réinserés.</p> <p>Êtes-vous certain de vouloir lancer cette procédure ?</p> <p> <form method="post"> <input type="submit" name="go" value="Lancer la procédure..."/> </form> </p>'; } elseif(isset($_SESSION['cdt_envole'])) { $ar_civil = array(0=>"M./Mme",1=>"M.",2=>"Mme",3=>"Mme","."=>"M.","M"=>"Mme","L"=>"Mme"); $old_id = 0; $n = 0; $total_ok = 0; $total_ko = 0; echo "<h2>Suppression des emplois du temps actuellement dans le calendar avant réinsertion</h2>"; supprime_cours_calendar(); //recherche des informations concernant les emplois du temps mysql_select_db($database_conn_cahier_de_texte, $conn_cahier_de_texte) or die(mysql_error()); $query_num = "SELECT count(*) FROM cdt_emploi_du_temps GROUP BY prof_ID;"; $result_num = mysql_query($query_num, $conn_cahier_de_texte) or die(mysql_error()); $nombre_profs = mysql_num_rows($result_num); $query_cours = "SELECT * FROM cdt_emploi_du_temps, cdt_classe, cdt_matiere, cdt_prof WHERE cdt_emploi_du_temps.matiere_ID=cdt_matiere.ID_matiere AND cdt_emploi_du_temps.classe_ID=cdt_classe.ID_classe AND cdt_emploi_du_temps.prof_ID=cdt_prof.ID_prof ORDER BY cdt_emploi_du_temps.prof_ID;"; $result_cours = mysql_query($query_cours, $conn_cahier_de_texte) or die(mysql_error()); while($row_cours = mysql_fetch_assoc($result_cours)) { $prof_id = $row_cours["ID_prof"]; if($prof_id!=$old_id) //nouveau prof � traiter { set_time_limit(120); flush(); $user_infos = user_search_ldap($row_cours["nom_prof"]); $ldap_civilite = $user_infos["civilite"]; $ldap_nom = $user_infos["lastname"]; //correspond � la variable $_SESSION['nom_prof_webcal'] pour imposer la forme civilit�+nom � la vue des �l�ves $nom_webcal = $ar_civil[$ldap_civilite]." ".strtoupper($ldap_nom); echo ($old_id!=0 ? "</ul>" : "")."<h2>Enseignant n�".++$n."/".$nombre_profs." - ".$row_cours["nom_prof"]." (".$nom_webcal.") :</h2><ul>"; $old_id = $prof_id; } $nom_classe = mysql_real_escape_string(trim($row_cours['nom_classe'])); $nom_matiere = mysql_real_escape_string(trim($row_cours['nom_matiere'])); echo "<li>Cours de ".$nom_matiere." en ".$nom_classe." le ".$row_cours['jour_semaine']." (semaines ".$row_cours['semaine'].") � ".$row_cours['heure_debut']." pendant ".$row_cours['duree']." : "; //v�rification du format de l'heure if (preg_match("/^[0-9]{1,2}h[0-9]{0,2}$/",trim($row_cours['heure_debut'])) && preg_match("/^[0-9]{1,2}h[0-9]{0,2}$/",trim($row_cours['duree']))) { //type de groupe � rep�rer en pr�fixe dans la description $prefix = webcal_prefix(trim($row_cours['groupe'])); //construction du tableau des dates du cours � modifier $array_dates = jours_cours(trim($row_cours['jour_semaine']),trim($row_cours['semaine'])); //formatage des param�tres $heure = GetSQLValueString(webcal_heure(trim($row_cours['heure_debut'])),"int"); $duree = GetSQLValueString(webcal_duree(trim($row_cours['duree'])),"int"); $h = substr($heure,0,-4); $m = substr($heure,-4,2); $heure_fin = date('H',mktime($h,$m,0,0,0,0)+$duree*60)."h".date('i',mktime($h,$m,0,0,0,0)+$duree*60); $modifdate = GetSQLValueString(date("Ymd"),"int"); $modifheure = GetSQLValueString(date('His'),"int"); $user_p = GetSQLValueString(trim($row_cours["nom_prof"]),"text"); $titre_p = GetSQLValueString("C - ".$nom_classe,"text"); $texte_p = GetSQLValueString($prefix.$nom_matiere,"text"); $user_c = GetSQLValueString(strtolower("Meta_classe_".$nom_classe),"text"); $titre_c = GetSQLValueString("C - ".$nom_matiere,"text"); $texte_c = GetSQLValueString($prefix.$nom_webcal,"text"); //construction du tableau des vacances $array_vacances = jours_vacances(); $n_p = 0; $n_c = 0; $m_p = 0; $m_c = 0; foreach ($array_dates as $date) { $date = GetSQLValueString($date,"int"); if(!in_array($date,$array_vacances)) { //insertion pour l'enseignant $rapport = ajout_calendar($user_p,$titre_p,$texte_p,$date,$heure,$duree,$modifdate,$modifheure,"cours"); if($rapport['entry']==1) { $n_p++; $total_ok++; } else { $m_p++; $total_ko++; } //insertion pour la classe $rapport = ajout_calendar($user_c,$titre_c,$texte_c,$date,$heure,$duree,$modifdate,$modifheure,"cours"); if($rapport['entry']==1) { $n_c++; $total_ok++; } else { $m_c++; $total_ko++; } } } echo $n_p." insertions / ".$m_p." échecs pour l’enseignant et ".$n_c." insertions / ".$m_c." échecs pour la classe</li>"; } else { echo "\"Heure début\" et/ou \"Durée\" sont dans un format non valide, cours non inséré dans WebCalendar</li>"; } } mysql_free_result($result_cours); echo " </ul> <h2>Fin du traitement</h2> <ul> <li>Nombre total d’insertions effectuées : ".$total_ok."</li> <li>Nombre total d’insertions en échec : ".$total_ko."</li> </ul>"; } ?> </body> </html>