/** * Function to update NetworkEquipment * * @param array $a_inventory data fron agent inventory * @param id $items_id id of the networkequipment * * @return nothing */ function updateNetworkEquipment($a_inventory, $items_id) { global $DB; $networkEquipment = new NetworkEquipment(); $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $networkEquipment->getFromDB($items_id); if (!isset($_SESSION['glpiactiveentities_string'])) { $_SESSION['glpiactiveentities_string'] = $networkEquipment->fields['entities_id']; } if (!isset($_SESSION['glpiactiveentities'])) { $_SESSION['glpiactiveentities'] = array($networkEquipment->fields['entities_id']); } if (!isset($_SESSION['glpiactive_entity'])) { $_SESSION['glpiactive_entity'] = $networkEquipment->fields['entities_id']; } // * NetworkEquipment $db_networkequipment = $networkEquipment->fields; $a_lockable = PluginFusioninventoryLock::getLockFields('glpi_networkequipments', $items_id); $a_ret = PluginFusioninventoryToolbox::checkLock($a_inventory['NetworkEquipment'], $db_networkequipment, $a_lockable); $a_inventory['NetworkEquipment'] = $a_ret[0]; $mac = $a_inventory['NetworkEquipment']['mac']; unset($a_inventory['NetworkEquipment']['mac']); $input = $a_inventory['NetworkEquipment']; $input['id'] = $items_id; $networkEquipment->update($input); $this->internalPorts($a_inventory['internalport'], $items_id, $mac, 'Internal'); // * NetworkEquipment fusion (ext) $db_networkequipment = array(); $query = "SELECT *\n FROM `" . getTableForItemType("PluginFusioninventoryNetworkEquipment") . "`\n WHERE `networkequipments_id` = '{$items_id}'"; $result = $DB->query($query); while ($data = $DB->fetch_assoc($result)) { foreach ($data as $key => $value) { $db_networkequipment[$key] = Toolbox::addslashes_deep($value); } } if (count($db_networkequipment) == '0') { // Add $a_inventory['PluginFusioninventoryNetworkEquipment']['networkequipments_id'] = $items_id; $pfNetworkEquipment->add($a_inventory['PluginFusioninventoryNetworkEquipment']); } else { // Update $idtmp = $db_networkequipment['id']; unset($db_networkequipment['id']); unset($db_networkequipment['networkequipments_id']); unset($db_networkequipment['plugin_fusioninventory_configsecurities_id']); $a_ret = PluginFusioninventoryToolbox::checkLock($a_inventory['PluginFusioninventoryNetworkEquipment'], $db_networkequipment); $a_inventory['PluginFusioninventoryNetworkEquipment'] = $a_ret[0]; $input = $a_inventory['PluginFusioninventoryNetworkEquipment']; $input['id'] = $idtmp; $pfNetworkEquipment->update($input); } // * Ports $this->importPorts($a_inventory, $items_id); }
function run($jobstate) { $pfAgent = new PluginFusioninventoryAgent(); $pfTaskjobstate = new PluginFusioninventoryTaskjobstate(); $pfTaskjoblog = new PluginFusioninventoryTaskjoblog(); $pfConfigSecurity = new PluginFusioninventoryConfigSecurity(); $pfToolbox = new PluginFusioninventoryToolbox(); $current = $jobstate; $pfAgent->getFromDB($current->fields['plugin_fusioninventory_agents_id']); $ip = current(PluginFusioninventoryToolbox::getIPforDevice($jobstate->fields['itemtype'], $jobstate->fields['items_id'])); if ($ip == '') { $pfTaskjobstate->changeStatusFinish($jobstate->fields['id'], $jobstate->fields['items_id'], $jobstate->fields['itemtype'], 1, "Device have no ip"); } else { $sxml_option = $this->message->addChild('OPTION'); $sxml_option->addChild('NAME', 'SNMPQUERY'); $sxml_param = $sxml_option->addChild('PARAM'); $sxml_param->addAttribute('THREADS_QUERY', $pfAgent->fields["threads_networkinventory"]); $sxml_param->addAttribute('TIMEOUT', $pfAgent->fields["timeout_networkinventory"]); $sxml_param->addAttribute('PID', $current->fields['id']); $changestate = 0; $taskjobstatedatas = $jobstate->fields; $sxml_device = $sxml_option->addChild('DEVICE'); $a_extended = array('plugin_fusioninventory_configsecurities_id' => 0); if ($jobstate->fields['itemtype'] == 'Printer') { $sxml_device->addAttribute('TYPE', 'PRINTER'); $pfPrinter = new PluginFusioninventoryPrinter(); $a_extended = current($pfPrinter->find("`printers_id`='" . $jobstate->fields['items_id'] . "'", '', 1)); } else { if ($jobstate->fields['itemtype'] == 'NetworkEquipment') { $sxml_device->addAttribute('TYPE', 'NETWORKING'); $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $a_extended = current($pfNetworkEquipment->find("`networkequipments_id`='" . $jobstate->fields['items_id'] . "'", '', 1)); } } $sxml_device->addAttribute('ID', $jobstate->fields['items_id']); $sxml_device->addAttribute('IP', $ip); $sxml_device->addAttribute('AUTHSNMP_ID', $a_extended['plugin_fusioninventory_configsecurities_id']); if ($changestate == '0') { $pfTaskjobstate->changeStatus($taskjobstatedatas['id'], 1); $pfTaskjoblog->addTaskjoblog($taskjobstatedatas['id'], '0', 'PluginFusioninventoryAgent', '1', $pfAgent->fields["threads_networkinventory"] . ' threads', $pfAgent->fields["timeout_networkinventory"] . ' timeout'); $changestate = $pfTaskjobstate->fields['id']; } else { $pfTaskjobstate->changeStatusFinish($taskjobstatedatas['id'], $taskjobstatedatas['items_id'], $taskjobstatedatas['itemtype'], 0, "Merged with " . $changestate); } $snmpauthlist = $pfConfigSecurity->find(); if (count($snmpauthlist)) { foreach ($snmpauthlist as $snmpauth) { $pfToolbox->addAuth($sxml_option, $snmpauth['id']); } } } return $this->message; }
/** * @test */ public function prepareDB() { global $DB; $DB->connect(); $entity = new Entity(); $computer = new Computer(); $pfAgent = new PluginFusioninventoryAgent(); $pfTask = new PluginFusioninventoryTask(); $pfTaskjob = new PluginFusioninventoryTaskjob(); $pfIPRange = new PluginFusioninventoryIPRange(); $networkEquipment = new NetworkEquipment(); $networkPort = new NetworkPort(); $printer = new Printer(); $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); // Create entities $_SESSION['glpiactive_entity'] = 0; $DB->query("INSERT INTO `glpi_entities`\n (`id`, `name`, `entities_id`, `completename`, `level`)\n VALUES (1, 'ent1', 0, 'Entité racine > ent1', 2)"); $DB->query("INSERT INTO `glpi_entities`\n (`id`, `name`, `entities_id`, `completename`, `level`)\n VALUES (2, 'ent2', 0, 'Entité racine > ent2', 2)"); $DB->query("INSERT INTO `glpi_entities`\n (`id`, `name`, `entities_id`, `completename`, `level`)\n VALUES (3, 'ent1.1', 1, 'Entité racine > ent1 > ent1.1', 3)"); // Create computers + agents $input = array('entities_id' => 0, 'name' => 'computer1'); $computers_id = $computer->add($input); $input = array('entities_id' => 0, 'name' => 'computer1', 'version' => '{"INVENTORY":"v2.3.11"}', 'device_id' => 'computer1', 'useragent' => 'FusionInventory-Agent_v2.3.11', 'computers_id' => $computers_id); $pfAgent->add($input); // Create Network Equipments $input = array('name' => 'sw0', 'entities_id' => 0); $networkEquipment->add($input); $input = array('entities_id' => 0, 'name' => 'management', 'items_id' => 1, 'itemtype' => 'NetworkEquipment', 'instantiation_type' => 'NetworkPortAggregate', 'NetworkName__ipaddresses' => array('-1' => '10.0.0.10')); $networkPort->splitInputForElements($input); $networkPort->add($input); $networkPort->updateDependencies(1); $input = array('networkequipments_id' => 1, 'plugin_fusioninventory_configsecurities_id' => 2); $pfNetworkEquipment->add($input); $input = array('name' => 'sw1', 'entities_id' => 1); $networkEquipment->add($input); $input = array('entities_id' => 1, 'name' => 'management', 'items_id' => 2, 'itemtype' => 'NetworkEquipment', 'instantiation_type' => 'NetworkPortAggregate', 'NetworkName__ipaddresses' => array('-1' => '10.0.0.11')); $networkPort->splitInputForElements($input); $networkPort->add($input); $networkPort->updateDependencies(1); $input = array('networkequipments_id' => 2, 'plugin_fusioninventory_configsecurities_id' => 2); $pfNetworkEquipment->add($input); $input = array('name' => 'sw2', 'entities_id' => 2); $networkEquipment->add($input); $input = array('entities_id' => 2, 'name' => 'management', 'items_id' => 3, 'itemtype' => 'NetworkEquipment', 'instantiation_type' => 'NetworkPortAggregate', 'NetworkName__ipaddresses' => array('-1' => '10.0.0.12')); $networkPort->splitInputForElements($input); $networkPort->add($input); $networkPort->updateDependencies(1); $input = array('networkequipments_id' => 3, 'plugin_fusioninventory_configsecurities_id' => 2); $pfNetworkEquipment->add($input); $input = array('name' => 'sw3/1.1', 'entities_id' => 3); $networkEquipment->add($input); $input = array('entities_id' => 3, 'name' => 'management', 'items_id' => 4, 'itemtype' => 'NetworkEquipment', 'instantiation_type' => 'NetworkPortAggregate', 'NetworkName__ipaddresses' => array('-1' => '10.0.0.21')); $networkPort->splitInputForElements($input); $networkPort->add($input); $networkPort->updateDependencies(1); $input = array('networkequipments_id' => 4, 'plugin_fusioninventory_configsecurities_id' => 2); $pfNetworkEquipment->add($input); // Create Printers // Add IPRange $input = array('entities_id' => 1, 'name' => 'Office', 'ip_start' => '10.0.0.1', 'ip_end' => '10.0.0.254'); $ipranges_id = $pfIPRange->add($input); // Allow all agents to do network discovery $query = "UPDATE `glpi_plugin_fusioninventory_agentmodules` " . " SET `is_active`='1' " . " WHERE `modulename`='NETWORKINVENTORY'"; $DB->query($query); // create task $input = array('entities_id' => 0, 'name' => 'network inventory', 'is_active' => 1); $tasks_id = $pfTask->add($input); // create taskjob $input = array('plugin_fusioninventory_tasks_id' => $tasks_id, 'entities_id' => 0, 'name' => 'inventory', 'method' => 'networkinventory', 'targets' => '[{"PluginFusioninventoryIPRange":"' . $ipranges_id . '"}]', 'actors' => '[{"PluginFusioninventoryAgent":"1"}]'); $pfTaskjob->add($input); }
static function convertArgument($services_id, $argument) { global $DB; $pmService = new PluginMonitoringService(); $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host(); $pmService->getFromDB($services_id); $pmComponentscatalog_Host->getFromDB($pmService->fields['plugin_monitoring_componentscatalogs_hosts_id']); $itemtype = $pmComponentscatalog_Host->fields['itemtype']; $item = new $itemtype(); $item->getFromDB($pmComponentscatalog_Host->fields['items_id']); $argument = str_replace("[", "", $argument); $argument = str_replace("]", "", $argument); $a_arg = explode(":", $argument); $devicetype = ''; $devicedata = array(); if ($itemtype == "NetworkPort") { $itemtype2 = $item->fields['itemtype']; $item2 = new $itemtype2(); $item2->getFromDB($item->fields['items_id']); $devicetype = $itemtype2; $devicedata = $item2->fields; } else { $devicetype = $itemtype; $devicedata = $item->fields; } if ($devicetype == "NetworkEquipment") { if (class_exists("PluginFusioninventoryNetworkEquipment")) { $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $a_pfNetworkEquipment = current($pfNetworkEquipment->find("`networkequipments_id`='".$devicedata['id']."'", "", 1)); switch ($a_arg[0]) { case 'OID': // Load SNMP model and get oid.portnum $query = "SELECT `glpi_plugin_fusioninventory_mappings`.`name` AS `mapping_name`, `glpi_plugin_fusioninventory_snmpmodelmibs`.* FROM `glpi_plugin_fusioninventory_snmpmodelmibs` LEFT JOIN `glpi_plugin_fusioninventory_mappings` ON `glpi_plugin_fusioninventory_snmpmodelmibs`.`plugin_fusioninventory_mappings_id`= `glpi_plugin_fusioninventory_mappings`.`id` WHERE `plugin_fusioninventory_snmpmodels_id`='".$a_pfNetworkEquipment['plugin_fusioninventory_snmpmodels_id']."' AND `is_active`='1' AND `oid_port_counter`='0' AND `glpi_plugin_fusioninventory_mappings`.`name`='".$a_arg[1]."'"; $result=$DB->query($query); while ($data=$DB->fetch_array($result)) { return Dropdown::getDropdownName('glpi_plugin_fusioninventory_snmpmodelmiboids',$data['plugin_fusioninventory_snmpmodelmiboids_id']). ".".$item->fields['logical_number']; } return ''; break; case 'SNMP': if ($a_pfNetworkEquipment['plugin_fusioninventory_configsecurities_id'] == '0') { switch ($a_arg[1]) { case 'version': return '2c'; break; case 'authentication': return 'public'; break; } } $pfConfigSecurity = new PluginFusioninventoryConfigSecurity(); $pfConfigSecurity->getFromDB($a_pfNetworkEquipment['plugin_fusioninventory_configsecurities_id']); switch ($a_arg[1]) { case 'version': if ($pfConfigSecurity->fields['snmpversion'] == '2') { $pfConfigSecurity->fields['snmpversion'] = '2c'; } return $pfConfigSecurity->fields['snmpversion']; break; case 'authentication': return $pfConfigSecurity->fields['community']; break; } break; } } } return $argument; }
FusionInventory is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with FusionInventory. If not, see <http://www.gnu.org/licenses/>. ------------------------------------------------------------------------ @package FusionInventory @author David Durieux @co-author @copyright Copyright (c) 2010-2014 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 http://forge.fusioninventory.org/projects/fusioninventory-for-glpi/ @since 2010 ------------------------------------------------------------------------ */ include "../../../inc/includes.php"; Session::checkRight('networking', READ); Session::checkRight('plugin_fusioninventory_networkequipment', UPDATE); if (isset($_POST['update']) && isset($_POST['id'])) { $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $pfNetworkEquipment->update_network_infos($_POST['id'], $_POST['model_infos'], $_POST['plugin_fusioninventory_configsecurities_id'], $_POST['sysdescr']); } Html::back();
/** * Function to import discovered device * * @param $items_id id of the device to import * * @return nothing * **/ function import($items_id, $Import = 0, $NoImport = 0) { global $DB; $NetworkPort = new NetworkPort(); $a_NetworkPorts = $NetworkPort->find("`items_id` = '" . $items_id . "'\n AND `itemtype` = 'PluginFusioninventoryUnmanaged'"); $this->getFromDB($items_id); $this->fields = Toolbox::addslashes_deep($this->fields); $data = array(); switch ($this->fields['item_type']) { case 'Printer': $Printer = new Printer(); $data["entities_id"] = $this->fields["entities_id"]; if (!empty($this->fields["name"])) { $data["name"] = $this->fields["name"]; } $data["locations_id"] = $this->fields["locations_id"]; $data["serial"] = $this->fields["serial"]; $data["otherserial"] = $this->fields["otherserial"]; $data["contact"] = $this->fields["contact"]; $data["domain"] = $this->fields["domain"]; $data["comment"] = $this->fields["comment"]; $data["is_dynamic"] = 1; $printer_id = $Printer->add($data); foreach ($a_NetworkPorts as $data_Port) { $data_Port['items_id'] = $printer_id; $data_Port['itemtype'] = $Printer->getType(); $NetworkPort->update($data_Port); } // Import SNMP $pfPrinter = new PluginFusioninventoryPrinter(); $_SESSION['glpi_plugins_fusinvsnmp_table'] = "glpi_plugin_fusioninventory_printers"; $query = "SELECT *\n FROM `glpi_plugin_fusioninventory_printers`\n WHERE `printers_id`='" . $printer_id . "' "; $result = $DB->query($query); $data = array(); if ($DB->numrows($result) > 0) { $data = $DB->fetch_assoc($result); } $data['sysdescr'] = $this->fields['sysdescr']; $data['plugin_fusioninventory_configsecurities_id'] = $this->fields['plugin_fusioninventory_configsecurities_id']; if ($DB->numrows($result) == 0) { $data['printers_id'] = $printer_id; $pfPrinter->add($data); } else { $pfPrinter->update($data); } $this->deleteFromDB($items_id, 1); $Import++; break; case 'NetworkEquipment': $NetworkEquipment = new NetworkEquipment(); $data["entities_id"] = $this->fields["entities_id"]; if (!empty($this->fields["name"])) { $data["name"] = $this->fields["name"]; } $data["locations_id"] = $this->fields["locations_id"]; $data["serial"] = $this->fields["serial"]; $data["otherserial"] = $this->fields["otherserial"]; $data["contact"] = $this->fields["contact"]; $data["domain"] = $this->fields["domain"]; $data["comment"] = $this->fields["comment"]; $data["is_dynamic"] = 1; // $data_Port = current($a_NetworkPorts); // $data["ip"] = $data_Port["ip"]; // $data["mac"] = $data_Port["mac"]; $NetworkEquipment_id = $NetworkEquipment->add($data); foreach ($a_NetworkPorts as $data_Port) { $data_Port['items_id'] = $NetworkEquipment_id; $data_Port['itemtype'] = $NetworkEquipment->getType(); $NetworkPort->update($data_Port); } $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $_SESSION['glpi_plugins_fusinvsnmp_table'] = "glpi_plugin_fusioninventory_networkequipments"; $query = "SELECT *\n FROM `glpi_plugin_fusioninventory_networkequipments`\n WHERE `networkequipments_id`='" . $NetworkEquipment_id . "' "; $result = $DB->query($query); $data = array(); if ($DB->numrows($result) > 0) { $data = $DB->fetch_assoc($result); } $data['sysdescr'] = $this->fields['sysdescr']; $data['plugin_fusioninventory_configsecurities_id'] = $this->fields['plugin_fusioninventory_configsecurities_id']; if ($DB->numrows($result) == 0) { $data['networkequipments_id'] = $NetworkEquipment_id; $pfNetworkEquipment->add($data); } else { $pfNetworkEquipment->update($data); } $this->deleteFromDB($items_id, 1); $Import++; break; case 'Peripheral': $Peripheral = new Peripheral(); $data["entities_id"] = $this->fields["entities_id"]; if (!empty($this->fields["name"])) { $data["name"] = $this->fields["name"]; } $data["locations_id"] = $this->fields["locations_id"]; $data["serial"] = $this->fields["serial"]; $data["otherserial"] = $this->fields["otherserial"]; $data["contact"] = $this->fields["contact"]; $data["comment"] = $this->fields["comment"]; $data["is_dynamic"] = 1; $Peripheral_id = $Peripheral->add($data); foreach ($a_NetworkPorts as $data_Port) { $data_Port['items_id'] = $Peripheral_id; $data_Port['itemtype'] = $Peripheral->getType(); $NetworkPort->update($data_Port); } $this->deleteFromDB($items_id, 1); $Import++; break; case 'Computer': $Computer = new Computer(); $data["entities_id"] = $this->fields["entities_id"]; if (!empty($this->fields["name"])) { $data["name"] = $this->fields["name"]; } $data["locations_id"] = $this->fields["locations_id"]; $data["serial"] = $this->fields["serial"]; $data["otherserial"] = $this->fields["otherserial"]; $data["contact"] = $this->fields["contact"]; $data["domain"] = $this->fields["domain"]; $data["comment"] = $this->fields["comment"]; $data["is_dynamic"] = 1; $Computer_id = $Computer->add($data); foreach ($a_NetworkPorts as $data_Port) { $data_Port['items_id'] = $Computer_id; $data_Port['itemtype'] = $Computer->getType(); $NetworkPort->update($data_Port); } $this->deleteFromDB($items_id, 1); $Import++; break; case 'Phone': $Phone = new Phone(); $data["entities_id"] = $this->fields["entities_id"]; $data["name"] = $this->fields["name"]; $data["locations_id"] = $this->fields["locations_id"]; $data["serial"] = $this->fields["serial"]; $data["otherserial"] = $this->fields["otherserial"]; $data["contact"] = $this->fields["contact"]; $data["comment"] = $this->fields["comment"]; $data["is_dynamic"] = 1; $phone_id = $Phone->add($data); foreach ($a_NetworkPorts as $data_Port) { $data_Port['items_id'] = $phone_id; $data_Port['itemtype'] = $Phone->getType(); $NetworkPort->update($data_Port); } $this->deleteFromDB($items_id, 1); $Import++; break; default: $NoImport++; break; } return array($Import, $NoImport); }
/** * @test */ public function NetworkEquipmentSnmpExtension() { global $DB; $DB->connect(); $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $a_networkequipment = current($pfNetworkEquipment->find("`networkequipments_id`='1'", "", 1)); unset($a_networkequipment['last_fusioninventory_update']); $a_reference = array('id' => '1', 'networkequipments_id' => '1', 'sysdescr' => 'Cisco IOS Software, C2960 Software (C2960-LANBASEK9-M), Version 12.2(50)SE4, RELEASE SOFTWARE (fc1) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2010 by Cisco Systems, Inc. Compiled Fri 26-Mar-10 09:14 by prod_rel_team', 'plugin_fusioninventory_configsecurities_id' => '0', 'uptime' => '157 days, 02:14:44.00', 'cpu' => '5', 'memory' => '18', 'last_PID_update' => '0', 'serialized_inventory' => NULL); $this->assertEquals($a_reference, $a_networkequipment); }
/** * Display informations about networkequipment (automatic inventory) * * @param type $networkequipments_id */ static function showInfo($item) { // Manage locks pictures PluginFusioninventoryLock::showLockIcon('NetworkEquipment'); $pfNetworkEquipment = new PluginFusioninventoryNetworkEquipment(); $a_networkequipmentextend = current($pfNetworkEquipment->find("`networkequipments_id`='" . $item->getID() . "'", "", 1)); if (empty($a_networkequipmentextend)) { return; } echo '<table class="tab_glpi" width="100%">'; echo '<tr>'; echo '<th colspan="2">' . __('FusionInventory', 'fusioninventory') . '</th>'; echo '</tr>'; echo '<tr class="tab_bg_1">'; echo '<td>'; echo __('Last inventory', 'fusioninventory'); echo '</td>'; echo '<td>'; echo Html::convDateTime($a_networkequipmentextend['last_fusioninventory_update']); echo '</td>'; echo '</tr>'; if ($a_networkequipmentextend['uptime'] != '') { echo '<tr class="tab_bg_1">'; echo '<td>' . __('Uptime', 'fusioninventory') . '</td>'; echo '<td>'; $sysUpTime = $a_networkequipmentextend['uptime']; $day = 0; $hour = 0; $minute = 0; $sec = 0; $ticks = 0; if (strstr($sysUpTime, "days")) { list($day, $hour, $minute, $sec, $ticks) = sscanf($sysUpTime, "%d days, %d:%d:%d.%d"); } else { if (strstr($sysUpTime, "hours")) { $day = 0; list($hour, $minute, $sec, $ticks) = sscanf($sysUpTime, "%d hours, %d:%d.%d"); } else { if (strstr($sysUpTime, "minutes")) { $day = 0; $hour = 0; list($minute, $sec, $ticks) = sscanf($sysUpTime, "%d minutes, %d.%d"); } else { if ($sysUpTime == "0") { $day = 0; $hour = 0; $minute = 0; $sec = 0; } else { list($hour, $minute, $sec, $ticks) = sscanf($sysUpTime, "%d:%d:%d.%d"); $day = 0; } } } } echo "<b>{$day}</b> " . __('day(s)', 'fusioninventory') . " "; echo "<b>{$hour}</b> " . __('hour(s)', 'fusioninventory') . " "; echo "<b>{$minute}</b> " . __('Minute(s)', 'fusioninventory') . " "; echo " " . __('and') . " <b>{$sec}</b> " . __('sec(s)', 'fusioninventory') . " "; echo '</td>'; echo '</tr>'; } echo '</table>'; }