You are not logged in.
Salut à tous et d'abord bravo pour le travail accompli !
J'ai effectué avec succès un import de masse des utilisateurs AD de mon domaine vers GLPI (merci à Matoooy pour son script !)
Mais je voudrais pousser le bouchon un peu plus loin :
Vu qu'à l'import d'un utilisateur AD je récupère entre autres un lieu qui lui est affecté, je voudrais que lors de la consultation d'un ordinateur dans l'inventaire, le lieu de cet utilisateur s'affiche automatiquement dans le champs correspondant (Lieu:) sachant que dans mon cas c'est l'utilisateur qui fait le lien par défaut ... Le but de tout ceci est de limiter les saisies "manuelles" à des cas particuliers et d'avoir une synchro en temps réel en cas de changements de poste ou de lieu.
Ma question est de savoir si cela est possible et si oui pourriez-vous m'orienter un peu sachant que mes notions de PHP sont très limitées ?
Par avance, merci
Last edited by emj (2007-03-30 17:06:03)
Système : Debian 4.0 Etch
Logiciels : Apache 2.2, MySQL 5.0, PHP 5.2
Plateforme en exploitation : GLPI 0.70.2 + OCS-NG 1.01
Navigateurs : IE6, IE7, Firefox 2
Offline
J'ai déterminé 2 requêtes mysql
1-Synchronisation des utilisateurs et des contacts:
update glpi_computers,glpi_users set fk_users=glpi_users.id where glpi_users.name=glpi_computers.contact
2-Mise à jour des lieux en fonction des utilisateurs
update glpi_computers,glpi_dropdown_locations,glpi_users set glpi_computers.location=glpi_dropdown_locations.id where glpi_dropdown_locations.id=glpi_users.location and glpi_computers.fk_users=glpi_users.id
Ces requêtes fonctionnent bien avec phpMyAdmin mais l'appel par php ne semble pas fonctionner:
<?php
mysql_connect("localhost", "root", "****");
mysql_query("update glpi_computers,glpi_users set fk_users=glpi_users.id where glpi_users.name=glpi_computers.contact");
echo "Synchronisation de " .mysql_affected_rows(). " utilisateurs et contacts." .'<br />';
mysql_query("update glpi_computers,glpi_dropdown_locations,glpi_users set glpi_computers.location=glpi_dropdown_locations.id where glpi_dropdown_locations.id=glpi_users.location and glpi_computers.fk_users=glpi_users.id");
echo "Mise a jour de " .mysql_affected_rows(). " lieux." .'<br />';
mysql_close();
?>
... Pour le moment, je sèche ...
Système : Debian 4.0 Etch
Logiciels : Apache 2.2, MySQL 5.0, PHP 5.2
Plateforme en exploitation : GLPI 0.70.2 + OCS-NG 1.01
Navigateurs : IE6, IE7, Firefox 2
Offline
ben on dirait que 'php' ne sait pas sur quelle bdd il doit agir,
qqchose du style :
<?
// ouverture de la connexion
$connexion = mysql_connect("hote","utilisateur","password");
// choix de la base glpi
mysql_select_db('glpi',$connexion);
// constitution de la requête
$requete="DELETE FROM ....";
mysql_query($requete,$connexion);
?>
devrait faire l'affaire.
cdlt.
Offline
On dirait bien que les modifs apportées fonctionnent correctement, merci à toi Stephan Durieux !
Je potasse un peu les finitions du script et vous tiens au courant
Système : Debian 4.0 Etch
Logiciels : Apache 2.2, MySQL 5.0, PHP 5.2
Plateforme en exploitation : GLPI 0.70.2 + OCS-NG 1.01
Navigateurs : IE6, IE7, Firefox 2
Offline
Voici donc le script définitf pour la procédure:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<?php
include ("_relpos.php");
include ($phproot . "/inc/includes.php");
//constitution des requêtes
$req0 = mysql_query("update glpi_computers set glpi_computers.location=0");
$req1 = mysql_query("update glpi_computers,glpi_users set glpi_computers.fk_users=glpi_users.id where (((glpi_users.name)=glpi_computers.contact) and ((glpi_computers.deleted)='N'))");
$req2 = mysql_query("update glpi_computers,glpi_dropdown_locations,glpi_users set glpi_computers.location=glpi_dropdown_locations.id where glpi_dropdown_locations.id=glpi_users.location and glpi_computers.fk_users=glpi_users.id");
$req3 = mysql_query("SELECT glpi_computers.name, glpi_dropdown_locations.name, glpi_users.name FROM glpi_computers, glpi_dropdown_locations, glpi_users WHERE (((glpi_dropdown_locations.ID)=glpi_users.location) AND ((glpi_computers.FK_users)=glpi_users.id) AND ((glpi_computers.deleted)='N')) ORDER BY glpi_dropdown_locations.name");
//exécution des requêtes
//Remise à zéro des lieux
if (!$req0) {
echo 'Impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
echo "Suppression de " .mysql_affected_rows(). " lieux." .'<br />';
echo "-------------------------------------------------" .'<br />';
//Synchronisation du contact AD et de l'utilisateur GLPI
if (!$req1) {
echo 'Impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
echo "Synchronisation de " .mysql_affected_rows(). " contacts." .'<br />';
echo "-------------------------------------------------" .'<br />';
//Réaffectation des lieux en fonction du poste et de son utilisateur
if (!$req2) {
echo 'Impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
echo "Mise a jour de " .mysql_affected_rows(). " lieux." .'<br />';
echo "" .'<br />';
//Affichage du résultat
while($row = mysql_fetch_array($req3)) {
printf("Ajout du lieu %s poste %s de %s", $row[1], $row[0], $row[2] .'<br />');
}
?>
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Système : Debian 4.0 Etch
Logiciels : Apache 2.2, MySQL 5.0, PHP 5.2
Plateforme en exploitation : GLPI 0.70.2 + OCS-NG 1.01
Navigateurs : IE6, IE7, Firefox 2
Offline