/**
* Generate link
*
* @param $link string original string content
* @param $item CommonDBTM object: item used to make replacements
*
* @return array of link contents (may have several when item have several IP / MAC cases)
**/
static function generateLinkContents($link, CommonDBTM $item)
{
global $DB;
if (strstr($link, "[ID]")) {
$link = str_replace("[ID]", $item->fields['id'], $link);
}
if (strstr($link, "[LOGIN]") && isset($_SESSION["glpiname"])) {
$link = str_replace("[LOGIN]", $_SESSION["glpiname"], $link);
}
if (strstr($link, "[NAME]")) {
$link = str_replace("[NAME]", $item->getName(), $link);
}
if (strstr($link, "[SERIAL]") && $item->isField('serial')) {
$link = str_replace("[SERIAL]", $item->getField('serial'), $link);
}
if (strstr($link, "[OTHERSERIAL]") && $item->isField('otherserial')) {
$link = str_replace("[OTHERSERIAL]", $item->getField('otherserial'), $link);
}
if (strstr($link, "[LOCATIONID]") && $item->isField('locations_id')) {
$link = str_replace("[LOCATIONID]", $item->getField('locations_id'), $link);
}
if (strstr($link, "[LOCATION]") && $item->isField('locations_id')) {
$link = str_replace("[LOCATION]", Dropdown::getDropdownName("glpi_locations", $item->getField('locations_id')), $link);
}
if (strstr($link, "[NETWORK]") && $item->isField('networks_id')) {
$link = str_replace("[NETWORK]", Dropdown::getDropdownName("glpi_networks", $item->getField('networks_id')), $link);
}
if (strstr($link, "[DOMAIN]") && $item->isField('domains_id')) {
$link = str_replace("[DOMAIN]", Dropdown::getDropdownName("glpi_domains", $item->getField('domains_id')), $link);
}
if (strstr($link, "[USER]") && $item->isField('users_id')) {
$link = str_replace("[USER]", Dropdown::getDropdownName("glpi_users", $item->getField('users_id')), $link);
}
if (strstr($link, "[GROUP]") && $item->isField('groups_id')) {
$link = str_replace("[GROUP]", Dropdown::getDropdownName("glpi_groups", $item->getField('groups_id')), $link);
}
if (strstr($link, "[REALNAME]") && $item->isField('realname')) {
$link = str_replace("[REALNAME]", $item->getField('realname'), $link);
}
if (strstr($link, "[FIRSTNAME]") && $item->isField('firstname')) {
$link = str_replace("[FIRSTNAME]", $item->getField('firstname'), $link);
}
$replace_IP = strstr($link, "[IP]");
$replace_MAC = strstr($link, "[MAC]");
if (!$replace_IP && !$replace_MAC) {
return array($link);
}
// Return several links id several IP / MAC
$ipmac = array();
if (get_class($item) == 'NetworkEquipment') {
if ($replace_IP) {
$query2 = "SELECT `glpi_ipaddresses`.`id`,\n `glpi_ipaddresses`.`name` AS ip\n FROM `glpi_networknames`, `glpi_ipaddresses`\n WHERE `glpi_networknames`.`items_id` = '" . $item->getID() . "'\n AND `glpi_networknames`.`itemtype` = 'NetworkEquipment'\n AND `glpi_ipaddresses`.`itemtype` = 'NetworkName'\n AND `glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`";
foreach ($DB->request($query2) as $data2) {
$ipmac['ip' . $data2['id']]['ip'] = $data2["ip"];
$ipmac['ip' . $data2['id']]['mac'] = $item->getField('mac');
}
}
if ($replace_MAC) {
// If there is no entry, then, we must at least define the mac of the item ...
if (count($ipmac) == 0) {
$ipmac['mac0']['ip'] = '';
$ipmac['mac0']['mac'] = $item->getField('mac');
}
}
}
if ($replace_IP) {
$query2 = "SELECT `glpi_ipaddresses`.`id`,\n `glpi_networkports`.`mac`,\n `glpi_ipaddresses`.`name` AS ip\n FROM `glpi_networkports`, `glpi_networknames`, `glpi_ipaddresses`\n WHERE `glpi_networkports`.`items_id` = '" . $item->getID() . "'\n AND `glpi_networkports`.`itemtype` = '" . $item->getType() . "'\n AND `glpi_networknames`.`itemtype` = 'NetworkPort'\n AND `glpi_networknames`.`items_id` = `glpi_networkports`.`id`\n AND `glpi_ipaddresses`.`itemtype` = 'NetworkName'\n AND `glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`";
foreach ($DB->request($query2) as $data2) {
$ipmac['ip' . $data2['id']]['ip'] = $data2["ip"];
$ipmac['ip' . $data2['id']]['mac'] = $data2["mac"];
}
}
if ($replace_MAC) {
$left = '';
$where = '';
if ($replace_IP) {
$left = " LEFT JOIN `glpi_networknames`\n ON (`glpi_networknames`.`items_id` = `glpi_networkports`.`id`\n AND `glpi_networknames`.`itemtype` = 'NetworkPort')";
$where = " AND `glpi_networknames`.`id` IS NULL";
}
$query2 = "SELECT `glpi_networkports`.`id`,\n `glpi_networkports`.`mac`\n FROM `glpi_networkports`\n {$left}\n WHERE `glpi_networkports`.`items_id` = '" . $item->getID() . "'\n AND `glpi_networkports`.`itemtype` = '" . $item->getType() . "'\n {$where}\n GROUP BY `glpi_networkports`.`mac`";
foreach ($DB->request($query2) as $data2) {
$ipmac['mac' . $data2['id']]['ip'] = '';
$ipmac['mac' . $data2['id']]['mac'] = $data2["mac"];
}
}
$links = array();
if (count($ipmac) > 0) {
foreach ($ipmac as $key => $val) {
$tmplink = $link;
$disp = 1;
if (strstr($link, "[IP]")) {
if (empty($val['ip'])) {
$disp = 0;
} else {
$tmplink = str_replace("[IP]", $val['ip'], $tmplink);
}
}
if (strstr($link, "[MAC]")) {
if (empty($val['mac'])) {
$disp = 0;
} else {
$tmplink = str_replace("[MAC]", $val['mac'], $tmplink);
}
}
if ($disp) {
$links[$key] = $tmplink;
}
}
}
if (count($links)) {
return $links;
}
return array($link);
}