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;
}