You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2014-02-15 14:40:53

darkstar782003
Member
Registered: 2014-02-13
Posts: 11

Plugin Dumpentity 1.3.1 - Entité

Bonjour,

Je viens d'identifier un problème pour l'exportation des Entités dont je voudrai vous faire part. Il  semble que lors de l'export les sous-entités soient oubliées.

Ce phénomène ne semble se produire que pour les entités et pas pour les autres tables.

Tout d'abord voici comment le reproduire.
Mon glpi est en version 0.83.7.
La version de dumpentity installée est la 1.3.1.

je suis connecté avec le compte avec glpi qui dispose donc d'un profil de super-admin à partir de l'entité racine qui s'applique récursivement sur toutes les sous-entité.
De plus, j'ai une arborescence d'entité :
Entité racine
        Entité 1
               Entité 1 - 1
        Entité 2
               Entité 2 - 1
Comme nous allons provoquer l'erreur dans l'interface web il n'est pas nécessaire de client et de modèle dans le plugin Dumpentity.
Assurons nous maintenant que le compte glpi avec lequel nous sommes connecté a une vue depuis l'entité racine sur toute l'arborescence "Entité racine( Voir tous)".
Maintenant allons dans l'interface web du plugin dumpentity (Plugins... Export d'entité... Export complet) et cliquons sur Entités. On obtient alors un fichier glpi_entities.csv qui est ... vide !
Allons regarder le fichier des erreurs glpi\files\_log\sql-errors.log...

*** MySQL query error :
***
SQL: SELECT *
                 FROM `glpi_entities`
                 WHERE `id` IN (0,)
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 3
Backtrace :
C:\Program Files (x86)\wamp\www\glpi\plugins\dumpentity\inc\model.class.php :583        DBmysql->query()

Effectivement il manque une partie de la requête sql.

D'après ce que j'ai pu voir avec d'autres tests l'erreur semble provenir de la méthode getSonsOf qui n'arriverait pas à récupérer les id des sous-entités.

Cordialement.


glpi 0.83.7 webservices 1.3.1 dumpentity 1.3.1 racks 1.3.2

Offline

#2 2014-02-19 20:44:48

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Plugin Dumpentity 1.3.1 - Entité

Vous avez essayé en cliquant sur le chevron à droite de Entité racine ?


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#3 2014-02-22 10:06:27

darkstar782003
Member
Registered: 2014-02-13
Posts: 11

Re: Plugin Dumpentity 1.3.1 - Entité

Bonjour,

Tout à fait. J'avais bien veillé initialement à être sur Entité racine (Voir tous).

J'ai aussi fait des tests pour utiliser ce plugin en ligne de commande.
J'obtient le même genre d'erreur dans files\_log\sql-errors.log :

*** MySQL query error :
***
SQL: SELECT *
                 FROM `glpi_entities`
                 WHERE `id` IN (0,,0,17,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,19,84,21,86,87,88,89,90,91)
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0,17,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,19,84,21,86,87,88,89,90,91)' at line 3
Backtrace :
C:\Program Files (x86)\wamp\www\glpidevig\plugins\dumpentity\inc\model.class.php :583        DBmysql->query()

Je note que cette fois j'ai bien les id de toutes mes entités mais qu'il a une virgule en trop qui rend la syntaxe incorrecte.
Donc, contrairement à ce qu eje pensait initialement la fonction getsonsof ne semble pas être en cause. C'est plutôt du côté du traitement qui est fait à partir du résultat de cette fonction pour constituer le requête sql.
J'ai aussi remarqué qu'en ligne de commande ce phénomène se produit uniquement pour l'export des entités. L'export des ordinateurs fonctionne parfaitement quelque soit l'entité auquel l'appareil est attaché.

Je me suis donc intéressé à la fonction getCSV dans le fichier plugins\dumpentity\inc\model.class.php.

J'ai modifié les lignes 456 à 464 par :
$Sql = "SELECT *
                 FROM `$table`
                 WHERE `id` IN ($entity";
        $ancestors = implode(getAncestorsOf("glpi_entities", $entity), ', ');
        if ($ancestors!="") {
            $Sql .= ",".$ancestors;
        }
         if ($recursive) {
            //Dump entity + sub entities + entity's parents
            $sons = implode(getSonsOf("glpi_entities", $entity),',');
            if ($sons!="") {
                $Sql .= ",".$sons;
            }
         }
         $Sql .= ")";


Cette fois, il n'y a plus d'erreur sql.

Pour une exécution par script, on obtient bien l'ensemble des entités (sous réserve d'utiliser un client dumpentity avec sous-entité à oui).
Pour un export depuis l'interface, le résultat ne correspond qu'à l'entité en cours. La variable $recursive semble être toujours à false même lorsque on est sur "Entité racine (Voir tous)".

Je vais continuer à creuser la question...

Cordialement.


glpi 0.83.7 webservices 1.3.1 dumpentity 1.3.1 racks 1.3.2

Offline

#4 2014-02-23 17:06:01

darkstar782003
Member
Registered: 2014-02-13
Posts: 11

Re: Plugin Dumpentity 1.3.1 - Entité

Bonjour,

Comme je l'indiquais en fin de mon précédent message la variable $recursive est toujours à false lorsqu'on utilise l'interface web du plugin.
Cette valeur est fixée à la ligne 71 du fichier plugins\dumpentity\front\getCSV.php :
$recursive  = false;
Ainsi que l'utilisateur soit sur "Entité racine" ou sur "Entité racine (Voir tous)" l'extraction n'est faite que pour l'entité courante.

Cordialement.


glpi 0.83.7 webservices 1.3.1 dumpentity 1.3.1 racks 1.3.2

Offline

#5 2014-02-24 20:07:36

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 15,278

Re: Plugin Dumpentity 1.3.1 - Entité

Je viens de regarder le code.
Rien n'a jamais été prévu pour récupérer les données récursives en mode graphique.

Pour votre erreur sql, je vien de commiter une correction : https://forge.indepnet.net/projects/dum … isions/127


CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6  - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#6 2014-02-26 21:16:02

darkstar782003
Member
Registered: 2014-02-13
Posts: 11

Re: Plugin Dumpentity 1.3.1 - Entité

Merci


glpi 0.83.7 webservices 1.3.1 dumpentity 1.3.1 racks 1.3.2

Offline

Board footer

Powered by FluxBB