From 63a67af306245683d9df40923e5e25cf3209798c Mon Sep 17 00:00:00 2001 From: mbressy Date: Wed, 29 Apr 2026 08:54:44 +0000 Subject: [PATCH 1/4] fix PDF export for assignable asset groups --- inc/common.class.php | 48 ++++++++++++++++++++++++++-------- inc/computer.class.php | 13 +++------ inc/monitor.class.php | 15 +++-------- inc/networkequipment.class.php | 11 +++----- inc/peripheral.class.php | 11 +++----- inc/phone.class.php | 15 +++-------- inc/printer.class.php | 15 +++-------- inc/software.class.php | 22 +++------------- 8 files changed, 64 insertions(+), 86 deletions(-) diff --git a/inc/common.class.php b/inc/common.class.php index a883614..d124695 100644 --- a/inc/common.class.php +++ b/inc/common.class.php @@ -37,6 +37,40 @@ abstract class PluginPdfCommon extends CommonGLPI public static $rightname = 'plugin_pdf'; + protected static function get_label_value(string $label, mixed $value): string + { + return '' . sprintf(__s('%1$s: %2$s'), $label . '', $value); + } + + protected static function get_dropdown_values(string $table, mixed $values): string + { + if (!is_array($values)) { + return Toolbox::stripTags(Dropdown::getDropdownName($table, $values)); + } + + $names = array_filter(array_map( + static fn($value) => Toolbox::stripTags(Dropdown::getDropdownName($table, $value)), + $values, + )); + + return implode(', ', $names); + } + + protected static function get_group_value(CommonGLPI $item, string $field = 'groups_id'): string + { + return self::get_dropdown_values('glpi_groups', $item->fields[$field] ?? []); + } + + protected static function get_group_column(CommonGLPI $item, string $field = 'groups_id', ?string $label = null): string + { + return self::get_label_value($label ?? __s('Group'), self::get_group_value($item, $field)); + } + + protected static function display_group_line(PluginPdfSimplePDF $pdf, CommonGLPI $item, string $right_column): void + { + $pdf->displayLine(self::get_group_column($item), $right_column); + } + /** * Constructor, should intialize $this->obj property **/ @@ -506,17 +540,9 @@ public static function mainLine(PluginPdfSimplePDF $pdf, $item, $field) ); case 'group-model': return $pdf->displayLine( - '' . sprintf( - __s('%1$s: %2$s'), - __s('Group in charge of the hardware') . '', - Dropdown::getDropdownName( - 'glpi_groups', - $item->fields['groups_id_tech'], - ), - ), - '' . sprintf( - __s('%1$s: %2$s'), - __s('Model') . '', + self::get_group_column($item, 'groups_id_tech', __s('Group in charge of the hardware')), + self::get_label_value( + __s('Model'), Toolbox::stripTags(Dropdown::getDropdownName( 'glpi_' . $type . 'models', $item->fields[$type . 'models_id'], diff --git a/inc/computer.class.php b/inc/computer.class.php index c8851cf..8f1ef45 100644 --- a/inc/computer.class.php +++ b/inc/computer.class.php @@ -86,17 +86,12 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Computer $computer) ); $pdf->displayLine( - '' . sprintf( - __('%1$s: %2$s'), - __('Group') . '', - Dropdown::getDropdownName( - 'glpi_groups', - $computer->fields['groups_id'], - ), - ), - '' . sprintf(__('%1$s: %2$s'), __('UUID') . '', $computer->fields['uuid']), + self::get_group_column($computer), + self::get_group_column($computer, 'groups_id_tech', __('Group in charge of the hardware')), ); + $pdf->displayLine(self::get_label_value(__('UUID'), $computer->fields['uuid'])); + $pdf->displayLine( '' . sprintf( __('%1$s: %2$s'), diff --git a/inc/monitor.class.php b/inc/monitor.class.php index 5d7ccc7..63f3388 100644 --- a/inc/monitor.class.php +++ b/inc/monitor.class.php @@ -60,17 +60,10 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Monitor $item) PluginPdfCommon::mainLine($pdf, $item, 'contact-otherserial'); PluginPdfCommon::mainLine($pdf, $item, 'user-management'); - $pdf->displayLine( - '' . sprintf( - __s('%1$s: %2$s'), - __s('Group') . '', - Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']), - ), - '' . sprintf( - __s('%1$s: %2$s'), - __s('Size') . '', - sprintf(__s('%1$s %2$s'), $item->fields['size'], '"'), - ), + self::display_group_line( + $pdf, + $item, + self::get_label_value(__s('Size'), sprintf(__s('%1$s %2$s'), $item->fields['size'], '"')), ); $opts = ['have_micro' => __s('Microphone'), diff --git a/inc/networkequipment.class.php b/inc/networkequipment.class.php index cbd1155..24c45b4 100644 --- a/inc/networkequipment.class.php +++ b/inc/networkequipment.class.php @@ -83,15 +83,10 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, NetworkEquipment $item) ); $pdf->displayLine( - '' . sprintf( - __s('%1$s: %2$s'), - __s('Group') . '', - Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']), - ), + self::get_group_column($item), '' . __s('The MAC address and the IP of the equipment are included in an aggregated network port'), - '' . sprintf( - __s('%1$s: %2$s'), - sprintf(__s('%1$s (%2$s)'), __s('Memory'), __s('Mio')) . '', + self::get_label_value( + sprintf(__s('%1$s (%2$s)'), __s('Memory'), __s('Mio')), $item->fields['ram'], ), ); diff --git a/inc/peripheral.class.php b/inc/peripheral.class.php index 9f38312..8b05244 100644 --- a/inc/peripheral.class.php +++ b/inc/peripheral.class.php @@ -62,13 +62,10 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Peripheral $item) PluginPdfCommon::mainLine($pdf, $item, 'contact-otherserial'); PluginPdfCommon::mainLine($pdf, $item, 'user-management'); - $pdf->displayLine( - '' . sprintf( - __s('%1$s: %2$s'), - __s('Group') . '', - Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']), - ), - '' . sprintf(__s('%1$s: %2$s'), __s('Brand') . '', $item->fields['brand']), + self::display_group_line( + $pdf, + $item, + self::get_label_value(__s('Brand'), $item->fields['brand']), ); $pdf->setColumnsSize(100); diff --git a/inc/phone.class.php b/inc/phone.class.php index e35cf92..3efbeb6 100644 --- a/inc/phone.class.php +++ b/inc/phone.class.php @@ -63,17 +63,10 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Phone $item) PluginPdfCommon::mainLine($pdf, $item, 'user-management'); - $pdf->displayLine( - '' . sprintf( - __s('%1$s: %2$s'), - __s('Group') . '', - Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']), - ), - '' . sprintf( - __s('%1$s: %2$s'), - __s('UUID') . '', - $item->fields['uuid'], - ), + self::display_group_line( + $pdf, + $item, + self::get_label_value(__s('UUID'), $item->fields['uuid']), ); $pdf->displayLine( diff --git a/inc/printer.class.php b/inc/printer.class.php index d493fc0..428f862 100644 --- a/inc/printer.class.php +++ b/inc/printer.class.php @@ -95,17 +95,10 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Printer $printer) ), ); - $pdf->displayLine( - '' . sprintf( - __s('%1$s: %2$s'), - __s('Group') . '', - Dropdown::getDropdownName('glpi_groups', $printer->fields['groups_id']), - ), - '' . sprintf( - __s('%1$s: %2$s'), - __s('UUID') . '', - $printer->fields['uuid'], - ), + self::display_group_line( + $pdf, + $printer, + self::get_label_value(__s('UUID'), $printer->fields['uuid']), ); diff --git a/inc/software.class.php b/inc/software.class.php index 21a3526..53aad79 100644 --- a/inc/software.class.php +++ b/inc/software.class.php @@ -90,28 +90,14 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Software $software) ); $pdf->displayLine( - '' . sprintf( - __s('%1$s: %2$s'), - __s('Group in charge of the hardware') . '', - Dropdown::getDropdownName( - 'glpi_groups', - $software->fields['groups_id_tech'], - ), - ), - '' . sprintf( - __s('%1$s: %2$s'), - __s('User') . '', + self::get_group_column($software, 'groups_id_tech', __s('Group in charge of the hardware')), + self::get_label_value( + __s('User'), $dbu->getUserName($software->fields['users_id']), ), ); - $pdf->displayLine( - '' . sprintf( - __s('%1$s: %2$s'), - __s('Group') . '', - Dropdown::getDropdownName('glpi_groups', $software->fields['groups_id']), - ), - ); + $pdf->displayLine(self::get_group_column($software)); $pdf->displayLine( '' . sprintf( From c5a436738785a38d4ed5f6fc3aa5bd4a3dd27e26 Mon Sep 17 00:00:00 2001 From: mbressy Date: Wed, 29 Apr 2026 14:15:26 +0000 Subject: [PATCH 2/4] update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f42bf7..1a14412 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Fix image (field : description) in to pdf - Fix massive action PDF export redirecting to item list instead of generating the PDF +- Fix PDF export for assignable asset groups by properly handling multiple groups ## [4.1.2] - 2026-01-08 From c6ee9458ab99439841435037b61036a4bacb00fc Mon Sep 17 00:00:00 2001 From: mbressy Date: Thu, 30 Apr 2026 07:53:03 +0000 Subject: [PATCH 3/4] remove helpers & use getItemsAssociatedTo() --- inc/common.class.php | 65 +++++++++++++++------------------- inc/computer.class.php | 47 ++++++++++++++++++++++-- inc/monitor.class.php | 29 ++++++++++++--- inc/networkequipment.class.php | 25 +++++++++++-- inc/peripheral.class.php | 25 ++++++++++--- inc/phone.class.php | 25 ++++++++++--- inc/printer.class.php | 25 ++++++++++--- inc/software.class.php | 46 +++++++++++++++++++++--- 8 files changed, 224 insertions(+), 63 deletions(-) diff --git a/inc/common.class.php b/inc/common.class.php index d124695..c5ddd8e 100644 --- a/inc/common.class.php +++ b/inc/common.class.php @@ -37,40 +37,6 @@ abstract class PluginPdfCommon extends CommonGLPI public static $rightname = 'plugin_pdf'; - protected static function get_label_value(string $label, mixed $value): string - { - return '' . sprintf(__s('%1$s: %2$s'), $label . '', $value); - } - - protected static function get_dropdown_values(string $table, mixed $values): string - { - if (!is_array($values)) { - return Toolbox::stripTags(Dropdown::getDropdownName($table, $values)); - } - - $names = array_filter(array_map( - static fn($value) => Toolbox::stripTags(Dropdown::getDropdownName($table, $value)), - $values, - )); - - return implode(', ', $names); - } - - protected static function get_group_value(CommonGLPI $item, string $field = 'groups_id'): string - { - return self::get_dropdown_values('glpi_groups', $item->fields[$field] ?? []); - } - - protected static function get_group_column(CommonGLPI $item, string $field = 'groups_id', ?string $label = null): string - { - return self::get_label_value($label ?? __s('Group'), self::get_group_value($item, $field)); - } - - protected static function display_group_line(PluginPdfSimplePDF $pdf, CommonGLPI $item, string $right_column): void - { - $pdf->displayLine(self::get_group_column($item), $right_column); - } - /** * Constructor, should intialize $this->obj property **/ @@ -539,10 +505,35 @@ public static function mainLine(PluginPdfSimplePDF $pdf, $item, $field) ), ); case 'group-model': + $group_tech = Dropdown::getDropdownName( + 'glpi_groups', + $item->fields['groups_id_tech'], + ); + if (Toolbox::hasTrait($item::class, \Glpi\Features\AssignableItem::class)) { + $group_item = new Group_Item(); + $groups = $group_item->getItemsAssociatedTo($item::class, (int) $item->fields['id']); + $group_ids = []; + foreach ($groups as $group) { + if ((int) $group->fields['type'] === Group_Item::GROUP_TYPE_TECH) { + $group_ids[] = (int) $group->fields['groups_id']; + } + } + $group_names = array_filter(array_map( + static fn($group_id) => Toolbox::stripTags(Dropdown::getDropdownName('glpi_groups', $group_id)), + $group_ids, + )); + $group_tech = implode(', ', $group_names); + } + return $pdf->displayLine( - self::get_group_column($item, 'groups_id_tech', __s('Group in charge of the hardware')), - self::get_label_value( - __s('Model'), + '' . sprintf( + __s('%1$s: %2$s'), + __s('Group in charge of the hardware') . '', + $group_tech, + ), + '' . sprintf( + __s('%1$s: %2$s'), + __s('Model') . '', Toolbox::stripTags(Dropdown::getDropdownName( 'glpi_' . $type . 'models', $item->fields[$type . 'models_id'], diff --git a/inc/computer.class.php b/inc/computer.class.php index 8f1ef45..48d9680 100644 --- a/inc/computer.class.php +++ b/inc/computer.class.php @@ -85,12 +85,53 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Computer $computer) ), ); + $group = Dropdown::getDropdownName('glpi_groups', $computer->fields['groups_id']); + $group_tech = Dropdown::getDropdownName('glpi_groups', $computer->fields['groups_id_tech']); + if (Toolbox::hasTrait($computer::class, \Glpi\Features\AssignableItem::class)) { + $group_item = new Group_Item(); + $groups = $group_item->getItemsAssociatedTo($computer::class, (int) $computer->fields['id']); + + $group_ids = []; + $group_tech_ids = []; + foreach ($groups as $group_item_link) { + if ((int) $group_item_link->fields['type'] === Group_Item::GROUP_TYPE_NORMAL) { + $group_ids[] = (int) $group_item_link->fields['groups_id']; + } + if ((int) $group_item_link->fields['type'] === Group_Item::GROUP_TYPE_TECH) { + $group_tech_ids[] = (int) $group_item_link->fields['groups_id']; + } + } + + $group = implode(', ', array_filter(array_map( + static fn($group_id) => Toolbox::stripTags(Dropdown::getDropdownName('glpi_groups', $group_id)), + $group_ids, + ))); + $group_tech = implode(', ', array_filter(array_map( + static fn($group_id) => Toolbox::stripTags(Dropdown::getDropdownName('glpi_groups', $group_id)), + $group_tech_ids, + ))); + } + $pdf->displayLine( - self::get_group_column($computer), - self::get_group_column($computer, 'groups_id_tech', __('Group in charge of the hardware')), + '' . sprintf( + __('%1$s: %2$s'), + __('Group') . '', + $group, + ), + '' . sprintf( + __('%1$s: %2$s'), + __('Group in charge of the hardware') . '', + $group_tech, + ), ); - $pdf->displayLine(self::get_label_value(__('UUID'), $computer->fields['uuid'])); + $pdf->displayLine( + '' . sprintf( + __('%1$s: %2$s'), + __('UUID') . '', + $computer->fields['uuid'], + ), + ); $pdf->displayLine( '' . sprintf( diff --git a/inc/monitor.class.php b/inc/monitor.class.php index 63f3388..e9ad7ee 100644 --- a/inc/monitor.class.php +++ b/inc/monitor.class.php @@ -60,10 +60,31 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Monitor $item) PluginPdfCommon::mainLine($pdf, $item, 'contact-otherserial'); PluginPdfCommon::mainLine($pdf, $item, 'user-management'); - self::display_group_line( - $pdf, - $item, - self::get_label_value(__s('Size'), sprintf(__s('%1$s %2$s'), $item->fields['size'], '"')), + $group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']); + if (Toolbox::hasTrait($item::class, \Glpi\Features\AssignableItem::class)) { + $group_item = new Group_Item(); + $groups = $group_item->getItemsAssociatedTo($item::class, (int) $item->fields['id']); + + $group_ids = []; + foreach ($groups as $group_item_link) { + if ((int) $group_item_link->fields['type'] === Group_Item::GROUP_TYPE_NORMAL) { + $group_ids[] = (int) $group_item_link->fields['groups_id']; + } + } + + $group = implode(', ', array_filter(array_map( + static fn($group_id) => Toolbox::stripTags(Dropdown::getDropdownName('glpi_groups', $group_id)), + $group_ids, + ))); + } + + $pdf->displayLine( + '' . sprintf(__s('%1$s: %2$s'), __s('Group') . '', $group), + '' . sprintf( + __s('%1$s: %2$s'), + __s('Size') . '', + sprintf(__s('%1$s %2$s'), $item->fields['size'], '"'), + ), ); $opts = ['have_micro' => __s('Microphone'), diff --git a/inc/networkequipment.class.php b/inc/networkequipment.class.php index 24c45b4..a77b286 100644 --- a/inc/networkequipment.class.php +++ b/inc/networkequipment.class.php @@ -82,11 +82,30 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, NetworkEquipment $item) ), ); + $group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']); + if (Toolbox::hasTrait($item::class, \Glpi\Features\AssignableItem::class)) { + $group_item = new Group_Item(); + $groups = $group_item->getItemsAssociatedTo($item::class, (int) $item->fields['id']); + + $group_ids = []; + foreach ($groups as $group_item_link) { + if ((int) $group_item_link->fields['type'] === Group_Item::GROUP_TYPE_NORMAL) { + $group_ids[] = (int) $group_item_link->fields['groups_id']; + } + } + + $group = implode(', ', array_filter(array_map( + static fn($group_id) => Toolbox::stripTags(Dropdown::getDropdownName('glpi_groups', $group_id)), + $group_ids, + ))); + } + $pdf->displayLine( - self::get_group_column($item), + '' . sprintf(__s('%1$s: %2$s'), __s('Group') . '', $group), '' . __s('The MAC address and the IP of the equipment are included in an aggregated network port'), - self::get_label_value( - sprintf(__s('%1$s (%2$s)'), __s('Memory'), __s('Mio')), + '' . sprintf( + __s('%1$s: %2$s'), + sprintf(__s('%1$s (%2$s)'), __s('Memory'), __s('Mio')) . '', $item->fields['ram'], ), ); diff --git a/inc/peripheral.class.php b/inc/peripheral.class.php index 8b05244..04f2555 100644 --- a/inc/peripheral.class.php +++ b/inc/peripheral.class.php @@ -62,10 +62,27 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Peripheral $item) PluginPdfCommon::mainLine($pdf, $item, 'contact-otherserial'); PluginPdfCommon::mainLine($pdf, $item, 'user-management'); - self::display_group_line( - $pdf, - $item, - self::get_label_value(__s('Brand'), $item->fields['brand']), + $group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']); + if (Toolbox::hasTrait($item::class, \Glpi\Features\AssignableItem::class)) { + $group_item = new Group_Item(); + $groups = $group_item->getItemsAssociatedTo($item::class, (int) $item->fields['id']); + + $group_ids = []; + foreach ($groups as $group_item_link) { + if ((int) $group_item_link->fields['type'] === Group_Item::GROUP_TYPE_NORMAL) { + $group_ids[] = (int) $group_item_link->fields['groups_id']; + } + } + + $group = implode(', ', array_filter(array_map( + static fn($group_id) => Toolbox::stripTags(Dropdown::getDropdownName('glpi_groups', $group_id)), + $group_ids, + ))); + } + + $pdf->displayLine( + '' . sprintf(__s('%1$s: %2$s'), __s('Group') . '', $group), + '' . sprintf(__s('%1$s: %2$s'), __s('Brand') . '', $item->fields['brand']), ); $pdf->setColumnsSize(100); diff --git a/inc/phone.class.php b/inc/phone.class.php index 3efbeb6..dff1d64 100644 --- a/inc/phone.class.php +++ b/inc/phone.class.php @@ -63,10 +63,27 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Phone $item) PluginPdfCommon::mainLine($pdf, $item, 'user-management'); - self::display_group_line( - $pdf, - $item, - self::get_label_value(__s('UUID'), $item->fields['uuid']), + $group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']); + if (Toolbox::hasTrait($item::class, \Glpi\Features\AssignableItem::class)) { + $group_item = new Group_Item(); + $groups = $group_item->getItemsAssociatedTo($item::class, (int) $item->fields['id']); + + $group_ids = []; + foreach ($groups as $group_item_link) { + if ((int) $group_item_link->fields['type'] === Group_Item::GROUP_TYPE_NORMAL) { + $group_ids[] = (int) $group_item_link->fields['groups_id']; + } + } + + $group = implode(', ', array_filter(array_map( + static fn($group_id) => Toolbox::stripTags(Dropdown::getDropdownName('glpi_groups', $group_id)), + $group_ids, + ))); + } + + $pdf->displayLine( + '' . sprintf(__s('%1$s: %2$s'), __s('Group') . '', $group), + '' . sprintf(__s('%1$s: %2$s'), __s('UUID') . '', $item->fields['uuid']), ); $pdf->displayLine( diff --git a/inc/printer.class.php b/inc/printer.class.php index 428f862..474f6a7 100644 --- a/inc/printer.class.php +++ b/inc/printer.class.php @@ -95,10 +95,27 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Printer $printer) ), ); - self::display_group_line( - $pdf, - $printer, - self::get_label_value(__s('UUID'), $printer->fields['uuid']), + $group = Dropdown::getDropdownName('glpi_groups', $printer->fields['groups_id']); + if (Toolbox::hasTrait($printer::class, \Glpi\Features\AssignableItem::class)) { + $group_item = new Group_Item(); + $groups = $group_item->getItemsAssociatedTo($printer::class, (int) $printer->fields['id']); + + $group_ids = []; + foreach ($groups as $group_item_link) { + if ((int) $group_item_link->fields['type'] === Group_Item::GROUP_TYPE_NORMAL) { + $group_ids[] = (int) $group_item_link->fields['groups_id']; + } + } + + $group = implode(', ', array_filter(array_map( + static fn($group_id) => Toolbox::stripTags(Dropdown::getDropdownName('glpi_groups', $group_id)), + $group_ids, + ))); + } + + $pdf->displayLine( + '' . sprintf(__s('%1$s: %2$s'), __s('Group') . '', $group), + '' . sprintf(__s('%1$s: %2$s'), __s('UUID') . '', $printer->fields['uuid']), ); diff --git a/inc/software.class.php b/inc/software.class.php index 53aad79..2e2ec3b 100644 --- a/inc/software.class.php +++ b/inc/software.class.php @@ -89,15 +89,53 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Software $software) ), ); + $group = Dropdown::getDropdownName('glpi_groups', $software->fields['groups_id']); + $group_tech = Dropdown::getDropdownName('glpi_groups', $software->fields['groups_id_tech']); + if (Toolbox::hasTrait($software::class, \Glpi\Features\AssignableItem::class)) { + $group_item = new Group_Item(); + $groups = $group_item->getItemsAssociatedTo($software::class, (int) $software->fields['id']); + + $group_ids = []; + $group_tech_ids = []; + foreach ($groups as $group_item_link) { + if ((int) $group_item_link->fields['type'] === Group_Item::GROUP_TYPE_NORMAL) { + $group_ids[] = (int) $group_item_link->fields['groups_id']; + } + if ((int) $group_item_link->fields['type'] === Group_Item::GROUP_TYPE_TECH) { + $group_tech_ids[] = (int) $group_item_link->fields['groups_id']; + } + } + + $group = implode(', ', array_filter(array_map( + static fn($group_id) => Toolbox::stripTags(Dropdown::getDropdownName('glpi_groups', $group_id)), + $group_ids, + ))); + $group_tech = implode(', ', array_filter(array_map( + static fn($group_id) => Toolbox::stripTags(Dropdown::getDropdownName('glpi_groups', $group_id)), + $group_tech_ids, + ))); + } + $pdf->displayLine( - self::get_group_column($software, 'groups_id_tech', __s('Group in charge of the hardware')), - self::get_label_value( - __s('User'), + '' . sprintf( + __s('%1$s: %2$s'), + __s('Group in charge of the hardware') . '', + $group_tech, + ), + '' . sprintf( + __s('%1$s: %2$s'), + __s('User') . '', $dbu->getUserName($software->fields['users_id']), ), ); - $pdf->displayLine(self::get_group_column($software)); + $pdf->displayLine( + '' . sprintf( + __s('%1$s: %2$s'), + __s('Group') . '', + $group, + ), + ); $pdf->displayLine( '' . sprintf( From 9d121a6c2333df14aa602ba3bea689eb9219a098 Mon Sep 17 00:00:00 2001 From: mbressy Date: Thu, 30 Apr 2026 08:16:19 +0000 Subject: [PATCH 4/4] fix rector --- inc/common.class.php | 4 +++- inc/computer.class.php | 4 +++- inc/monitor.class.php | 4 +++- inc/networkequipment.class.php | 4 +++- inc/peripheral.class.php | 4 +++- inc/phone.class.php | 4 +++- inc/printer.class.php | 4 +++- inc/software.class.php | 4 +++- 8 files changed, 24 insertions(+), 8 deletions(-) diff --git a/inc/common.class.php b/inc/common.class.php index c5ddd8e..532e4a2 100644 --- a/inc/common.class.php +++ b/inc/common.class.php @@ -30,6 +30,8 @@ * -------------------------------------------------------------------------- */ +use Glpi\Features\AssignableItem; + abstract class PluginPdfCommon extends CommonGLPI { protected $obj = null; @@ -509,7 +511,7 @@ public static function mainLine(PluginPdfSimplePDF $pdf, $item, $field) 'glpi_groups', $item->fields['groups_id_tech'], ); - if (Toolbox::hasTrait($item::class, \Glpi\Features\AssignableItem::class)) { + if (Toolbox::hasTrait($item::class, AssignableItem::class)) { $group_item = new Group_Item(); $groups = $group_item->getItemsAssociatedTo($item::class, (int) $item->fields['id']); $group_ids = []; diff --git a/inc/computer.class.php b/inc/computer.class.php index 48d9680..fb614ad 100644 --- a/inc/computer.class.php +++ b/inc/computer.class.php @@ -30,6 +30,8 @@ * -------------------------------------------------------------------------- */ +use Glpi\Features\AssignableItem; + class PluginPdfComputer extends PluginPdfCommon { public static $rightname = 'plugin_pdf'; @@ -87,7 +89,7 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Computer $computer) $group = Dropdown::getDropdownName('glpi_groups', $computer->fields['groups_id']); $group_tech = Dropdown::getDropdownName('glpi_groups', $computer->fields['groups_id_tech']); - if (Toolbox::hasTrait($computer::class, \Glpi\Features\AssignableItem::class)) { + if (Toolbox::hasTrait($computer::class, AssignableItem::class)) { $group_item = new Group_Item(); $groups = $group_item->getItemsAssociatedTo($computer::class, (int) $computer->fields['id']); diff --git a/inc/monitor.class.php b/inc/monitor.class.php index e9ad7ee..ca94ee1 100644 --- a/inc/monitor.class.php +++ b/inc/monitor.class.php @@ -30,6 +30,8 @@ * -------------------------------------------------------------------------- */ +use Glpi\Features\AssignableItem; + class PluginPdfMonitor extends PluginPdfCommon { public static $rightname = 'plugin_pdf'; @@ -61,7 +63,7 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Monitor $item) PluginPdfCommon::mainLine($pdf, $item, 'user-management'); $group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']); - if (Toolbox::hasTrait($item::class, \Glpi\Features\AssignableItem::class)) { + if (Toolbox::hasTrait($item::class, AssignableItem::class)) { $group_item = new Group_Item(); $groups = $group_item->getItemsAssociatedTo($item::class, (int) $item->fields['id']); diff --git a/inc/networkequipment.class.php b/inc/networkequipment.class.php index a77b286..c632b30 100644 --- a/inc/networkequipment.class.php +++ b/inc/networkequipment.class.php @@ -30,6 +30,8 @@ * -------------------------------------------------------------------------- */ +use Glpi\Features\AssignableItem; + class PluginPdfNetworkEquipment extends PluginPdfCommon { public static $rightname = 'plugin_pdf'; @@ -83,7 +85,7 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, NetworkEquipment $item) ); $group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']); - if (Toolbox::hasTrait($item::class, \Glpi\Features\AssignableItem::class)) { + if (Toolbox::hasTrait($item::class, AssignableItem::class)) { $group_item = new Group_Item(); $groups = $group_item->getItemsAssociatedTo($item::class, (int) $item->fields['id']); diff --git a/inc/peripheral.class.php b/inc/peripheral.class.php index 04f2555..d12004d 100644 --- a/inc/peripheral.class.php +++ b/inc/peripheral.class.php @@ -30,6 +30,8 @@ * -------------------------------------------------------------------------- */ +use Glpi\Features\AssignableItem; + class PluginPdfPeripheral extends PluginPdfCommon { public static $rightname = 'plugin_pdf'; @@ -63,7 +65,7 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Peripheral $item) PluginPdfCommon::mainLine($pdf, $item, 'user-management'); $group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']); - if (Toolbox::hasTrait($item::class, \Glpi\Features\AssignableItem::class)) { + if (Toolbox::hasTrait($item::class, AssignableItem::class)) { $group_item = new Group_Item(); $groups = $group_item->getItemsAssociatedTo($item::class, (int) $item->fields['id']); diff --git a/inc/phone.class.php b/inc/phone.class.php index dff1d64..c7e61cc 100644 --- a/inc/phone.class.php +++ b/inc/phone.class.php @@ -30,6 +30,8 @@ * -------------------------------------------------------------------------- */ +use Glpi\Features\AssignableItem; + class PluginPdfPhone extends PluginPdfCommon { public static $rightname = 'plugin_pdf'; @@ -64,7 +66,7 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Phone $item) $group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']); - if (Toolbox::hasTrait($item::class, \Glpi\Features\AssignableItem::class)) { + if (Toolbox::hasTrait($item::class, AssignableItem::class)) { $group_item = new Group_Item(); $groups = $group_item->getItemsAssociatedTo($item::class, (int) $item->fields['id']); diff --git a/inc/printer.class.php b/inc/printer.class.php index 474f6a7..5523900 100644 --- a/inc/printer.class.php +++ b/inc/printer.class.php @@ -30,6 +30,8 @@ * -------------------------------------------------------------------------- */ +use Glpi\Features\AssignableItem; + class PluginPdfPrinter extends PluginPdfCommon { public static $rightname = 'plugin_pdf'; @@ -96,7 +98,7 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Printer $printer) ); $group = Dropdown::getDropdownName('glpi_groups', $printer->fields['groups_id']); - if (Toolbox::hasTrait($printer::class, \Glpi\Features\AssignableItem::class)) { + if (Toolbox::hasTrait($printer::class, AssignableItem::class)) { $group_item = new Group_Item(); $groups = $group_item->getItemsAssociatedTo($printer::class, (int) $printer->fields['id']); diff --git a/inc/software.class.php b/inc/software.class.php index 2e2ec3b..0be4cf8 100644 --- a/inc/software.class.php +++ b/inc/software.class.php @@ -30,6 +30,8 @@ * -------------------------------------------------------------------------- */ +use Glpi\Features\AssignableItem; + class PluginPdfSoftware extends PluginPdfCommon { public static $rightname = 'plugin_pdf'; @@ -91,7 +93,7 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Software $software) $group = Dropdown::getDropdownName('glpi_groups', $software->fields['groups_id']); $group_tech = Dropdown::getDropdownName('glpi_groups', $software->fields['groups_id_tech']); - if (Toolbox::hasTrait($software::class, \Glpi\Features\AssignableItem::class)) { + if (Toolbox::hasTrait($software::class, AssignableItem::class)) { $group_item = new Group_Item(); $groups = $group_item->getItemsAssociatedTo($software::class, (int) $software->fields['id']);