From befc9a573a3de4e5860c07e3ae0da3a0ebe77bbb Mon Sep 17 00:00:00 2001 From: jbousquie Date: Fri, 18 Nov 2016 16:52:47 +0100 Subject: [PATCH] factorisation de insere_machines et insertion de salles --- admin/recup_salles.php | 116 ++++++++++++++++++----------------------- 1 file changed, 51 insertions(+), 65 deletions(-) diff --git a/admin/recup_salles.php b/admin/recup_salles.php index 62e5ee9..6d69da2 100644 --- a/admin/recup_salles.php +++ b/admin/recup_salles.php @@ -14,70 +14,33 @@ $req_purge_compte = "TRUNCATE comptes"; $ldap_con = ldap_connect($ldap_host, $ldap_port); $ldap_auth = ldap_bind($ldap_con, $ldap_rdn, $ldap_passwd); -// Lecture des salles dans AD : machines pédagogiques -$res_salles = ldap_search($ldap_con, $base_salles, $filtre_salles, $attr_salles); -$entry_salles = ldap_get_entries($ldap_con, $res_salles); - -// Lecture des salles dans AD : machines personnels -$res_salles_personnel = ldap_search($ldap_con, $base_salles_personnel, $filtre_salles, $attr_salles); -$entry_salles_personnel = ldap_get_entries($ldap_con, $res_salles_personnel); - -// Insertion des machines -db_query($db, $req_purge_machine); - - // salles pédagiques -$salles = array(); // Ce tableau indexé contiendra les salles qui possèdent des machines -for ($i = 0; $i < $entry_salles["count"]; $i++) { - $dn_tab = ldap_explode_dn($entry_salles[$i]["dn"],1); - $salle = $dn_tab[1]; // le nom de la salle dans laquelle elle se trouve est le 2° élément du DN d'une machine - $salles[$i] = $salle; // tableau des salles construit à la volée - $machine_id = $entry_salles[$i]["cn"][0]; - $os = ""; - $os_sp = ""; - $os_version = ""; - if (array_key_exists("operatingsystem", $entry_salles[$i])) { $os = addslashes($entry_salles[$i]["operatingsystem"][0]); } - if (array_key_exists("operatingsystemservicepack", $entry_salles[$i])) { $os_sp = addslashes($entry_salles[$i]["operatingsystemservicepack"][0]); } - if (array_key_exists("operatingsystemversion", $entry_salles[$i])) { $os_version = addslashes($entry_salles[$i]["operatingsystemversion"][0]); } - - $req_machine = "INSERT INTO machines (machine_id, salle, os, os_sp, os_version) VALUES ('{$machine_id}', '{$salle}', '{$os}', '{$os_sp}', '{$os_version}')"; - db_query($db, $req_machine); -} - - // machines personnels -$salles_perso = array(); // Ce tableau indexé contiendra les salles qui possèdent des machines -for ($i = 0; $i < $entry_salles_personnel["count"]; $i++) { - $dn_tab = ldap_explode_dn($entry_salles_personnel[$i]["dn"],1); - $salle_perso = $dn_tab[1]; // le nom de la salle dans laquelle elle se trouve est le 2° élément du DN d'une machine - $salles_perso[$i] = $salle_perso; // tableau des salles construit à la volée - $machine_id = $entry_salles_personnel[$i]["cn"][0]; - $os = ""; - $os_sp = ""; - $os_version = ""; - if (array_key_exists("operatingsystem", $entry_salles[$i])) { $os = addslashes($entry_salles[$i]["operatingsystem"][0]); } - if (array_key_exists("operatingsystemservicepack", $entry_salles[$i])) { $os_sp = addslashes($entry_salles[$i]["operatingsystemservicepack"][0]); } - if (array_key_exists("operatingsystemversion", $entry_salles[$i])) { $os_version = addslashes($entry_salles[$i]["operatingsystemversion"][0]); } - $req_machine = "INSERT INTO machines (machine_id, salle, os, os_sp, os_version) VALUES ('{$machine_id}', '{$salle_perso}', '{$os}', '{$os_sp}', '{$os_version}')"; - db_query($db, $req_machine); -} - -// Insertion des salles pédagogiques -$salles = array_unique($salles); // suppression des doublons dans le tableau des salles -db_query($db, $req_purge_salle); -foreach($salles as $s) { - $req_salle = "INSERT INTO salles (salle_id) VALUES ('{$s}')"; - db_query($db, $req_salle); -} - -// Insertion des salles personnels -$salles_perso = array_unique($salles_perso); // suppression des doublons dans le tableau des salles -foreach($salles_perso as $s) { - $req_salle = "INSERT INTO salles (salle_id) VALUES ('{$s}')"; - db_query($db, $req_salle); -} - - - +// fonction d'insertion des machines dans la base de données à partir des base, filtre et attributs LDAP +// $salles est explicitement passé par référence +function Insere_machines($ldap_con, $ldap_base, $ldap_filtre, $ldap_attr, $db, &$salles) { + $res = ldap_search($ldap_con, $ldap_base, $ldap_filtre, $ldap_attr); + $entry = ldap_get_entries($ldap_con, $res); + for ($i = 0; $i < $entry["count"]; $i++) { + $dn_tab = ldap_explode_dn($entry[$i]["dn"],1); + $nom_salle = $dn_tab[1]; // le nom de la salle dans laquelle elle se trouve est le 2° élément du DN d'une machine + array_push($salles, $nom_salle); // tableau des salles construit à la volée + $machine_id = $entry[$i]["cn"][0]; + $os = ""; + $os_sp = ""; + $os_version = ""; + if (array_key_exists("operatingsystem", $entry[$i])) { + $os = db_escape_string($db, $entry[$i]["operatingsystem"][0]); + } + if (array_key_exists("operatingsystemservicepack", $entry[$i])) { + $os_sp = db_escape_string($db, $entry[$i]["operatingsystemservicepack"][0]); + } + if (array_key_exists("operatingsystemversion", $entry[$i])) { + $os_version = db_escape_string($db, $entry[$i]["operatingsystemversion"][0]); + } + $req_machine = "INSERT INTO machines (machine_id, salle, os, os_sp, os_version) VALUES ('{$machine_id}', '{$nom_salle}', '{$os}', '{$os_sp}', '{$os_version}')"; + db_query($db, $req_machine); + } +}; // Fonction d'insertion des personnes dans la base de données à partir des base, filtre et attributs LDAP // Si le $libelle_type est passé, il remplace la valeur du champ groupe dans la table @@ -106,6 +69,30 @@ function Insere_personnes($ldap_con, $ldap_base, $ldap_filtre, $ldap_attr, $db, }; +// Insertion des machines +// ====================== +$salles = array(); // tableau des salles contenant des machines +db_query($db, $req_purge_machine); + +// boucle sur chaque branche déclarée dans $ldap_machines +foreach ($ldap_machines as $ldap_branche) { + $ldap_base = $ldap_branche["base"]; + $ldap_filtre = $ldap_branche["filtre"]; + $ldap_attr = $ldap_branche["attr"]; + Insere_machines($ldap_con, $ldap_base, $ldap_filtre, $ldap_attr, $db, $salles); +} + + +// Insertion des salles à partir du tableau $salles remplis par Insere_machines() +// ============================================================================== +array_unique($salles); // suppression des doublons dans le tableau des salles +db_query($db, $req_purge_salle); +foreach($salles as $s) { + $req_salle = "INSERT INTO salles (salle_id) VALUES ('{$s}')"; + db_query($db, $req_salle); +} + + // Insertion des personnes // ======================= @@ -121,9 +108,8 @@ foreach ($ldap_personnes as $ldap_branche) { Insere_personnes($ldap_con, $ldap_base, $ldap_filtre, $ldap_attr, $db, $libelle_type); } -// fermeture ldap et base de données +// fermeture ldap ldap_close($ldap_con); -db_free($db); // retour sur la page salles_live.php header('Location: '.$winlog_url.'/admin/salles_live.php');