Le Thu, 1 Nov 2012 12:33:29 +0100
David DURIEUX <[email protected]> a écrit:
>Bonjour,
>
>je viens de m'apercevoir d'un comportement qui ne devrait pas être
>comme ça (enfin je pense).
>
>Avec fusion, je veux créer un composant mémoire avec ces infos :
>
> [designation] => rdram - rimm (single-bit ecc)
> [frequence] => 400
> [devicememorytypes_id] => 4
>
>j'utilise la fonction d'import comme ça :
>$deviceMemory = new deviceMemory();
>$deviceMemory->import($input);
>
>Si j'ai déjà un composant avec :
> [designation] => rdram - rimm (single-bit ecc)
> [frequence] => 400
> [devicememorytypes_id] => 13
>
>Il ne va pas me créé car la fonction import dit que le nom
>(designation) est la même. Or le type peux être différent (RDRAM, DRAM,
>DDR3...) et donc ça pose problème.
>
>La solution pour corriger ceci serait de définir dans chaque classe
>devicexx (xx = Processor, Memory...) une fonction qui liste les champs
>servant à la comparaison dans la fonction import().
>
>Qu'en pensez-vous?
>
Puisqu'il n'y a pas d'objections (votre honneur ^^), voici le patch
>
>Cordialement,
>--
>David DURIEUX
>Tel : +33 (0)4.82.53.30.53
>Mail : [email protected]
>Site Web : http://www.siprossii.com/
>
>SIPROSSII
>Les Lafôrets
>69430 Beaujeu
>FRANCE
>
>_______________________________________________
>Glpi-dev mailing list
>[email protected]
>https://mail.gna.org/listinfo/glpi-dev
Index: inc/devicecase.class.php
===================================================================
--- inc/devicecase.class.php (revision 19619)
+++ inc/devicecase.class.php (working copy)
@@ -108,5 +108,14 @@
break;
}
}
+
+
+
+ /*
+ * Criteria used for import function
+ */
+ function getImportCriteria() {
+ return array('designation', 'manufacturers_id', 'devicecasetypes_id');
+ }
}
?>
Index: inc/devicegraphiccard.class.php
===================================================================
--- inc/devicegraphiccard.class.php (revision 19619)
+++ inc/devicegraphiccard.class.php (working copy)
@@ -120,4 +120,13 @@
}
}
}
+
+
+
+ /*
+ * Criteria used for import function
+ */
+ function getImportCriteria() {
+ return array('designation', 'manufacturers_id', 'interfacetypes_id');
+ }
?>
\ No newline at end of file
Index: inc/devicedrive.class.php
===================================================================
--- inc/devicedrive.class.php (revision 19619)
+++ inc/devicedrive.class.php (working copy)
@@ -139,5 +139,14 @@
InterfaceType::getHTMLTableCellsForItem($row, $this, NULL, $options);
}
}
+
+
+
+ /*
+ * Criteria used for import function
+ */
+ function getImportCriteria() {
+ return array('designation', 'manufacturers_id', 'interfacetypes_id');
+ }
}
?>
\ No newline at end of file
Index: inc/devicememory.class.php
===================================================================
--- inc/devicememory.class.php (revision 19619)
+++ inc/devicememory.class.php (working copy)
@@ -140,5 +140,14 @@
break;
}
}
+
+
+ /*
+ * Criteria used for import function
+ */
+ function getImportCriteria() {
+ return array('designation', 'devicememorytypes_id', 'manufacturers_id');
+ }
+
}
?>
\ No newline at end of file
Index: inc/devicemotherboard.class.php
===================================================================
--- inc/devicemotherboard.class.php (revision 19619)
+++ inc/devicemotherboard.class.php (working copy)
@@ -108,5 +108,14 @@
break;
}
}
+
+
+
+ /*
+ * Criteria used for import function
+ */
+ function getImportCriteria() {
+ return array('designation', 'manufacturers_id', 'chipset');
+ }
}
?>
\ No newline at end of file
Index: inc/deviceharddrive.class.php
===================================================================
--- inc/deviceharddrive.class.php (revision 19619)
+++ inc/deviceharddrive.class.php (working copy)
@@ -143,6 +143,14 @@
break;
}
}
-
+
+
+
+ /*
+ * Criteria used for import function
+ */
+ function getImportCriteria() {
+ return array('designation', 'manufacturers_id', 'interfacetypes_id');
+ }
}
?>
\ No newline at end of file
Index: inc/commondevice.class.php
===================================================================
--- inc/commondevice.class.php (revision 19619)
+++ inc/commondevice.class.php (working copy)
@@ -214,9 +214,18 @@
if (!isset($input['designation']) || empty($input['designation'])) {
return 0;
}
+ $where = array();
+ $a_criteria = $this->getImportCriteria();
+ foreach ($a_criteria as $criteria) {
+ if (isset($input[$criteria])) {
+ $where[] = "`".$criteria."`='".$input[$criteria]."'";
+
+ }
+ }
+
$query = "SELECT `id`
FROM `".$this->getTable()."`
- WHERE `designation` = '" . $input['designation'] . "'";
+ WHERE ". implode(" AND ", $where);
$result = $DB->query($query);
if ($DB->numrows($result) > 0) {
@@ -225,6 +234,15 @@
}
return $this->add($input);
}
+
+
+
+ /*
+ * Criteria used for import function
+ */
+ function getImportCriteria() {
+ return array('designation', 'manufacturers_id');
+ }
}
?>
\ No newline at end of file
_______________________________________________
Glpi-dev mailing list
[email protected]
https://mail.gna.org/listinfo/glpi-dev