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 2017-03-31 13:22:29

kevinG
Guest
Registered: 2014-02-26
Posts: 298

Bug DataInjection 2.4.2

Bonjour,

J'ai créé un modèle d'import basique sur les moniteurs en mise à jour uniquement.
C'est à dire, dans le fichier csv on a que le numéro de série qui sert donc de champ de liaison.
En champ complémentaire obligatoire j'ai le statut et la date de dernier inventaire physique.

J'utilise le profil "Super Admin" avec tout de cocher dans le profil.

Premier problème (génant), lorsque je prépare l'import, pour le champ "date de dernier inventaire physique", il propose un champ de type texte et non de type date comme pour le champ "date d'achat"

Deuxième problème (bloquant), lorsque l'on clique sur le bouton "Import" puis sur le bouton "Confirmer"  sur la fenêtre d'alerte "Attention : Les données existantes seront écrasées !". Je devrais voir une barre de chargement (du moins c'est le cas en version 0.84).

La sur firefox j'ai le message :

[b]Erreur d’encodage de contenu[/b]

La page que vous essayez de voir ne peut être affichée car elle utilise un type de compression invalide ou non pris en charge.

Veuillez contacter les propriétaires du site web pour les informer de ce problème.

Puis un bouton "[b]Reessayer[/b]"

Sur IE, j'ai le message :

[b]Cette page ne peut pas s’afficher[/b]

•Vérifiez que l’adresse Web http://fusion.cpam-paris.cnamts.fr est correcte.
•Recherchez la page avec votre moteur de recherche.
•Actualisez la page dans quelques minutes.

Avec le bouton "[b]Résoudre les problèmes de connexion[/b]"

Lorsque je clique sur le bouton "Reessayer" ou "Résoudre les problèmes de connexion", il m'affiche le résultat comme quoi c'est réussi.
Mais je ne peux pas voir le résultat en format CSV d'où le message d'erreur je pense. Ce format existait en version 0.84.

Mais surtout, le champ date n'est pas mis à jour (j'en ai essayé plusieurs), pourtant le statut a bien été modifié.

Et en regardant dans les log j'ai le fichier "php-errors.log" qui contient beaucoup de ligne.
Voici tout le fichier avec uniquement les erreurs pour l'action décrite ci-dessus.

2017-03-31 12:55:35 [nom_serveur]
  *** PHP Notice(8): Undefined index: field
  Backtrace :
  ...injection/inc/commoninjectionlib.class.php:1925 
  ...atainjection/inc/infocominjection.class.php:115 PluginDatainjectionCommonInjectionLib::addToSearchOptions()
  plugins/datainjection/inc/info.class.php:282       PluginDatainjectionInfocomInjection->getOptions()
  plugins/datainjection/inc/info.class.php:256       PluginDatainjectionInfo::displayAdditionalInformation()
  ...s/datainjection/ajax/dropdownSelectModel.php:50 PluginDatainjectionInfo::showAdditionalInformationsForm()
2017-03-31 12:56:37 [nom_serveur]
  *** PHP Notice(8): Undefined index: field
  Backtrace :
  ...injection/inc/commoninjectionlib.class.php:1925 
  ...atainjection/inc/infocominjection.class.php:115 PluginDatainjectionCommonInjectionLib::addToSearchOptions()
  plugins/datainjection/inc/info.class.php:398       PluginDatainjectionInfocomInjection->getOptions()
  plugins/datainjection/inc/engine.class.php:214     PluginDatainjectionInfo::keepInfo()
  plugins/datainjection/inc/engine.class.php:107     PluginDatainjectionEngine->addAdditionalInformations()
  ...datainjection/inc/clientinjection.class.php:249 PluginDatainjectionEngine->injectLine()
  ...datainjection/inc/clientinjection.class.php:204 PluginDatainjectionClientInjection::processInjection()
  ...datainjection/front/clientinjection.form.php:38 PluginDatainjectionClientInjection::showInjectionForm()
2017-03-31 12:56:37 [nom_serveur]
  *** PHP Notice(8): Undefined index: field
  Backtrace :
  ...injection/inc/commoninjectionlib.class.php:1925 
  ...atainjection/inc/infocominjection.class.php:115 PluginDatainjectionCommonInjectionLib::addToSearchOptions()
  plugins/datainjection/inc/info.class.php:398       PluginDatainjectionInfocomInjection->getOptions()
  plugins/datainjection/inc/engine.class.php:214     PluginDatainjectionInfo::keepInfo()
  plugins/datainjection/inc/engine.class.php:107     PluginDatainjectionEngine->addAdditionalInformations()
  ...datainjection/inc/clientinjection.class.php:249 PluginDatainjectionEngine->injectLine()
  ...datainjection/inc/clientinjection.class.php:204 PluginDatainjectionClientInjection::processInjection()
  ...datainjection/front/clientinjection.form.php:38 PluginDatainjectionClientInjection::showInjectionForm()
2017-03-31 12:56:37 [nom_serveur]
  *** PHP Notice(8): Undefined index: field
  Backtrace :
  ...injection/inc/commoninjectionlib.class.php:1925 
  ...atainjection/inc/infocominjection.class.php:115 PluginDatainjectionCommonInjectionLib::addToSearchOptions()
  ...injection/inc/commoninjectionlib.class.php:1610 PluginDatainjectionInfocomInjection->getOptions()
  ...injection/inc/commoninjectionlib.class.php:1438 PluginDatainjectionCommonInjectionLib->dataAlreadyInDB()
  ...datainjection/inc/monitorinjection.class.php:88 PluginDatainjectionCommonInjectionLib->processAddOrUpdate()
  plugins/datainjection/inc/engine.class.php:145     PluginDatainjectionMonitorInjection->addOrUpdateObject()
  ...datainjection/inc/clientinjection.class.php:249 PluginDatainjectionEngine->injectLine()
  ...datainjection/inc/clientinjection.class.php:204 PluginDatainjectionClientInjection::processInjection()
  ...datainjection/front/clientinjection.form.php:38 PluginDatainjectionClientInjection::showInjectionForm()
2017-03-31 12:56:37 [nom_serveur]
  *** PHP Notice(8): Undefined index: field
  Backtrace :
  ...injection/inc/commoninjectionlib.class.php:1925 
  ...atainjection/inc/infocominjection.class.php:115 PluginDatainjectionCommonInjectionLib::addToSearchOptions()
  ...ainjection/inc/commoninjectionlib.class.php:841 PluginDatainjectionInfocomInjection->getOptions()
  ...injection/inc/commoninjectionlib.class.php:1746 PluginDatainjectionCommonInjectionLib->setValueForItemtype()
  ...injection/inc/commoninjectionlib.class.php:1438 PluginDatainjectionCommonInjectionLib->dataAlreadyInDB()
  ...datainjection/inc/monitorinjection.class.php:88 PluginDatainjectionCommonInjectionLib->processAddOrUpdate()
  plugins/datainjection/inc/engine.class.php:145     PluginDatainjectionMonitorInjection->addOrUpdateObject()
  ...datainjection/inc/clientinjection.class.php:249 PluginDatainjectionEngine->injectLine()
  ...datainjection/inc/clientinjection.class.php:204 PluginDatainjectionClientInjection::processInjection()
  ...datainjection/front/clientinjection.form.php:38 PluginDatainjectionClientInjection::showInjectionForm()
2017-03-31 12:56:37 [nom_serveur]
  *** PHP Notice(8): Undefined index: field
  Backtrace :
  ...injection/inc/commoninjectionlib.class.php:1925 
  ...atainjection/inc/infocominjection.class.php:115 PluginDatainjectionCommonInjectionLib::addToSearchOptions()
  ...injection/inc/commoninjectionlib.class.php:1474 PluginDatainjectionInfocomInjection->getOptions()
  ...injection/inc/commoninjectionlib.class.php:1448 PluginDatainjectionCommonInjectionLib->effectiveAddOrUpdate()
  ...datainjection/inc/monitorinjection.class.php:88 PluginDatainjectionCommonInjectionLib->processAddOrUpdate()
  plugins/datainjection/inc/engine.class.php:145     PluginDatainjectionMonitorInjection->addOrUpdateObject()
  ...datainjection/inc/clientinjection.class.php:249 PluginDatainjectionEngine->injectLine()
  ...datainjection/inc/clientinjection.class.php:204 PluginDatainjectionClientInjection::processInjection()
  ...datainjection/front/clientinjection.form.php:38 PluginDatainjectionClientInjection::showInjectionForm()
2017-03-31 12:58:23 [nom_serveur]
  *** PHP Warning(2): Invalid argument supplied for foreach()
  Backtrace :
  inc/html.class.php:550                             
  inc/html.class.php:1828                            Html::displayMessageAfterRedirect()
  ...datainjection/front/clientinjection.form.php:34 Html::header()

Last edited by kevinG (2017-04-03 08:22:45)


Version en production GLPI 9.1.4 (En cours de test 9.1.5)
Version en production Fusion Inventory 9.1+1.0
Version PHP 5.6.30
Zend Engine v2.6.0 - Zend OPcache v7.0.6-dev - Xdebug v2.5.0

Offline

#2 2017-08-10 12:48:07

kevinG
Guest
Registered: 2014-02-26
Posts: 298

Re: Bug DataInjection 2.4.2

Je me répond à moi même pour ceux que cela intéresse.

En regardant dans le code et en faisant des tests cela m'a amené dans le fichier "html.class.php" dans le répertoire "/GLPI/INC/".
Et plus particulièrement dans la fonction "changeProgressBarPosition" qui commence à la ligne 1014 (pour la version de glpi 9.1.4).

Je sais qu'il ne faut pas modifier le coeur mais si je ne fais pas la petite modification qui va suivre alors je ne peux pas utiliser ce plugin qui est super utile et bien fait.

Voici le code avant ma modification :

   static function changeProgressBarPosition($crt, $tot, $msg="") {
      $options = array();
      if (!$tot) {
         $options['percent'] = 0;
      } else if ($crt>$tot) {
         $options['percent'] = 100;
      } else {
         $options['percent'] = 100*$crt/$tot;
      }
      if ($msg != "") {
         $options['message'] = $msg;
      }
      self::progressBar('doaction_progress', $options);
      self::glpi_flush();
   }

Ma modification consiste uniquement à ajouter un echo entre l'appelle de la fonction progressBar et la fonction glpi_flush.

Voici le code avant ma modification :

   static function changeProgressBarPosition($crt, $tot, $msg="") {
      $options = array();
      if (!$tot) {
         $options['percent'] = 0;
      } else if ($crt>$tot) {
         $options['percent'] = 100;
      } else {
         $options['percent'] = 100*$crt/$tot;
      }
      if ($msg != "") {
         $options['message'] = $msg;
      }
      self::progressBar('doaction_progress', $options);
echo " ";
      self::glpi_flush();
   }

En regardant la fonction "glpi_flush" je vois que l'on fait appelle à une fonction native "flush" et si elle existe "ob_flush".
Donc je pense qu'il doit y avoir un soucis sur cette commande avec ma version de PHP (5.6.30).
Mais en ajoutant uniquement un echo qui affiche un espace (à chaque appel de la fonction) juste avant cela règle le problème.
Si je mets rien dans le echo alors le bug persiste. Afin de rien voir à l'écran je mets donc un espace.

Je vais attendre un peu avant de passer ce sujet en résolu pour si quelqu'un veut réagir à la modif que j'ai fait.


Version en production GLPI 9.1.4 (En cours de test 9.1.5)
Version en production Fusion Inventory 9.1+1.0
Version PHP 5.6.30
Zend Engine v2.6.0 - Zend OPcache v7.0.6-dev - Xdebug v2.5.0

Offline

Board footer

Powered by FluxBB