Ejemplo n.º 1
0
 /**
  * \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);
 }
Ejemplo n.º 2
0
 /**
  * Connect this port to another one in DB
  *
  *@param $destination_port ID of destination port
  *@return nothing
  **/
 function connectDB($destination_port = '')
 {
     global $DB;
     $ptap = new PluginFusioninventoryAgentsProcesses();
     $queryVerif = "SELECT *\n                     FROM `glpi_networking_wire`\n                     WHERE `end1` IN ('" . $this->getValue('ID') . "', '" . $destination_port . "')\n                           AND `end2` IN ('" . $this->getValue('ID') . "', '" . $destination_port . "');";
     if ($resultVerif = $DB->query($queryVerif)) {
         if ($DB->numrows($resultVerif) == "0") {
             // no existing connection between those 2 ports
             $this->disconnectDB($this->getValue('ID'));
             // disconnect this port
             $this->disconnectDB($destination_port);
             // disconnect destination port
             $nn = new NetworkPort_NetworkPort();
             if ($nn->add(array('networkports_id_1' => $this->getValue('ID'), 'networkports_id_2' => $destination_port))) {
                 //connect those 2 ports
                 $ptap->updateProcess($_SESSION['glpi_plugin_fusioninventory_processnumber'], array('query_nb_connections_created' => '1'));
                 PluginFusioninventorySnmphistory::addLogConnection("make", $this->getValue('ID'));
             }
         }
     }
 }
 function hubNetwork($p_oPort)
 {
     global $DB;
     $nw = new Netwire();
     $np = new Netport();
     $nn = new NetworkPort_NetworkPort();
     // List of macs : $p_oPort->getPortsToConnect
     // recherche dans unknown_device table le hub
     // qui a un port connecte sur le $port_ID
     // Get port connected on switch port
     if ($ID = $nw->getOppositeContact($p_oPort->getValue('ID'))) {
         $np->getFromDB($ID);
         if ($np->fields["device_type"] == $this->type) {
             $this->getFromDB($np->fields["on_device"]);
             if ($this->fields["hub"] == "1") {
                 // We will update ports and wire
                 return;
             }
         }
     }
     // sinon on cree un nouveau unknown_device type hub
     // + creation des ports qui sont connectes aux mac
     $input = array();
     $input['hub'] = "1";
     $input['name'] = "hub";
     $id_unknown = $this->add($input);
     $input = array();
     $input["on_device"] = $id_unknown;
     $input["device_type"] = $this->type;
     $input["name"] = "Link";
     $id_port = $np->add($input);
     $nn->add(array('networkports_id_1' => $p_oPort->getValue('ID'), 'networkports_id_2' => $id_port));
     foreach ($p_oPort->getMacsToConnect() as $ifmac) {
         $input = array();
         $input["on_device"] = $id_unknown;
         $input["device_type"] = $this->type;
         $id_port = $np->add($input);
         // TODO : recherche le port qui a cet $ifmac
         $query = "SELECT * FROM `glpi_networking_ports`\n            WHERE `ifmac` = '" . $ifmac . "' ";
         $result = $DB->query($query);
         if ($DB->numrows($result) == 1) {
             $line = $DB->fetch_assoc($result);
             $nn->add(array('networkports_id_1' => $line['ID'], 'networkports_id_2' => $id_port));
         } else {
             // Create device inconnu
         }
     }
 }
 /**
  * Creation of a hub
  *
  * @param $pfNetworkport object Informations of the network port
  *
  * @return id of the hub (unmanageddevice)
  *
  **/
 function createHub($pfNetworkport, $a_mac)
 {
     $Netport = new NetworkPort();
     $nn = new NetworkPort_NetworkPort();
     //$pfAgentsProcesses = new PluginFusionInventoryAgentsProcesses;
     // Find in the mac connected to the if they are in hub without link port connected
     foreach ($a_mac as $ifmac) {
         $a_ports = $Netport->find("`mac`='" . $ifmac . "'");
         foreach ($a_ports as $data) {
             $ID = $nn->getOppositeContact($pfNetworkport->getNetworkPorts_id());
             if ($ID) {
                 $Netport->getFromDB($ID);
                 if ($Netport->fields["itemtype"] == $this->getType()) {
                     if ($this->fields["hub"] == "1") {
                         $a_portLink = $Netport->find("`name`='Link'\n                        AND `items_id`='" . $this->fields['id'] . "'\n                        AND `itemtype`='" . $this->getType() . "'");
                         foreach ($a_portLink as $dataLink) {
                             if ($nn->getOppositeContact($dataLink['id'])) {
                             } else {
                                 // We have founded a hub orphelin
                                 $this->disconnectDB($pfNetworkport->fields['networkports_id']);
                                 $this->disconnectDB($dataLink['id']);
                                 $nn->add(array('networkports_id_1' => $pfNetworkport->fields['networkports_id'], 'networkports_id_2' => $dataLink['id']));
                                 $this->releaseHub($this->fields['id'], $pfNetworkport, $a_mac);
                                 return $this->fields['id'];
                             }
                         }
                     }
                 }
             }
         }
     }
     // Not found, creation hub and link port
     $input = array();
     $input['hub'] = "1";
     $input['name'] = "hub";
     if (isset($_SESSION["plugin_fusioninventory_entity"])) {
         $input['entities_id'] = $_SESSION["plugin_fusioninventory_entity"];
     }
     $hub_id = $this->add($input);
     $input = array();
     $input["items_id"] = $hub_id;
     $input["itemtype"] = $this->getType();
     $input["name"] = "Link";
     $input['instantiation_type'] = "NetworkPortEthernet";
     $port_id = $Netport->add($input);
     $this->disconnectDB($pfNetworkport->fields['networkports_id']);
     $this->disconnectDB($port_id);
     if ($nn->add(array('networkports_id_1' => $pfNetworkport->fields['networkports_id'], 'networkports_id_2' => $port_id))) {
     }
     return $hub_id;
 }
Ejemplo n.º 5
0
function plugin_item_purge_fusioninventory($parm)
{
    switch (get_class($parm)) {
        case 'NetworkPort_NetworkPort':
            // If remove connection of a hub port (unknown device), we must delete this port too
            $NetworkPort = new NetworkPort();
            $NetworkPort_Vlan = new NetworkPort_Vlan();
            $pfUnmanaged = new PluginFusioninventoryUnmanaged();
            $networkPort_NetworkPort = new NetworkPort_NetworkPort();
            $a_hubs = array();
            $port_id = $NetworkPort->getContact($parm->getField('networkports_id_1'));
            $NetworkPort->getFromDB($parm->getField('networkports_id_1'));
            if ($NetworkPort->fields['itemtype'] == 'PluginFusioninventoryUnmanaged') {
                $pfUnmanaged->getFromDB($NetworkPort->fields['items_id']);
                if ($pfUnmanaged->fields['hub'] == '1') {
                    $a_hubs[$NetworkPort->fields['items_id']] = 1;
                    $NetworkPort->delete($NetworkPort->fields);
                }
            }
            $NetworkPort->getFromDB($port_id);
            if ($port_id) {
                if ($NetworkPort->fields['itemtype'] == 'PluginFusioninventoryUnmanaged') {
                    $pfUnmanaged->getFromDB($NetworkPort->fields['items_id']);
                    if ($pfUnmanaged->fields['hub'] == '1') {
                        $a_hubs[$NetworkPort->fields['items_id']] = 1;
                    }
                }
            }
            $port_id = $NetworkPort->getContact($parm->getField('networkports_id_2'));
            $NetworkPort->getFromDB($parm->getField('networkports_id_2'));
            if ($NetworkPort->fields['itemtype'] == 'PluginFusioninventoryUnmanaged') {
                if ($pfUnmanaged->getFromDB($NetworkPort->fields['items_id'])) {
                    if ($pfUnmanaged->fields['hub'] == '1') {
                        $a_vlans = $NetworkPort_Vlan->getVlansForNetworkPort($NetworkPort->fields['id']);
                        foreach ($a_vlans as $vlan_id) {
                            $NetworkPort_Vlan->unassignVlan($NetworkPort->fields['id'], $vlan_id);
                        }
                        $a_hubs[$NetworkPort->fields['items_id']] = 1;
                        $NetworkPort->delete($NetworkPort->fields);
                    }
                }
            }
            if ($port_id) {
                $NetworkPort->getFromDB($port_id);
                if ($NetworkPort->fields['itemtype'] == 'PluginFusioninventoryUnmanaged') {
                    $pfUnmanaged->getFromDB($NetworkPort->fields['items_id']);
                    if ($pfUnmanaged->fields['hub'] == '1') {
                        $a_hubs[$NetworkPort->fields['items_id']] = 1;
                    }
                }
            }
            // If hub have no port, delete it
            foreach (array_keys($a_hubs) as $unkowndevice_id) {
                $a_networkports = $NetworkPort->find("`itemtype`='PluginFusioninventoryUnmanaged'\n               AND `items_id`='" . $unkowndevice_id . "' ");
                if (count($a_networkports) < 2) {
                    $pfUnmanaged->delete(array('id' => $unkowndevice_id), 1);
                } else {
                    if (count($a_networkports) == '2') {
                        $switchPorts_id = 0;
                        $otherPorts_id = 0;
                        foreach ($a_networkports as $data) {
                            if ($data['name'] == 'Link') {
                                $switchPorts_id = $NetworkPort->getContact($data['id']);
                            } else {
                                if ($otherPorts_id == '0') {
                                    $otherPorts_id = $NetworkPort->getContact($data['id']);
                                } else {
                                    $switchPorts_id = $NetworkPort->getContact($data['id']);
                                }
                            }
                        }
                        $pfUnmanaged->disconnectDB($switchPorts_id);
                        // disconnect this port
                        $pfUnmanaged->disconnectDB($otherPorts_id);
                        // disconnect destination port
                        $networkPort_NetworkPort->add(array('networkports_id_1' => $switchPorts_id, 'networkports_id_2' => $otherPorts_id));
                    }
                }
            }
            break;
        case 'NetworkEquipment':
            // Delete all ports
            $query_delete = "DELETE FROM `glpi_plugin_fusioninventory_networkequipments`\n                          WHERE `networkequipments_id`='" . $parm->fields["id"] . "';";
            $DB->query($query_delete);
            $query_select = "SELECT `glpi_plugin_fusioninventory_networkports`.`id`,\n                              `glpi_networkports`.`id` as nid\n                          FROM `glpi_plugin_fusioninventory_networkports`\n                               LEFT JOIN `glpi_networkports`\n                                         ON `glpi_networkports`.`id` = `networkports_id`\n                          WHERE `items_id`='" . $parm->fields["id"] . "'\n                                AND `itemtype`='NetworkEquipment';";
            $result = $DB->query($query_select);
            while ($data = $DB->fetch_array($result)) {
                $query_delete = "DELETE FROM `glpi_plugin_fusioninventory_networkports`\n                             WHERE `id`='" . $data["id"] . "';";
                $DB->query($query_delete);
                $query_delete = "DELETE FROM `glpi_plugin_fusinvsnmp_networkportlogs`\n                           WHERE `networkports_id`='" . $data['nid'] . "'";
                $DB->query($query_delete);
            }
            break;
        case "Printer":
            $query_delete = "DELETE FROM `glpi_plugin_fusioninventory_printers`\n                          WHERE `printers_id`='" . $parm->fields["id"] . "';";
            $DB->query($query_delete);
            $query_delete = "DELETE FROM `glpi_plugin_fusioninventory_printercartridges`\n                          WHERE `printers_id`='" . $parm->fields["id"] . "';";
            $DB->query($query_delete);
            $query_delete = "DELETE FROM `glpi_plugin_fusioninventory_printerlogs`\n                          WHERE `printers_id`='" . $parm->fields["id"] . "';";
            $DB->query($query_delete);
            break;
        case 'PluginFusioninventoryUnmanaged':
            $query_delete = "DELETE FROM `glpi_plugin_fusinvsnmp_unmanageds`\n                          WHERE `plugin_fusioninventory_unmanageds_id`='" . $parm->fields["id"] . "';";
            $DB->query($query_delete);
            break;
    }
    return $parm;
}
Ejemplo n.º 6
0
         }
     }
     Event::log(0, "networkport", 5, "inventory", $_SESSION["glpiname"] . " " . $LANG['log'][74]);
     glpi_header($_SERVER['HTTP_REFERER']);
 } else {
     if (isset($_POST["update"])) {
         $np->check($_POST['id'], 'w');
         $np->update($_POST);
         Event::log($_POST["id"], "networkport", 4, "inventory", $_SESSION["glpiname"] . " " . $LANG['log'][21]);
         glpi_header($_SERVER['HTTP_REFERER']);
     } else {
         if (isset($_POST["connect"])) {
             if (isset($_POST["dport"]) && count($_POST["dport"])) {
                 foreach ($_POST["dport"] as $sport => $dport) {
                     if ($sport && $dport) {
                         $nn->add(array('networkports_id_1' => $sport, 'networkports_id_2' => $dport));
                     }
                 }
             }
             glpi_header($_SERVER['HTTP_REFERER']);
         } else {
             if (isset($_GET["disconnect"])) {
                 $nn->check($_GET['id'], 'd');
                 if (isset($_GET["id"])) {
                     $nn->delete($_GET);
                     $fin = "";
                     if (isset($_GET["sport"])) {
                         $fin = "?sport=" . $_GET["sport"];
                     }
                     glpi_header($_SERVER['HTTP_REFERER'] . $fin);
                 }
 /**
  * @param $values
  * @param $add                (true by default)
  * @param $rights    array
  **/
 function processAfterInsertOrUpdate($values, $add = true, $rights = array())
 {
     global $DB;
     //Should the port be connected to another one ?
     $use_name = isset($values['NetworkPort']["netname"]) || !empty($values['NetworkPort']["netname"]);
     $use_logical_number = isset($values['NetworkPort']["netport"]) || !empty($values['NetworkPort']["netport"]);
     $use_mac = isset($values['NetworkPort']["netmac"]) || !empty($values['NetworkPort']["netmac"]);
     if (!$use_name && !$use_logical_number && !$use_mac) {
         return false;
     }
     // Find port in database
     $sql = "SELECT `glpi_networkports`.`id`\n              FROM `glpi_networkports`, `glpi_networkequipments`\n              WHERE `glpi_networkports`.`itemtype`='NetworkEquipment'\n                    AND `glpi_networkports`.`items_id` = `glpi_networkequipments`.`id`\n                    AND `glpi_networkequipments`.`is_template` = '0'\n                    AND `glpi_networkequipments`.`entities_id`\n                           = '" . $values['NetworkPort']["entities_id"] . "'";
     if ($use_name) {
         $sql .= " AND `glpi_networkequipments`.`name` = '" . $values['NetworkPort']["netname"] . "'";
     }
     if ($use_logical_number) {
         $sql .= " AND `glpi_networkports`.`logical_number` = '" . $values['NetworkPort']["netport"] . "'";
     }
     if ($use_mac) {
         $sql .= " AND `glpi_networkports`.`mac` = '" . $values['NetworkPort']["netmac"] . "'";
     }
     $res = $DB->query($sql);
     //if at least one parameter is given
     $nb = $DB->numrows($res);
     if ($nb == 1) {
         //Get data for this port
         $netport = $DB->fetch_array($res);
         $netport_netport = new NetworkPort_NetworkPort();
         //If this port already connected to another one ?
         if (!$netport_netport->getOppositeContact($netport['id'])) {
             //No, add a new port to port connection
             $tmp['networkports_id_1'] = $values['NetworkPort']['id'];
             $tmp['networkports_id_2'] = $netport['id'];
             $netport_netport->add($tmp);
         }
     }
     //TODO add injection warning if no port found or more than one
 }
 function importConnectionMac($a_portconnection, $networkports_id)
 {
     $wire = new NetworkPort_NetworkPort();
     $networkPort = new NetworkPort();
     $pfNetworkPort = new PluginFusioninventoryNetworkPort();
     $pfUnmanaged = new PluginFusioninventoryUnmanaged();
     $a_snmpports = current($pfNetworkPort->find("`networkports_id`='" . $networkports_id . "'", "", 1));
     $pfNetworkPort->getFromDB($a_snmpports['id']);
     $count = count($a_portconnection);
     $pfNetworkPort->loadNetworkport($networkports_id);
     if ($pfNetworkPort->getValue('trunk') != '1') {
         if ($count == '2') {
             // detect if phone IP is one of the 2 devices
             $phonecase = 0;
             $macNotPhone_id = 0;
             $macNotPhone = '';
             $phonePort_id = 0;
             foreach ($a_portconnection as $ifmac) {
                 $a_ports = $networkPort->find("`mac`='" . $ifmac . "'", "", 1);
                 $a_port = current($a_ports);
                 if ($a_port['itemtype'] == 'Phone') {
                     // Connect phone on switch port and other (computer..) in this phone
                     $phonePort_id = $a_port['id'];
                     $phonecase++;
                 } else {
                     $macNotPhone_id = $a_port['id'];
                     $macNotPhone = $ifmac;
                 }
             }
             if ($phonecase == '1') {
                 $wire->add(array('networkports_id_1' => $networkports_id, 'networkports_id_2' => $phonePort_id));
                 $networkPort->getFromDB($phonePort_id);
                 $Phone = new Phone();
                 $Phone->getFromDB($networkPort->fields['items_id']);
                 $a_portsPhone = $networkPort->find("`items_id`='" . $networkPort->fields['items_id'] . "'\n                                                AND `itemtype`='Phone'\n                                                AND `name`='Link'", '', 1);
                 $portLink_id = 0;
                 if (count($a_portsPhone) == '1') {
                     $a_portPhone = current($a_portsPhone);
                     $portLink_id = $a_portPhone['id'];
                 } else {
                     // Create Port Link
                     $input = array();
                     $input['name'] = 'Link';
                     $input['itemtype'] = 'Phone';
                     $input['items_id'] = $Phone->fields['id'];
                     $input['entities_id'] = $Phone->fields['entities_id'];
                     $portLink_id = $networkPort->add($input);
                 }
                 $opposite_id = FALSE;
                 if ($opposite_id == $wire->getOppositeContact($portLink_id)) {
                     if ($opposite_id != $macNotPhone_id) {
                         $pfNetworkPort->disconnectDB($portLink_id);
                         // disconnect this port
                         $pfNetworkPort->disconnectDB($macNotPhone_id);
                         // disconnect destination port
                     }
                 }
                 if (!isset($macNotPhone_id)) {
                     // Create unmanaged ports
                     $unmanagedn_infos = array();
                     $unmanagedn_infos["name"] = '';
                     if (isset($_SESSION["plugin_fusioninventory_entity"])) {
                         $input['entities_id'] = $_SESSION["plugin_fusioninventory_entity"];
                     }
                     $newID = $pfUnmanaged->add($unmanagedn_infos);
                     // Add networking_port
                     $port_add = array();
                     $port_add["items_id"] = $newID;
                     $port_add["itemtype"] = 'PluginFusioninventoryUnmanaged';
                     $port_add['mac'] = $macNotPhone;
                     $port_add['instantiation_type'] = "NetworkPortEthernet";
                     $macNotPhone_id = $networkPort->add($port_add);
                 }
                 $wire->add(array('networkports_id_1' => $portLink_id, 'networkports_id_2' => $macNotPhone_id));
             } else {
                 $pfUnmanaged->hubNetwork($pfNetworkPort, $a_portconnection);
             }
         } else {
             if ($count > 1) {
                 // MultipleMac
                 $pfUnmanaged->hubNetwork($pfNetworkPort, $a_portconnection);
             } else {
                 // One mac on port
                 foreach ($a_portconnection as $ifmac) {
                     //Only 1 time
                     $a_ports = $networkPort->find("`mac`='" . $ifmac . "' AND `logical_number`='1'", "", 1);
                     if (count($a_ports) == 0) {
                         $a_ports = $networkPort->find("`mac`='" . $ifmac . "'", "", 1);
                     }
                     if (count($a_ports) > 0) {
                         $a_port = current($a_ports);
                         $hub = 0;
                         $id = $networkPort->getContact($a_port['id']);
                         if ($id and $networkPort->getFromDB($id)) {
                             if ($networkPort->fields['itemtype'] == 'PluginFusioninventoryUnmanaged') {
                                 $pfUnmanaged->getFromDB($networkPort->fields['items_id']);
                                 if ($pfUnmanaged->fields['hub'] == '1') {
                                     $hub = 1;
                                 }
                             }
                         }
                         $direct_id = $networkPort->getContact($networkports_id);
                         if ($id and $id != $networkports_id and $hub == '0') {
                             $directconnect = 0;
                             if (!$direct_id) {
                                 $directconnect = 1;
                             } else {
                                 $networkPort->getFromDB($direct_id);
                                 if ($networkPort->fields['itemtype'] == 'PluginFusioninventoryUnmanaged') {
                                     // 1. Hub connected to this switch port
                                     $pfUnmanaged->connectPortToHub(array($a_port), $networkPort->fields['items_id']);
                                 } else {
                                     // 2. direct connection
                                     $directconnect = 1;
                                 }
                             }
                             if ($directconnect == '1') {
                                 $pfNetworkPort->disconnectDB($networkports_id);
                                 // disconnect this port
                                 $pfNetworkPort->disconnectDB($a_port['id']);
                                 // disconnect destination port
                                 $wire->add(array('networkports_id_1' => $networkports_id, 'networkports_id_2' => $a_port['id']));
                             }
                         } else {
                             if ($id and $hub == '1') {
                                 $directconnect = 0;
                                 if (!$direct_id) {
                                     $directconnect = 1;
                                 } else {
                                     $networkPort->getFromDB($direct_id);
                                     $ddirect = $networkPort->fields;
                                     $networkPort->getFromDB($id);
                                     if ($ddirect['items_id'] == $networkPort->fields['items_id'] and $ddirect['itemtype'] == $networkPort->fields['itemtype']) {
                                         // 1.The hub where this device is connected is yet connected
                                         // to this switch port
                                         // => Do nothing
                                     } else {
                                         // 2. The hub where this device is connected to is not connected
                                         // to this switch port
                                         if ($ddirect['itemtype'] == 'PluginFusioninventoryUnmanaged') {
                                             // b. We have a hub connected to the switch port
                                             $pfUnmanaged->connectPortToHub(array($a_port), $ddirect['items_id']);
                                         } else {
                                             // a. We have a direct connexion to another device
                                             // (on the switch port)
                                             $directconnect = 1;
                                         }
                                     }
                                 }
                                 if ($directconnect == '1') {
                                     $pfNetworkPort->disconnectDB($networkports_id);
                                     // disconnect this port
                                     $pfNetworkPort->disconnectDB($a_port['id']);
                                     // disconnect destination port
                                     $wire->add(array('networkports_id_1' => $networkports_id, 'networkports_id_2' => $a_port['id']));
                                 }
                             } else {
                                 if ($id) {
                                     // Yet connected
                                 } else {
                                     // Not connected
                                     $pfNetworkPort->disconnectDB($networkports_id);
                                     // disconnect this port
                                     $wire->add(array('networkports_id_1' => $networkports_id, 'networkports_id_2' => $a_port['id']));
                                 }
                             }
                         }
                     } else {
                         // Create unmanaged device
                         $pfUnmanaged = new PluginFusioninventoryUnmanaged();
                         $input = array();
                         $manufacturer = PluginFusioninventoryInventoryExternalDB::getManufacturerWithMAC($ifmac);
                         $input['name'] = $manufacturer;
                         if (isset($_SESSION["plugin_fusioninventory_entity"])) {
                             $input['entities_id'] = $_SESSION["plugin_fusioninventory_entity"];
                         }
                         $newID = $pfUnmanaged->add($input);
                         $input['itemtype'] = "PluginFusioninventoryUnmanaged";
                         $input['items_id'] = $newID;
                         $input['mac'] = $ifmac;
                         $input['instantiation_type'] = "NetworkPortEthernet";
                         $newPortID = $networkPort->add($input);
                         $pfNetworkPort->disconnectDB($networkports_id);
                         // disconnect this port
                         $wire->add(array('networkports_id_1' => $networkports_id, 'networkports_id_2' => $newPortID));
                     }
                 }
             }
         }
     }
 }