/** * Get netwok ports for an object * for an authenticated user * * @param $protocol the commonication protocol used * @param $item_type : type of the item * @param $item_id : ID of the item * @param $id2name : translate id of dropdown to name * **/ static function getItemNetworkports($protocol, $item_type, $item_id, $id2name = false) { global $DB; $item = new $item_type(); $resp = array(); if ($item->getFromDB($item_id) && $item->canView()) { //Get all ports for the object $ports = getAllDatasFromTable('glpi_networkports', "`itemtype`='{$item_type}' AND `items_id`='{$item_id}'"); foreach ($ports as $port) { if ($id2name) { if ($port['networkinterfaces_id'] > 0) { $port['networkinterfaces_name'] = Html::clean(Dropdown::getDropdownName('glpi_networkinterfaces', $port['networkinterfaces_id'])); } } if ($port['netpoints_id'] > 0) { //Get netpoint informations $netpoint = new Netpoint(); $netpoint->getFromDB($port['netpoints_id']); if ($id2name) { $netpoint->fields['location_name'] = Html::clean(Dropdown::getDropdownName('glpi_locations', $netpoint->fields['locations_id'])); } $port['netpoints'][$netpoint->fields['id']] = $netpoint->fields; } //Get VLANS $vlan = new NetworkPort_Vlan(); $tmp = new Vlan(); foreach ($vlan->getVlansForNetworkPort($port['id']) as $vlans_id) { $tmp->getFromDB($vlans_id); $port['vlans'][$tmp->fields['id']] = $tmp->fields; } $resp[$port['id']] = $port; } } return $resp; }
/** * Transfer netpoint * * @param $netpoints_id netpoint ID * * @return new netpoint ID **/ function transferDropdownNetpoint($netpoints_id) { global $DB; if ($netpoints_id > 0) { if (isset($this->already_transfer['netpoints_id'][$netpoints_id])) { return $this->already_transfer['netpoints_id'][$netpoints_id]; } // else // Not already transfer // Search init item $netpoint = new Netpoint(); if ($netpoint->getFromDB($netpoints_id)) { $data = Toolbox::addslashes_deep($netpoint->fields); $locID = $this->transferDropdownLocation($netpoint->fields['locations_id']); // Search if the locations_id already exists in the destination entity $query = "SELECT `id`\n FROM `glpi_netpoints`\n WHERE `entities_id` = '" . $this->to . "'\n AND `name` = '" . $netpoint->fields['name'] . "'\n AND `locations_id` = '{$locID}'"; if ($result_search = $DB->query($query)) { // Found : -> use it if ($DB->numrows($result_search) > 0) { $newID = $DB->result($result_search, 0, 'id'); $this->addToAlreadyTransfer('netpoints_id', $netpoints_id, $newID); return $newID; } } // Not found : // add item $newID = $netpoint->add(array('name' => $data['name'], 'comment' => $data['comment'], 'entities_id' => $this->to, 'locations_id' => $locID)); $this->addToAlreadyTransfer('netpoints_id', $netpoints_id, $newID); return $newID; } } return 0; }
static function pdfForItem(PluginPdfSimplePDF $pdf, CommonDBTM $item) { global $DB; $ID = $item->getField('id'); $type = get_class($item); $query = "SELECT `glpi_networkports`.`id`\n FROM `glpi_networkports`\n WHERE `items_id` = '" . $ID . "'\n AND `itemtype` = '" . $type . "'\n ORDER BY `name`, `logical_number`"; $pdf->setColumnsSize(100); if ($result = $DB->query($query)) { $nb_connect = $DB->numrows($result); if (!$nb_connect) { $pdf->displayTitle('<b>0 ' . __('No network port found') . '</b>'); } else { $pdf->displayTitle('<b>' . sprintf(__('%1$s: %2$d'), _n('Network port', 'Network ports', $nb_connect), $nb_connect . "</b>")); while ($devid = $DB->fetch_row($result)) { $netport = new NetworkPort(); $netport->getfromDB(current($devid)); $instantiation_type = $netport->fields["instantiation_type"]; $instname = call_user_func(array($instantiation_type, 'getTypeName')); $pdf->displayTitle('<b>' . $instname . '</b>'); $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), '#</b>', $netport->fields["logical_number"])); $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), __('Name') . '</b>', $netport->fields["name"])); $contact = new NetworkPort(); $netport2 = new NetworkPort(); $add = __('Not connected.'); if ($cid = $contact->getContact($netport->fields["id"])) { if ($netport2->getFromDB($cid) && ($device2 = getItemForItemtype($netport2->fields["itemtype"]))) { if ($device2->getFromDB($netport2->fields["items_id"])) { $add = $netport2->getName() . ' ' . __('on') . ' ' . $device2->getName() . ' (' . $device2->getTypeName() . ')'; } } } if ($instantiation_type == 'NetworkPortEthernet') { $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), __('Connected to') . '</b>', $add)); $netportethernet = new NetworkPortEthernet(); $speed = $type = ''; if ($netportethernet->getFromDB($netport->fields['id'])) { $speed = NetworkPortEthernet::getPortSpeed($netportethernet->fields['speed']); $type = NetworkPortEthernet::getPortTypeName($netportethernet->fields['type']); } $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), __('Ethernet port speed') . '</b>', $speed)); $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), __('Ethernet port type') . '</b>', $type)); $netpoint = new Netpoint(); $outlet = ''; if ($netpoint->getFromDB($netportethernet->fields['netpoints_id'])) { $outlet = $netpoint->fields['name']; } $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), __('Network outlet') . '</b>', $outlet)); } $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), __('MAC') . '</b>', $netport->fields["mac"])); $sqlip = "LEFT JOIN `glpi_networknames`\n ON (`glpi_ipaddresses`.`items_id` = `glpi_networknames`.`id`\n AND `glpi_ipaddresses`.`entities_id`\n = '" . $_SESSION['glpiactive_entity'] . "')\n WHERE `glpi_networknames`.`items_id` = '" . $netport->fields["id"] . "'"; $ipname = ''; $ip = new IPAddress(); if ($ip->getFromDBByQuery($sqlip)) { $ipname = $ip->fields['name']; $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), __('ip') . '</b>', $ipname)); $sql = "SELECT `glpi_ipaddresses_ipnetworks`.`ipnetworks_id`\n FROM `glpi_ipaddresses_ipnetworks`\n LEFT JOIN `glpi_ipnetworks`\n ON (`glpi_ipaddresses_ipnetworks`.`ipnetworks_id` = `glpi_ipnetworks`.`id`)\n WHERE `glpi_ipaddresses_ipnetworks`.`ipaddresses_id` = '" . $ip->getID() . "'"; $res = $DB->query($sql); if ($res) { while ($row = $DB->fetch_assoc($res)) { $ipnetwork = new IPNetwork(); if ($ipnetwork->getFromDB($row['ipnetworks_id'])) { $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), __('IP network') . '</b>', $ipnetwork->fields['address'])); $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), __('Subnet mask') . '</b>', $ipnetwork->fields['netmask'])); $pdf->displayLine('<b>' . sprintf(__('%1$s: %2$s'), __('Gateway') . '</b>', $ipnetwork->fields['gateway'])); } } } } } // each port } // Found } // Query $pdf->displaySpace(); }