Skip to content
Open
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
27 changes: 23 additions & 4 deletions inc/common.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
* --------------------------------------------------------------------------
*/

use Glpi\Features\AssignableItem;

abstract class PluginPdfCommon extends CommonGLPI
{
protected $obj = null;
Expand Down Expand Up @@ -505,14 +507,31 @@ 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, 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(
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('Group in charge of the hardware') . '</i></b>',
Dropdown::getDropdownName(
'glpi_groups',
$item->fields['groups_id_tech'],
),
$group_tech,
),
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
Expand Down
48 changes: 43 additions & 5 deletions inc/computer.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
* --------------------------------------------------------------------------
*/

use Glpi\Features\AssignableItem;

class PluginPdfComputer extends PluginPdfCommon
{
public static $rightname = 'plugin_pdf';
Expand Down Expand Up @@ -85,16 +87,52 @@ 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, 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(
'<b><i>' . sprintf(
__('%1$s: %2$s'),
__('Group') . '</i></b>',
Dropdown::getDropdownName(
'glpi_groups',
$computer->fields['groups_id'],
),
$group,
),
'<b><i>' . sprintf(
__('%1$s: %2$s'),
__('Group in charge of the hardware') . '</i></b>',
$group_tech,
),
);

$pdf->displayLine(
'<b><i>' . sprintf(
__('%1$s: %2$s'),
__('UUID') . '</i></b>',
$computer->fields['uuid'],
),
'<b><i>' . sprintf(__('%1$s: %2$s'), __('UUID') . '</i></b>', $computer->fields['uuid']),
);

$pdf->displayLine(
Expand Down
26 changes: 21 additions & 5 deletions inc/monitor.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
* --------------------------------------------------------------------------
*/

use Glpi\Features\AssignableItem;

class PluginPdfMonitor extends PluginPdfCommon
{
public static $rightname = 'plugin_pdf';
Expand Down Expand Up @@ -60,12 +62,26 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Monitor $item)
PluginPdfCommon::mainLine($pdf, $item, 'contact-otherserial');
PluginPdfCommon::mainLine($pdf, $item, 'user-management');

$group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']);
if (Toolbox::hasTrait($item::class, 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(
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('Group') . '</i></b>',
Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']),
),
'<b><i>' . sprintf(__s('%1$s: %2$s'), __s('Group') . '</i></b>', $group),
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('Size') . '</i></b>',
Expand Down
26 changes: 21 additions & 5 deletions inc/networkequipment.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
* --------------------------------------------------------------------------
*/

use Glpi\Features\AssignableItem;

class PluginPdfNetworkEquipment extends PluginPdfCommon
{
public static $rightname = 'plugin_pdf';
Expand Down Expand Up @@ -82,12 +84,26 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, NetworkEquipment $item)
),
);

$group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']);
if (Toolbox::hasTrait($item::class, 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(
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('Group') . '</i></b>',
Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']),
),
'<b><i>' . sprintf(__s('%1$s: %2$s'), __s('Group') . '</i></b>', $group),
'<b><i>' . __s('The MAC address and the IP of the equipment are included in an aggregated network port'),
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
Expand Down
26 changes: 21 additions & 5 deletions inc/peripheral.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
* --------------------------------------------------------------------------
*/

use Glpi\Features\AssignableItem;

class PluginPdfPeripheral extends PluginPdfCommon
{
public static $rightname = 'plugin_pdf';
Expand Down Expand Up @@ -62,12 +64,26 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Peripheral $item)
PluginPdfCommon::mainLine($pdf, $item, 'contact-otherserial');
PluginPdfCommon::mainLine($pdf, $item, 'user-management');

$group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']);
if (Toolbox::hasTrait($item::class, 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(
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('Group') . '</i></b>',
Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']),
),
'<b><i>' . sprintf(__s('%1$s: %2$s'), __s('Group') . '</i></b>', $group),
'<b><i>' . sprintf(__s('%1$s: %2$s'), __s('Brand') . '</i></b>', $item->fields['brand']),
);

Expand Down
32 changes: 22 additions & 10 deletions inc/phone.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
* --------------------------------------------------------------------------
*/

use Glpi\Features\AssignableItem;

class PluginPdfPhone extends PluginPdfCommon
{
public static $rightname = 'plugin_pdf';
Expand Down Expand Up @@ -63,17 +65,27 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Phone $item)
PluginPdfCommon::mainLine($pdf, $item, 'user-management');


$group = Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']);
if (Toolbox::hasTrait($item::class, 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(
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('Group') . '</i></b>',
Dropdown::getDropdownName('glpi_groups', $item->fields['groups_id']),
),
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('UUID') . '</i></b>',
$item->fields['uuid'],
),
'<b><i>' . sprintf(__s('%1$s: %2$s'), __s('Group') . '</i></b>', $group),
'<b><i>' . sprintf(__s('%1$s: %2$s'), __s('UUID') . '</i></b>', $item->fields['uuid']),
);

$pdf->displayLine(
Expand Down
32 changes: 22 additions & 10 deletions inc/printer.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
* --------------------------------------------------------------------------
*/

use Glpi\Features\AssignableItem;

class PluginPdfPrinter extends PluginPdfCommon
{
public static $rightname = 'plugin_pdf';
Expand Down Expand Up @@ -95,17 +97,27 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Printer $printer)
),
);

$group = Dropdown::getDropdownName('glpi_groups', $printer->fields['groups_id']);
if (Toolbox::hasTrait($printer::class, 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(
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('Group') . '</i></b>',
Dropdown::getDropdownName('glpi_groups', $printer->fields['groups_id']),
),
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('UUID') . '</i></b>',
$printer->fields['uuid'],
),
'<b><i>' . sprintf(__s('%1$s: %2$s'), __s('Group') . '</i></b>', $group),
'<b><i>' . sprintf(__s('%1$s: %2$s'), __s('UUID') . '</i></b>', $printer->fields['uuid']),
);


Expand Down
36 changes: 31 additions & 5 deletions inc/software.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
* --------------------------------------------------------------------------
*/

use Glpi\Features\AssignableItem;

class PluginPdfSoftware extends PluginPdfCommon
{
public static $rightname = 'plugin_pdf';
Expand Down Expand Up @@ -89,14 +91,38 @@ 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, 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(
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('Group in charge of the hardware') . '</i></b>',
Dropdown::getDropdownName(
'glpi_groups',
$software->fields['groups_id_tech'],
),
$group_tech,
),
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
Expand All @@ -109,7 +135,7 @@ public static function pdfMain(PluginPdfSimplePDF $pdf, Software $software)
'<b><i>' . sprintf(
__s('%1$s: %2$s'),
__s('Group') . '</i></b>',
Dropdown::getDropdownName('glpi_groups', $software->fields['groups_id']),
$group,
),
);

Expand Down