/**
* Print the HTML array for infocoms linked
*
*@return Nothing (display)
*
**/
function showInfocoms()
{
global $DB, $CFG_GLPI;
$instID = $this->fields['id'];
if (!$this->can($instID, 'r')) {
return false;
}
$query = "SELECT DISTINCT `itemtype`\n FROM `glpi_infocoms`\n WHERE `suppliers_id` = '{$instID}'\n AND `itemtype` NOT IN ('ConsumableItem', 'CartridgeItem', 'Software')\n ORDER BY `itemtype`";
$result = $DB->query($query);
$number = $DB->numrows($result);
echo "<div class='spaced'><table class='tab_cadre_fixe'>";
echo "<tr><th colspan='2'>";
Html::printPagerForm();
echo "</th><th colspan='3'>";
if ($DB->numrows($result) == 0) {
_e('No associated item');
} else {
echo _n('Associated item', 'Associated items', $DB->numrows($result));
}
echo "</th></tr>";
echo "<tr><th>" . __('Type') . "</th>";
echo "<th>" . __('Entity') . "</th>";
echo "<th>" . __('Name') . "</th>";
echo "<th>" . __('Serial number') . "</th>";
echo "<th>" . __('Inventory number') . "</th>";
echo "</tr>";
$num = 0;
for ($i = 0; $i < $number; $i++) {
$itemtype = $DB->result($result, $i, "itemtype");
if (!($item = getItemForItemtype($itemtype))) {
continue;
}
if ($item->canView()) {
$linktype = $itemtype;
$linkfield = 'id';
$itemtable = getTableForItemType($itemtype);
$query = "SELECT `glpi_infocoms`.`entities_id`, `name`, `{$itemtable}`.*\n FROM `glpi_infocoms`\n INNER JOIN `{$itemtable}` ON (`{$itemtable}`.`id` = `glpi_infocoms`.`items_id`) ";
// Set $linktype for entity restriction AND link to search engine
if ($itemtype == 'Cartridge') {
$query .= "INNER JOIN `glpi_cartridgeitems`\n ON (`glpi_cartridgeitems`.`id`=`glpi_cartridges`.`cartridgeitems_id`) ";
$linktype = 'CartridgeItem';
$linkfield = 'cartridgeitems_id';
}
if ($itemtype == 'Consumable') {
$query .= "INNER JOIN `glpi_consumableitems`\n ON (`glpi_consumableitems`.`id`=`glpi_consumables`.`consumableitems_id`) ";
$linktype = 'ConsumableItem';
$linkfield = 'consumableitems_id';
}
$linktable = getTableForItemType($linktype);
$query .= "WHERE `glpi_infocoms`.`itemtype` = '{$itemtype}'\n AND `glpi_infocoms`.`suppliers_id` = '{$instID}'" . getEntitiesRestrictRequest(" AND", $linktable) . "\n ORDER BY `glpi_infocoms`.`entities_id`,\n `{$linktable}`.`name`";
$result_linked = $DB->query($query);
$nb = $DB->numrows($result_linked);
// Set $linktype for link to search engine pnly
if ($itemtype == 'SoftwareLicense' && $nb > $_SESSION['glpilist_limit']) {
$linktype = 'Software';
$linkfield = 'softwares_id';
}
if ($nb > $_SESSION['glpilist_limit']) {
echo "<tr class='tab_bg_1'>";
$title = $item->getTypeName($nb);
if ($nb > 0) {
$title = sprintf(__('%1$s: %2$s'), $title, $nb);
}
echo "<td class='center'>" . $title . "</td>";
echo "<td class='center' colspan='2'>";
echo "<a href='" . Toolbox::getItemTypeSearchURL($linktype) . "?" . rawurlencode("contains[0]") . "=" . rawurlencode('$$$$' . $instID) . "&" . rawurlencode("field[0]") . "=53&sort=80&order=ASC&is_deleted=0&start=0" . "'>" . __('Device list') . "</a></td>";
echo "<td class='center'>-</td><td class='center'>-</td></tr>";
} else {
if ($nb) {
for ($prem = true; $data = $DB->fetch_assoc($result_linked); $prem = false) {
$name = $data["name"];
if ($_SESSION["glpiis_ids_visible"] || empty($data["name"])) {
$name = sprintf(__('%1$s (%2$s)'), $name, $data["id"]);
}
$link = Toolbox::getItemTypeFormURL($linktype);
$name = "<a href=\"" . $link . "?id=" . $data[$linkfield] . "\">" . $name . "</a>";
echo "<tr class='tab_bg_1'>";
if ($prem) {
$title = $item->getTypeName($nb);
if ($nb > 0) {
$title = sprintf(__('%1$s: %2$s'), $title, $nb);
}
echo "<td class='center top' rowspan='{$nb}'>" . $title . "</td>";
}
echo "<td class='center'>" . Dropdown::getDropdownName("glpi_entities", $data["entities_id"]) . "</td>";
echo "<td class='center";
echo (isset($data['is_deleted']) && $data['is_deleted'] ? " tab_bg_2_2'" : "'") . ">";
echo $name . "</td>";
echo "<td class='center'>" . (isset($data["serial"]) ? "" . $data["serial"] . "" : "-") . "</td>";
echo "<td class='center'>" . (isset($data["otherserial"]) ? "" . $data["otherserial"] . "" : "-") . "</td>";
echo "</tr>";
}
}
}
$num += $nb;
}
}
echo "<tr class='tab_bg_2'>";
echo "<td class='center'>" . ($num > 0 ? sprintf(__('%1$s = %2$s'), __('Total'), $num) : " ") . "</td>";
echo "<td colspan='4'> </td></tr> ";
echo "</table></div>";
}