You are not logged in.
Bonjour,
Utilisateur du plugin "manufacturersimports", j'ai récemment rencontré des problèmes de calcul des dates de garantie pour certaines machines DELL. En regardant un peu dans le code du plugin, il semble que ça soit lié à l'utilisation de la fonction "max" et "min" sur les dates. Par exemple, dans la fonction "importWarranty" de "postimport.class.php", on trouve le code suivant :
$masque='([0-9]{1,2}/[0-9]{1,2}/[0-9]{4})';
preg_match_all ($masque, $contents, $liste_resultat);
$maDateFin = max($liste_resultat[0]);
Or les fonctions min / max ne semble pas bien opérer sur les dates ayant un format "d/m/Y" ou "m/d/Y" mais sans problème sur des dates avec format "Y-m-d" :
$ cat /tmp/example.php
<?php
print "MAX1 : ".max(array('10/23/2007', '10/23/2011', '10/23/2012', '10/24/2010', '10/24/2011', '10/23/2007', '10/23/2010', '10/23/2007', '10/23/2008', '10/23/2007', '10/23/2008'))."\n";
print "MAX2 : ".max(array('2007-23-10', '2011-23-10', '2012-23-10', '2010-24-10', '2011-24-10', '2007-23-10', '2010-23-10', '2007-23-10', '2008-23-10', '2007-23-10', '2008-23-10'))."\n";
print "MAX3 : ".max(array('23/10/2007', '23/10/2011', '23/10/2012', '24/10/2010', '24/10/2011', '23/10/2007', '23/10/2010', '23/10/2007', '23/10/2008', '23/10/2007', '23/10/2008'))."\n";
?>
$ php /tmp/example.php
MAX1 : 10/24/2011
MAX2 : 2012-23-10
MAX3 : 24/10/2011
Du coup, pas mal de calculs sur les dates de garanties sont faux. En modifiant le code avec qq chose du genre :
$liste_resultat2 = array_map(function($my_date){return date("Y-m-d",strtotime($my_date));}, $liste_resultat[0]);
$maDateFin = max($liste_resultat2);
on obtient les bonnes valeurs.
Est ce que le problème est lié à une version particulière de php et d'OS où est-ce plus général ?
l'OS est une debian Debian GNU/Linux 6.0.2 64bits et les version de php sont en "5.3.3-7+squeeze3".
Offline
Version du plugin et de GLPI ?
Xavier Caillaud
Blog GLPI Infotel
Offline
GLPI version 0.80.2 et plugin "Imports fabricants" version 1.4.0.
En vérifiant sur la forge, le code pour le tri des dates "récupérées" dans le contenu html pour DELL est identique dans les dernières versions et ce problème semble plutôt lié à l'utilisation de la fonction max (resp. min) de PHP.
Le problème de min/max est le même sur une centos 5.6 avec php 5.1.6-27.el5.
Offline