getVlansForNetworkPort() static public method

static public getVlansForNetworkPort ( $portID )
$portID
 /**
  * @test
  */
 public function VlansPort10002()
 {
     global $DB;
     $DB->connect();
     $networkPort = new NetworkPort();
     $a_networkports = $networkPort->find("`instantiation_type`='NetworkPortEthernet'\n         AND `itemtype`='NetworkEquipment'\n         AND `items_id`='1'\n         AND `name`='Fa0/2'");
     $this->assertEquals(1, count($a_networkports), 'Networkport 10002 of switch must have only 1 port');
     $a_networkport = current($a_networkports);
     $a_vlans = NetworkPort_Vlan::getVlansForNetworkPort($a_networkport['id']);
     $this->assertEquals(2, count($a_vlans), 'Networkport 10002 of switch may have 2 Vlans');
 }
 /**
  * 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;
 }
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;
}