Html::back(); } else { if (isset($_POST["purge"])) { $nn->check($_POST['id'], PURGE); $nn->delete($_POST, 1); Event::log($_POST["id"], "networkname", 5, "inventory", sprintf(__('%s purges an item'), $_SESSION["glpiname"])); if ($node = getItemForItemtype($nn->fields["itemtype"])) { if ($node->can($nn->fields["items_id"], READ)) { Html::redirect($node->getLinkURL()); } } $nn->redirectToList(); } else { if (isset($_POST["update"])) { $nn->check($_POST['id'], UPDATE); $nn->update($_POST); Event::log($_POST["id"], "networkname", 4, "inventory", sprintf(__('%s updates an item'), $_SESSION["glpiname"])); Html::back(); } else { if (isset($_POST["unaffect"])) { $nn->check($_POST['id'], UPDATE); $nn->unaffectAddressByID($_POST['id']); Event::log($_POST["id"], "networkname", 4, "inventory", sprintf(__('%s updates an item'), $_SESSION["glpiname"])); if ($node = getItemForItemtype($nn->fields["itemtype"])) { if ($node->can($nn->fields["items_id"], READ)) { Html::redirect($node->getLinkURL()); } } $nn->redirectToList(); } else { if (isset($_POST['assign_address'])) {
/** * \brief update all related elements after adding or updating an element * * splitInputForElements() prepare the data for adding or updating NetworkPortInstantiation and * NetworkName. This method will update NetworkPortInstantiation and NetworkName. I must be call * after NetworkPort::add or NetworkPort::update otherwise, the networkport ID will not be known * and the dependencies won't have a valid items_id field. * * @since version 0.84 * * @param $history (default 1) * * @see splitInputForElements() for preparing the input **/ function updateDependencies($history = 1) { $instantiation = $this->getInstantiation(); if ($instantiation !== false && count($this->input_for_instantiation) > 0) { $this->input_for_instantiation['networkports_id'] = $this->getID(); if ($instantiation->isNewID($instantiation->getID())) { $instantiation->add($this->input_for_instantiation, $history); } else { $instantiation->update($this->input_for_instantiation, $history); } } unset($this->input_for_instantiation); if (count($this->input_for_NetworkName) > 0 && !isset($_POST['several'])) { // Check to see if the NetworkName is empty $empty_networkName = empty($this->input_for_NetworkName['name']) && empty($this->input_for_NetworkName['fqdns_id']); if ($empty_networkName && is_array($this->input_for_NetworkName['_ipaddresses'])) { foreach ($this->input_for_NetworkName['_ipaddresses'] as $ip_address) { if (!empty($ip_address)) { $empty_networkName = false; break; } } } $network_name = new NetworkName(); if (isset($this->input_for_NetworkName['id'])) { if ($empty_networkName) { // If the NetworkName is empty, then delete it ! $network_name->delete($this->input_for_NetworkName, $history); } else { // Else, update it $network_name->update($this->input_for_NetworkName, $history); } } else { if (!$empty_networkName) { // Only create a NetworkName if it is not empty $this->input_for_NetworkName['itemtype'] = 'NetworkPort'; $this->input_for_NetworkName['items_id'] = $this->getID(); $network_name->add($this->input_for_NetworkName, $history); } } } unset($this->input_for_NetworkName); if (count($this->input_for_NetworkPortConnect) > 0) { if (isset($this->input_for_NetworkPortConnect['networkports_id_1']) && isset($this->input_for_NetworkPortConnect['networkports_id_2']) && !empty($this->input_for_NetworkPortConnect['networkports_id_2'])) { $nn = new NetworkPort_NetworkPort(); $nn->add($this->input_for_NetworkPortConnect); } } unset($this->input_for_NetworkPortConnect); }
/** * Import IPs * * @param $p_ips IPs code to import * @param $networkequipments_id id of network equipment * * @return errors string to be alimented if import ko / '' if ok **/ function internalPorts($a_ips, $networkequipments_id, $mac, $networkname_name) { $networkPort = new NetworkPort(); $iPAddress = new IPAddress(); $pfUnmanaged = new PluginFusioninventoryUnmanaged(); $networkName = new NetworkName(); // Get agregated ports $a_networkPortAggregates = current($networkPort->find("`itemtype`='NetworkEquipment'\n AND `items_id`='" . $networkequipments_id . "'\n AND `instantiation_type`='NetworkPortAggregate'\n AND `logical_number` = '0'", '', 1)); $a_ips_DB = array(); $networkports_id = 0; if (isset($a_networkPortAggregates['id'])) { $a_networkPortAggregates['mac'] = $mac; $networkPort->update($a_networkPortAggregates); $networkports_id = $a_networkPortAggregates['id']; } else { $input = array(); $input['itemtype'] = 'NetworkEquipment'; $input['items_id'] = $networkequipments_id; $input['instantiation_type'] = 'NetworkPortAggregate'; $input['name'] = 'general'; $input['mac'] = $mac; $networkports_id = $networkPort->add($input); } // Get networkname $a_networknames_find = current($networkName->find("`items_id`='" . $networkports_id . "'\n AND `itemtype`='NetworkPort'", "", 1)); $networknames_id = 0; if (isset($a_networknames_find['id'])) { $networknames_id = $a_networknames_find['id']; $a_networknames_find['name'] = $networkname_name; $networkName->update($a_networknames_find); } else { $input = array(); $input['items_id'] = $networkports_id; $input['itemtype'] = 'NetworkPort'; $input['name'] = $networkname_name; $networknames_id = $networkName->add($input); } $a_ips_fromDB = $iPAddress->find("`itemtype`='NetworkName'\n AND `items_id`='" . $networknames_id . "'"); foreach ($a_ips_fromDB as $data) { $a_ips_DB[$data['id']] = $data['name']; } foreach ($a_ips as $key => $ip) { foreach ($a_ips_DB as $keydb => $ipdb) { if ($ip == $ipdb) { unset($a_ips[$key]); unset($a_ips_DB[$keydb]); break; } } } if (count($a_ips) == 0 and count($a_ips_DB) == 0) { // Nothing to do } else { if (count($a_ips_DB) != 0 && count($a_ips) != 0) { // Delete IPs in DB foreach ($a_ips_DB as $idtmp => $ip) { $iPAddress->delete(array('id' => $idtmp)); } } if (count($a_ips) != 0) { foreach ($a_ips as $ip) { if ($ip != '127.0.0.1') { $input = array(); $input['entities_id'] = 0; $input['itemtype'] = 'NetworkName'; $input['items_id'] = $networknames_id; $input['name'] = $ip; $iPAddress->add($input); // Search in unmanaged device if device with IP (LLDP) is yet added, in this case, // we get id of this unmanaged device $a_manageds = $pfUnmanaged->find("`ip`='" . $ip . "'", "", 1); if (count($a_manageds) > 0) { $datas = current($a_unmanageds); $this->unmanagedCDP = $datas['id']; } } } } } }