From ed8c48803b00936b81393d862a376b57cfad50e2 Mon Sep 17 00:00:00 2001 From: Stanislas Kita <7335054+stonebuzz@users.noreply.github.com> Date: Mon, 7 Sep 2026 15:00:56 +0200 Subject: [PATCH] Fix(Core): Move to iterator --- CHANGELOG.md | 1 + inc/networkportinjection.class.php | 37 +++++++++++++++++++----------- tests/bootstrap.php | 15 ++++-------- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 619e4b38..6466ca03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Fixed +- Move to iterator - Fix various minor bugs in the import/export workflow - Fix an issue where data are not formatted when coming from a field plugin's custom field. diff --git a/inc/networkportinjection.class.php b/inc/networkportinjection.class.php index 3b56edf7..a9611b0c 100644 --- a/inc/networkportinjection.class.php +++ b/inc/networkportinjection.class.php @@ -320,32 +320,41 @@ public function processAfterInsertOrUpdate($values, $add = true, $rights = []) } // Find port in database - $sql = "SELECT `glpi_networkports`.`id` - FROM `glpi_networkports`, `glpi_networkequipments` - WHERE `glpi_networkports`.`itemtype`='NetworkEquipment' - AND `glpi_networkports`.`items_id` = `glpi_networkequipments`.`id` - AND `glpi_networkequipments`.`is_template` = '0' - AND `glpi_networkequipments`.`entities_id` - = '" . $values['NetworkPort']["entities_id"] . "'"; + $criteria = [ + 'glpi_networkports.itemtype' => 'NetworkEquipment', + 'glpi_networkequipments.is_template' => 0, + 'glpi_networkequipments.entities_id' => $values['NetworkPort']["entities_id"], + ]; if ($use_name) { - $sql .= " AND `glpi_networkequipments`.`name` = '" . $values['NetworkPort']["netname"] . "'"; + $criteria['glpi_networkequipments.name'] = $values['NetworkPort']["netname"]; } if ($use_logical_number) { - $sql .= " AND `glpi_networkports`.`logical_number` = '" . $values['NetworkPort']["netport"] . "'"; + $criteria['glpi_networkports.logical_number'] = $values['NetworkPort']["netport"]; } if ($use_mac) { - $sql .= " AND `glpi_networkports`.`mac` = '" . $values['NetworkPort']["netmac"] . "'"; + $criteria['glpi_networkports.mac'] = $values['NetworkPort']["netmac"]; } - $res = $DB->doQuery($sql); + $result = $DB->request([ + 'SELECT' => 'glpi_networkports.id', + 'FROM' => 'glpi_networkports', + 'INNER JOIN' => [ + 'glpi_networkequipments' => [ + 'ON' => [ + 'glpi_networkports' => 'items_id', + 'glpi_networkequipments' => 'id', + ], + ], + ], + 'WHERE' => $criteria, + ]); //if at least one parameter is given - $nb = $DB->numrows($res); - if ($nb == 1) { + if (count($result) === 1) { //Get data for this port - $netport = $DB->fetchArray($res); + $netport = $result->current(); $netport_netport = new NetworkPort_NetworkPort(); //If this port already connected to another one ? if (!$netport_netport->getOppositeContact((int) $netport['id'])) { diff --git a/tests/bootstrap.php b/tests/bootstrap.php index d0b15bda..c52f4e00 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -28,19 +28,12 @@ * ------------------------------------------------------------------------- */ -$current_plugin_folder = basename(realpath(__DIR__ . '/../')); - require __DIR__ . '/../../../tests/bootstrap.php'; -require dirname(__DIR__) . '/vendor/autoload.php'; - -$plugin = new Plugin(); -$plugin->checkPluginState('datainjection'); -$plugin->getFromDBbyDir('datainjection'); -if (!$plugin->isInstalled('datainjection')) { - $plugin->install($plugin->getID()); +if (file_exists(__DIR__ . '/../vendor/autoload.php')) { + require __DIR__ . '/../vendor/autoload.php'; } -if (!$plugin->isActivated('datainjection')) { - $plugin->activate($plugin->getID()); +if (!Plugin::isPluginActive('datainjection')) { + throw new RuntimeException('Plugin datainjection is not active in the test database'); }