diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bf37c7..fe30637 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Fixed +- Fix PDF Generation involving a Network port with multiple IPs - Fix PDF export of tabs renamed in GLPI 11 ## [4.1.4] - 2026-07-30 diff --git a/inc/networkport.class.php b/inc/networkport.class.php index 1d5a0ee..bfb2390 100644 --- a/inc/networkport.class.php +++ b/inc/networkport.class.php @@ -138,27 +138,39 @@ public static function pdfForItem(PluginPdfSimplePDF $pdf, CommonDBTM $item) $netport->fields['mac'], )); - $sqlip = ['LEFT JOIN' => ['glpi_networknames' - => ['FKEY' => ['glpi_ipaddresses' => 'items_id', - 'glpi_networknames' => 'id'], - ['glpi_ipaddresses.entities_id' - => $_SESSION['glpiactive_entity']]]], - 'WHERE' => ['glpi_networknames.items_id' => $netport->fields['id']]]; - - $ipname = ''; - $ip = new IPAddress(); - if ($ip->getFromDBByRequest($sqlip)) { - $ipname = $ip->fields['name']; - - $pdf->displayLine('' . sprintf(__s('%1$s: %2$s'), __s('ip') . '', $ipname)); + $ips = $DB->request( + [ + 'SELECT' => [IPAddress::getTable() . '.*'], + 'FROM' => IPAddress::getTable(), + 'LEFT JOIN' => [ + 'glpi_networknames' => [ + 'FKEY' => [ + 'glpi_ipaddresses' => 'items_id', + 'glpi_networknames' => 'id', + ], + [ + 'glpi_ipaddresses.entities_id' => $_SESSION['glpiactive_entity'], + ], + ], + ], + 'WHERE' => [ + 'glpi_networknames.items_id' => $netport->fields['id'], + 'glpi_networknames.itemtype' => NetworkPort::class, + ], + ], + ); + + foreach ($ips as $ip) { + + $pdf->displayLine('' . sprintf(__s('%1$s: %2$s'), __s('ip') . '', $ip['name'])); $sql = ['SELECT' => 'glpi_ipaddresses_ipnetworks.ipnetworks_id', 'FROM' => 'glpi_ipaddresses_ipnetworks', 'LEFT JOIN' => ['glpi_ipnetworks' => ['FKEY' => ['glpi_ipaddresses_ipnetworks' => 'ipnetworks_id', 'glpi_ipnetworks' => 'id']]], - 'WHERE' => ['glpi_ipaddresses_ipnetworks.ipaddresses_id' => $ip->getID()] - + $dbu->getEntitiesRestrictCriteria('glpi_ipnetworks')]; + 'WHERE' => ['glpi_ipaddresses_ipnetworks.ipaddresses_id' => $ip['id']] + + $dbu->getEntitiesRestrictCriteria('glpi_ipnetworks')]; $res = $DB->request($sql); foreach ($res as $row) {