From 1c9ec7e61bd4c5040c6cd8f950a0de13d1220696 Mon Sep 17 00:00:00 2001 From: grillodemetal <63513821+grillodemetal@users.noreply.github.com> Date: Thu, 28 May 2026 15:12:49 -0500 Subject: [PATCH] Refactor getOCSServerForItem method for error handling --- src/Ocslink.php | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/src/Ocslink.php b/src/Ocslink.php index 97575480..589948a4 100644 --- a/src/Ocslink.php +++ b/src/Ocslink.php @@ -1006,26 +1006,34 @@ public static function getHistoryEntry($data) * * @return int */ - public static function getOCSServerForItem(CommonGLPI $item) - { - global $DB; - $dbu = new DbUtils(); - $query = "SELECT * - FROM `glpi_plugin_ocsinventoryng_ocslinks` - WHERE `computers_id` = " . $item->getID() . " " . - $dbu->getEntitiesRestrictRequest("AND", "glpi_plugin_ocsinventoryng_ocslinks"); + public static function getOCSServerForItem(CommonGLPI $item) + { + global $DB; - $result = $DB->doQuery($query); - if ($DB->numrows($result) > 0) { - $data = $DB->fetchAssoc($result); + // Evita errores con objetos virtuales del plugin PDF + if (!method_exists($item, 'getID')) { + return 0; + } - if (count($data)) { - return $data['plugin_ocsinventoryng_ocsservers_id']; - } + $dbu = new DbUtils(); - return false; - } - } + $query = "SELECT * + FROM `glpi_plugin_ocsinventoryng_ocslinks` + WHERE `computers_id` = " . $item->getID() . " " . + $dbu->getEntitiesRestrictRequest("AND", "glpi_plugin_ocsinventoryng_ocslinks"); + + $result = $DB->doQuery($query); + + if ($DB->numrows($result) > 0) { + $data = $DB->fetchAssoc($result); + + if (count($data)) { + return $data['plugin_ocsinventoryng_ocsservers_id']; + } + } + + return 0; + } /** * Make the item link between glpi and ocs.