. * * ------------------------------------------------------------------------ * * This file is used to manage and display extended information of * network equipments. * * ------------------------------------------------------------------------ * * @package FusionInventory * @author Vincent Mazzoni * @author David Durieux * @copyright Copyright (c) 2010-2016 FusionInventory team * @license AGPL License 3.0 or (at your option) any later version * http://www.gnu.org/licenses/agpl-3.0-standalone.html * @link http://www.fusioninventory.org/ * @link https://github.com/fusioninventory/fusioninventory-for-glpi * */ if (!defined('GLPI_ROOT')) { die("Sorry. You can't access this file directly"); } /** * Manage and display extended information of network equipments. */ class PluginFusioninventoryNetworkEquipment extends PluginFusioninventoryItem { /** * The right name for this class * * @var string */ static $rightname = 'plugin_fusioninventory_networkequipment'; public $itemtype = 'NetworkEquipment'; /** * Get the tab name used for item * * @param object $item the item object * @param integer $withtemplate 1 if is a template form * @return string name of the tab */ function getTabNameForItem(CommonGLPI $item, $withtemplate = 0) { if ($this->canView()) { return self::createTabEntry(__('FusionInventory SNMP', 'fusioninventory')); } return ''; } /** * Display the content of the tab * * @param object $item * @param integer $tabnum number of the tab to display * @param integer $withtemplate 1 if is a template form * @return boolean */ static function displayTabContentForItem(CommonGLPI $item, $tabnum = 1, $withtemplate = 0) { if ($item->fields['id'] > 0) { $pfNetworkEquipment = new self(); $options = [ 'target' => Plugin::getWebDir('fusioninventory').'/front/switch_info.form.php' ]; switch (Session::getActiveTab('NetworkEquipment')) { case 'PluginFusioninventoryNetworkEquipment$1': $pfNetworkEquipment->showForm($item, $options); break; case 'NetworkPort$1': $pfNetworkEquipment->showExtendedInfos($item, $options); break; } } return true; } /** * Get the type of the itemtype * * @return string */ static function getType() { return "NetworkEquipment"; } /** * Display form * * @global object $DB * @global array $CFG_GLPI * @param object $item * @param array $options */ function showExtendedInfos(CommonDBTM $item, $options = []) { global $DB, $CFG_GLPI; if (!Session::haveRight('plugin_fusioninventory_networkequipment', READ)) { NetworkPort::showForItem($item); return; } $canedit = false; if (Session::haveRight('plugin_fusioninventory_networkequipment', UPDATE)) { $canedit = true; } $id = $item->getID(); if (!$data = $this->find(['networkequipments_id' => $id], [], 1)) { // Add in database if not exist $input = []; $input['networkequipments_id'] = $id; $_SESSION['glpi_plugins_fusinvsnmp_table'] = 'glpi_networkequipments'; $ID_tn = $this->add($input); $this->getFromDB($ID_tn); } else { foreach ($data as $datas) { $this->fields = $datas; } } if (!isset($_SESSION['plugin_fusioninventory_networkportview'])) { $_SESSION['plugin_fusioninventory_networkportview'] = 'fusioninventory'; } // Display glpi network port view if no fusionnetworkport $query = "SELECT glpi_plugin_fusioninventory_networkports.id FROM glpi_plugin_fusioninventory_networkports LEFT JOIN glpi_networkports ON glpi_plugin_fusioninventory_networkports.networkports_id = glpi_networkports.id WHERE glpi_networkports.items_id='".$id."' AND glpi_networkports.itemtype='NetworkEquipment'"; $result = $DB->query($query); if ($DB->numrows($result) == 0) { NetworkPort::showForItem($item); return; } echo "
"; echo __('Display the view', 'fusioninventory'); echo ' '.$_SESSION['plugin_fusioninventory_networkportview'].". "; echo __('If you prefer, you can display the view', 'fusioninventory'); echo ' '; if ($_SESSION['plugin_fusioninventory_networkportview'] == 'fusioninventory') { echo ''; } else { echo ''; } Html::closeForm(); if ($_SESSION['plugin_fusioninventory_networkportview'] == 'glpi') { NetworkPort::showForItem($item); return; } $canedit = $item->can($item->getID(), UPDATE); if ($canedit) { $networkPort = new NetworkPort(); echo "\n\n"; echo "\n"; echo "\n"; echo "
\n"; echo "\n"; echo "\n"; echo "
\n"; echo __('Network port type to be added'); echo " "; Dropdown::showFromArray('instantiation_type', NetworkPort::getNetworkPortInstantiationsWithNames(), ['value' => 'NetworkPortEthernet']); echo ""; echo __('Add several ports'); echo " \n"; echo "\n"; echo "
\n"; Html::closeForm(); } $monitoring = 0; if (class_exists("PluginMonitoringNetworkport")) { $monitoring = 1; } // * Get all ports compose tha aggregat $a_aggregated_ports = []; $query = "SELECT *, glpi_plugin_fusioninventory_networkports.mac as ifmacinternal FROM glpi_plugin_fusioninventory_networkports LEFT JOIN glpi_networkports ON glpi_plugin_fusioninventory_networkports.networkports_id = glpi_networkports.id WHERE glpi_networkports.items_id='".$id."' AND glpi_networkports.itemtype='NetworkEquipment' AND `instantiation_type`='NetworkPortAggregate' ORDER BY logical_number "; $result = $DB->query($query); while ($data = $DB->fetchArray($result)) { $query_ag = "SELECT * FROM `glpi_networkportaggregates` WHERE `networkports_id`='".$data['id']."' LIMIT 1"; $result_ag = $DB->query($query_ag); if ($DB->numrows($result_ag) > 0) { $data_ag = $DB->fetchAssoc($result_ag); $a_ports = importArrayFromDB($data_ag['networkports_id_list']); foreach ($a_ports as $port_id) { $a_aggregated_ports[$port_id] = $port_id; } } } $where = ''; if (count($a_aggregated_ports) > 0) { $where = "AND `glpi_networkports`.`id` NOT IN ". "('".implode("', '", $a_aggregated_ports)."')"; } $query = "SELECT `glpi_networkports`.`id`, `instantiation_type`, `ifdescr`, `glpi_plugin_fusioninventory_networkports`.`id` as `fusionid` FROM glpi_plugin_fusioninventory_networkports LEFT JOIN glpi_networkports ON glpi_plugin_fusioninventory_networkports.networkports_id = glpi_networkports.id WHERE glpi_networkports.items_id='".$id."' AND `glpi_networkports`.`itemtype`='NetworkEquipment' ".$where." AND NOT (glpi_networkports.name='general' AND glpi_networkports.logical_number=0) "; $nbcol = 5; if ($monitoring == '1') { if (Session::haveRight("plugin_monitoring_componentscatalog", READ)) { echo ""; echo ""; echo ""; } $nbcol++; } $a_pref = DisplayPreference::getForTypeUser('PluginFusioninventoryNetworkport', Session::getLoginUserID()); echo ""; $result = $this->showNetworkPortDetailHeader($monitoring, $query); if ($result) { $aDescr = []; $aResult = []; while ($data = $DB->fetchArray($result)) { $aDescr[] = $data['ifdescr']; $aResult[] = $data; } array_multisort($aDescr, SORT_ASC, SORT_NATURAL, $aResult); foreach ($aResult as $data) { $this->showNetworkPortDetail($data, $monitoring); if ($data['instantiation_type'] == 'NetworkPortAggregate') { $query_ag = "SELECT * FROM `glpi_networkportaggregates` WHERE `networkports_id`='".$data['id']."' LIMIT 1"; $result_ag = $DB->query($query_ag); if ($DB->numrows($result_ag) > 0) { $data_ag = $DB->fetchAssoc($result_ag); $a_ports = importArrayFromDB($data_ag['networkports_id_list']); foreach ($a_ports as $port_id) { $query_agp = " SELECT `glpi_networkports`.`id`, `instantiation_type`, `glpi_plugin_fusioninventory_networkports`.`id` as `fusionid` FROM glpi_plugin_fusioninventory_networkports LEFT JOIN glpi_networkports ON glpi_plugin_fusioninventory_networkports.networkports_id = glpi_networkports.id WHERE `glpi_networkports`.`id`='".$port_id."' LIMIT 1 "; $result_agp = $DB->query($query_agp); if ($DB->numrows($result_agp) > 0) { $data_agp = $DB->fetchAssoc($result_agp); $this->showNetworkPortDetail($data_agp, $monitoring, true); } } } } } } if ($monitoring == '1') { if (Session::haveRight("plugin_monitoring_componentscatalog", UPDATE)) { echo ""; echo ""; echo ""; echo ""; echo ""; } } echo "
"; echo ""; echo "
"; if ($monitoring == '1') { if (Session::haveRight("plugin_monitoring_componentscatalog", UPDATE)) { Html::closeForm(); } } } /** * Convert size of octets * * @param number $bytes * @param number $sizeoct * * @return better size format */ private function byteSize($bytes, $sizeoct = 1024) { $size = $bytes / $sizeoct; if ($size < $sizeoct) { $size = number_format($size, 0); $size .= ' K'; } else { if ($size / $sizeoct < $sizeoct) { $size = number_format($size / $sizeoct, 0); $size .= ' M'; } else if ($size / $sizeoct / $sizeoct < $sizeoct) { $size = number_format($size / $sizeoct / $sizeoct, 0); $size .= ' G'; } else if ($size / $sizeoct / $sizeoct / $sizeoct < $sizeoct) { $size = number_format($size / $sizeoct / $sizeoct / $sizeoct, 0); $size .= ' T'; } } return $size; } /** * Display connections with hub * * @param integer $items_id * @param string $background_img */ function displayHubConnections($items_id, $background_img) { $NetworkPort = new NetworkPort(); $a_ports = $NetworkPort->find( ['itemtype' => 'PluginFusioninventoryUnmanaged', 'items_id' => $items_id]); echo ""; foreach ($a_ports as $a_port) { if ($a_port['name'] != "Link") { $id = $NetworkPort->getContact($a_port['id']); if ($id) { $NetworkPort->getFromDB($id); $link = ''; $link1 = ''; $link2 = ''; if ($NetworkPort->fields['itemtype'] == 'PluginFusioninventoryUnmanaged') { $classname = $NetworkPort->fields['itemtype']; $item = new $classname; $item->getFromDB($NetworkPort->fields['items_id']); $link1 = $item->getLink(1); $link = str_replace($item->getName(0), $NetworkPort->fields["mac"], $item->getLink()); // Get ips $a_ips = PluginFusioninventoryToolbox::getIPforDevice( 'PluginFusioninventoryUnmanaged', $item->getID() ); $link2 = str_replace($item->getName(0), implode(", ", $a_ips), $item->getLink()); $icon = $this->getItemtypeIcon($item->fields["item_type"]); if ($item->fields['accepted'] == 1) { echo ""; echo ""; echo ""; echo ""; } else { $classname = $NetworkPort->fields['itemtype']; $item = new $classname; $item->getFromDB($NetworkPort->fields['items_id']); $link1 = $item->getLink(1); $link = str_replace($item->getName(0), $NetworkPort->fields["mac"], $item->getLink()); echo ""; $icon = $this->getItemtypeIcon($classname); echo ""; echo ""; } } } } echo "
".$icon.$item->getLink(1); } else { echo "
".$icon.$item->getLink(1); } if (!empty($link)) { echo "
".$link; } if (!empty($link2)) { echo "
".$link2; } echo "
".$icon.$item->getLink(1); if (!empty($link)) { echo "
".$link; } if (!empty($link2)) { echo "
".$link2; } echo "
"; } /** * Update the network equipement extended information * * @global object $DB * @param integer $id * @param integer $configsecurities_id * @param string $sysdescr */ function updateNetworkInfo($id, $configsecurities_id, $sysdescr) { global $DB; $query = "SELECT * FROM `glpi_plugin_fusioninventory_networkequipments` WHERE `networkequipments_id`='".$id."';"; $result = $DB->query($query); if ($DB->numrows($result) == "0") { $DB->insert( 'glpi_plugin_fusioninventory_networkequipments', [ 'networkequipments_id' => $id ] ); } if (empty($configsecurities_id)) { $configsecurities_id = 0; } $DB->update( 'glpi_plugin_fusioninventory_networkequipments', [ 'plugin_fusioninventory_configsecurities_id' => $configsecurities_id, 'sysdescr' => $sysdescr ], [ 'networkequipments_id' => $id ] ); } /** * Display informations about networkequipment (automatic inventory) * * @param object $item NetworkEquipment instance */ static function showInfo($item) { // Manage locks pictures PluginFusioninventoryLock::showLockIcon('NetworkEquipment'); $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $params = ['networkequipments_id' => $item->getID()]; if ($pfNetworkEquipment->getFromDBByCrit($params) === false) { return; } echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; if ($pfNetworkEquipment->fields['uptime'] != '') { echo ''; echo ''; echo ''; echo ''; } echo '
'.__('FusionInventory', 'fusioninventory').'
'; echo __('Last inventory', 'fusioninventory'); echo ''; echo Html::convDateTime($pfNetworkEquipment->fields['last_fusioninventory_update']); echo '
'.__('Uptime', 'fusioninventory').''; echo $pfNetworkEquipment->displayUptimeAsString($pfNetworkEquipment->fields['uptime']); echo '
'; } /** * Display network port detail header * * @global object $DB * @global array $CFG_GLPI * @param string $monitoring * @param string $query * @return object */ function showNetworkPortDetailHeader($monitoring, $query) { global $DB, $CFG_GLPI; $fi_path = Plugin::getWebDir('fusioninventory'); $a_pref = DisplayPreference::getForTypeUser('PluginFusioninventoryNetworkport', Session::getLoginUserID()); echo ""; echo ""; echo __('Ports array', 'fusioninventory'); $result = $DB->query($query); echo ' ('.$DB->numrows($result).')'; $tmp = " class='pointer' onClick=\""; $tmp .= Html::jsGetElementbyID('search_config_top'). ".dialog('open');\">"; $tmp .= Ajax::createIframeModalWindow('search_config_top', $CFG_GLPI["root_doc"]. "/front/displaypreference.form.php?itemtype=PluginFusioninventoryNetworkPort", ['title' => __('Select default items to show'), 'reloadonclose' => true, 'display' => false]); echo " \"".__s('Select"; echo ""; echo ""; echo ""; // Display legend echo " "; echo ""; echo ""; echo "".__('Name').""; if ($monitoring == '1') { echo "".__('Monitoring', 'fusioninventory').""; } foreach ($a_pref as $data_array) { echo ""; switch ($data_array) { case 3: echo __('MTU', 'fusioninventory'); break; case 5: echo __('Speed'); break; case 6: echo __('Internal status', 'fusioninventory'); break; case 7: echo __('Last Change', 'fusioninventory'); break; case 8: echo __('Traffic received/sent', 'fusioninventory'); break; case 9: echo __('Errors received/sent', 'fusioninventory'); break; case 10 : echo __('Duplex', 'fusioninventory'); break; case 11 : echo __('Internal MAC address', 'fusioninventory'); break; case 12: echo __('VLAN'); break; case 13: echo __('Connected to'); break; case 14: echo __('Connection'); break; case 15: echo __('Port not connected since', 'fusioninventory'); break; case 16: echo __('Alias', 'fusioninventory'); break; case 17: echo _n('Network outlet', 'Network outlets', 1); break; } echo ""; } echo ""; return $result; } /** * Display detail networkport based on glpi core networkport and fusioninventory * networkport * * @param array $data with id ant fusionid * @param boolean $monitoring true if monitoring installed && actived * @param boolean $aggrega true if this port is aggregate port * * @return nothing */ function showNetworkPortDetail($data, $monitoring, $aggrega = 0) { global $CFG_GLPI, $DB; $fi_path = Plugin::getWebDir('fusioninventory'); $nw = new NetworkPort_NetworkPort(); $networkName = new NetworkName(); $networkPort = new NetworkPort(); $pfNetworkPort = new PluginFusioninventoryNetworkPort(); $networkPortEthernet = new NetworkPortEthernet(); $iPAddress = new IPAddress(); $networkPort->getFromDB($data['id']); $pfNetworkPort->getFromDB($data['fusionid']); $background_img = ""; if (($pfNetworkPort->fields["trunk"] == "1") && (strstr($pfNetworkPort->fields["ifstatus"], "up") || $pfNetworkPort->fields["ifstatus"] == 1)) { $background_img = " style='background-image: url(\"".$fi_path."/pics/port_trunk.png\"); '"; } else if (PluginFusioninventoryNetworkPort::isPortHasMultipleMac($data['id']) && (strstr($pfNetworkPort->fields["ifstatus"], "up") || $pfNetworkPort->fields["ifstatus"] == 1)) { $background_img = " style='background-image: url(\"".$fi_path."/pics/multiple_mac_addresses.png\"); '"; } else if (strstr($pfNetworkPort->fields["ifstatus"], "up") || $pfNetworkPort->fields["ifstatus"] == 1) { $background_img = " style='background-image: url(\"".$fi_path."/pics/connected_trunk.png\"); '"; } echo ""; if ($aggrega) { echo ""; } if (!$aggrega) { if ($networkPort->fields['instantiation_type'] == 'NetworkPortAggregate') { echo ""; } else { echo ""; } } echo "". $networkPort->fields["name"].""; Html::showToolTip($pfNetworkPort->fields['ifdescr']); if (!$aggrega) { if ($networkPort->fields['instantiation_type'] == 'NetworkPortAggregate') { echo "".__('Aggregation port').""; } } if ($monitoring == '1') { echo ""; $state = PluginMonitoringNetworkport::isMonitoredNetworkport($data['id']); if (Session::haveRight("plugin_monitoring_componentscatalog", UPDATE)) { Html::showCheckbox(['name' => 'networkports_id[]', 'value' => $data['id'], 'checked' => $state]); } else if (Session::haveRight("plugin_monitoring_componentscatalog", READ)) { echo Dropdown::getYesNo($state); } echo ""; } $a_pref = DisplayPreference::getForTypeUser('PluginFusioninventoryNetworkport', Session::getLoginUserID()); foreach ($a_pref as $data_array) { switch ($data_array) { case 3: echo "".$pfNetworkPort->fields["ifmtu"].""; break; case 5: echo "".$this->byteSize($pfNetworkPort->fields["ifspeed"], 1000)."bps"; break; case 6: echo ""; if (strstr($pfNetworkPort->fields["ifstatus"], "up") || strstr($pfNetworkPort->fields["ifinternalstatus"], "1")) { echo ""; } else if (strstr($pfNetworkPort->fields["ifstatus"], "down") || strstr($pfNetworkPort->fields["ifinternalstatus"], "2")) { echo ""; } else if (strstr($pfNetworkPort->fields["ifstatus"], "testing") || strstr($pfNetworkPort->fields["ifinternalstatus"], "3")) { echo ""; } echo ""; break; case 7: echo "".$pfNetworkPort->fields["iflastchange"].""; break; case 8: echo ""; if ($pfNetworkPort->fields["ifinoctets"] == "0") { echo "-"; } else { echo $this->byteSize($pfNetworkPort->fields["ifinoctets"], 1000)."o"; } echo " / "; if ($pfNetworkPort->fields["ifinoctets"] == "0") { echo "-"; } else { echo $this->byteSize($pfNetworkPort->fields["ifoutoctets"], 1000)."o"; } echo ""; break; case 9: $color = ''; if ($pfNetworkPort->fields["ifinerrors"] != "0" || $pfNetworkPort->fields["ifouterrors"] != "0") { $color = "background='#cf9b9b' class='tab_bg_1_2'"; } if ($pfNetworkPort->fields["ifinerrors"] == "0") { echo "-"; } else { echo ""; echo $pfNetworkPort->fields["ifinerrors"]; } echo " / "; if ($pfNetworkPort->fields["ifouterrors"] == "0") { echo "-"; } else { echo $pfNetworkPort->fields["ifouterrors"]; } echo ""; break; case 10: if ($pfNetworkPort->fields["portduplex"] == 2) { echo ""; echo __('Half', 'fusioninventory'); echo ''; } else if ($pfNetworkPort->fields["portduplex"] == 3) { echo ''; echo __('Full', 'fusioninventory'); echo ''; } else { echo ""; } break; case 11: // ** internal mac echo "".$networkPort->fields["mac"].""; break; case 13: // ** Mac address and link to device which are connected to this port $opposite_port = $nw->getOppositeContact($data["id"]); if ($opposite_port != "" && $opposite_port != 0) { $networkPortOpposite = new NetworkPort(); if ($networkPortOpposite->getFromDB($opposite_port)) { $data_device = $networkPortOpposite->fields; $item = new $data_device["itemtype"]; $item->getFromDB($data_device["items_id"]); $link1 = $item->getLink(1); $link = str_replace($item->getName(0), $data_device["mac"], $item->getLink()); $link2 = ''; // * GetIP $a_networknames = current($networkName->find( ['itemtype' => 'NetworkPort', 'items_id' => $opposite_port], [], 1)); if (isset($a_networknames['id'])) { $a_ipaddresses = current($iPAddress->find( ['itemtype' => 'NetworkName', 'items_id' => $a_networknames['id']], [], 1)); $link2 = str_replace($item->getName(0), $a_ipaddresses['name'], $item->getLink()); } if ($data_device["itemtype"] == 'PluginFusioninventoryUnmanaged') { $icon = $this->getItemtypeIcon($item->fields["item_type"]); if ($item->getField("accepted") == "1") { echo "".$icon.$link1; } else { echo "".$icon.$link1; } if (!empty($link)) { echo "
".$link; } if (!empty($link2)) { echo "
".$link2; } if ($item->getField("hub") == "1") { $this->displayHubConnections($data_device["items_id"], $background_img); } echo ""; } else { $icon = $this->getItemtypeIcon($data_device["itemtype"]); echo "".$icon.$link1; if (!empty($link)) { echo "
".$link; } if (!empty($link2)) { echo "
".$link2; } if ($data_device["itemtype"] == 'Phone') { $query_devicephone = "SELECT * FROM `glpi_networkports` WHERE `itemtype`='Phone' AND `items_id`='".$data_device["items_id"]."' AND `id`!='".$data_device["id"]."' LIMIT 1"; $result_devicephone = $DB->query($query_devicephone); if ($DB->numrows($result_devicephone) > 0) { $data_devicephone = $DB->fetchAssoc($result_devicephone); $computer_ports_id = $nw->getOppositeContact($data_devicephone["id"]); if ($computer_ports_id) { $networkport = new NetworkPort(); $networkport->getFromDB($computer_ports_id); if ($networkport->fields['itemtype'] == 'Computer') { echo "
"; echo " "; $computer = new Computer(); $computer->getFromDB($networkport->fields["items_id"]); $link1 = $computer->getLink(1); $link = str_replace($computer->getName(0), $networkport->fields["mac"], $computer->getLink()); $link2 = str_replace($computer->getName(0), $networkport->fields["ip"], $computer->getLink()); echo $icon.$link1; if (!empty($link)) { echo "
".$link; } if (!empty($link2)) { echo "
".$link2; } } } } } echo ""; } } else { echo ""; } } else { echo ""; } break; case 14: // ** Connection status echo ""; if (strstr($pfNetworkPort->fields["ifstatus"], "up") || strstr($pfNetworkPort->fields["ifstatus"], "1")) { echo ""; } else if (strstr($pfNetworkPort->fields["ifstatus"], "down") || strstr($pfNetworkPort->fields["ifstatus"], "2")) { echo ""; } else if (strstr($pfNetworkPort->fields["ifstatus"], "testing") || strstr($pfNetworkPort->fields["ifstatus"], "3")) { echo ""; } else if (strstr($pfNetworkPort->fields["ifstatus"], "dormant") || strstr($pfNetworkPort->fields["ifstatus"], "5")) { echo ""; } echo ""; break; case 12: echo ""; $canedit = Session::haveRight('networking', UPDATE); $used = []; $query_vlan = "SELECT * FROM glpi_networkports_vlans WHERE networkports_id='".$data["id"]."'"; $result_vlan = $DB->query($query_vlan); if ($DB->numrows($result_vlan) > 0) { echo ""; while ($line = $DB->fetchArray($result_vlan)) { $used[] = $line["vlans_id"]; $vlan = new Vlan(); $vlan->getFromDB($line["vlans_id"]); if ($line['tagged'] == '1') { $state = 'T'; } else { $state = 'U'; } echo ""; echo ""; } echo "
" . $vlan->fields['name']." [".$vlan->fields['tag']."] " . $state; echo ""; if ($canedit) { echo ""; echo "".
                                __("; } else { echo " "; } echo "
"; } else { echo " "; } echo ""; break; case 15: echo ""; if ($pfNetworkPort->fields['ifstatus'] == 1) { echo __('Connected'); } else if ($pfNetworkPort->fields['lastup'] == "") { echo '-'; } else { $time = strtotime(date('Y-m-d H:i:s')) - strtotime($pfNetworkPort->fields['lastup']); echo Html::timestampToString($time, false); } echo ""; break; case 16: echo "".$pfNetworkPort->fields["ifalias"].""; break; case 17: echo ""; if ($networkPort->fields['instantiation_type'] == 'NetworkPortEthernet') { $npes = $networkPortEthernet->find(['networkports_id' => $networkPort->fields['id']], [], 1); foreach ($npes as $npe) { echo Dropdown::getDropdownName("glpi_netpoints", $npe["netpoints_id"]); } } echo ""; break; } } echo ""; } /** * Get the icon related to the itemtype * * @global array $CFG_GLPI * @param string $itemtype * @return string */ function getItemtypeIcon($itemtype) { global $CFG_GLPI; $icon = false; switch ($itemtype) { case 'Computer': $icon = "computer_icon.png"; break; case 'Phone': $icon = "phone_icon.png"; break; case 'NetworkEquipment': $icon = "network_icon.png"; break; } if ($icon) { return " "; } else { return ''; } } function addMoreInfos($options = []) { global $DB; echo ""; echo ""; echo __('CPU usage (in %)', 'fusioninventory'); echo ""; echo ""; Html::displayProgressBar(250, $this->fields['cpu'], ['simple' => true]); echo ""; echo ""; echo ""; echo ""; echo __('Memory usage (in %)', 'fusioninventory'); echo ""; echo ""; $params = [ 'FROM' => 'glpi_networkequipments', 'FIELDS' => ['ram'], 'WHERE' => [ 'id' => $this->fields['networkequipments_id'] ], 'LIMIT' => 1 ]; $iterator = $DB->request($params); if ($iterator->numrows()) { $ram_pourcentage = 0; $data = $iterator->next(); if (!empty($data["ram"]) && !empty($this->fields['memory'])) { $ram_pourcentage = ceil((100 * ($data["ram"] - $this->fields['memory'])) / $data["ram"]); } if ((($data["ram"] - $this->fields['memory']) < 0) || (empty($this->fields['memory']))) { echo "
".__('No data available', 'fusioninventory')."
"; } else { Html::displayProgressBar(250, $ram_pourcentage, ['title' => " (".($data["ram"] - $this->fields['memory']).__('Mio')." / ". $data["ram"].__('Mio').")"]); } } echo ""; echo ""; } }