private function cleanDatabase() { global $DB; $networkport = new NetworkPort(); if ($networkport->getFromDB($this->getID())) { if (!in_array($networkport->fields['instantiation_type'], NetworkPort::getNetworkPortInstantiations())) { $networkport->delete($networkport->fields); } } if (countElementsInTable($this->getTable()) == 0) { $query = "DROP TABLE `" . $this->getTable() . "`"; $DB->query($query); } }
/** * Delete network ports for an itemtype * @param the itemtype * @return nothing */ static function deleteNetworking($itemtype) { $networkport = new NetworkPort(); foreach ($networkport->find("`itemtype`='{$itemtype}'") as $port) { $networkport->delete($port); } }
/** * Transfer network links * * @param $itemtype original type of transfered item * @param $ID original ID of the item * @param $newID new ID of the item **/ function transferNetworkLink($itemtype, $ID, $newID) { global $DB; /// TODO manage with new network system $np = new NetworkPort(); $nn = new NetworkPort_NetworkPort(); $query = "SELECT `glpi_networkports`.*, `glpi_networkportethernets`.`netpoints_id`\n FROM `glpi_networkports`\n LEFT JOIN `glpi_networkportethernets`\n ON (`glpi_networkports`.`id` = `glpi_networkportethernets`.`networkports_id`)\n WHERE `glpi_networkports`.`items_id` = '{$ID}'\n AND `glpi_networkports`.`itemtype` = '{$itemtype}'"; if ($result = $DB->query($query)) { if ($DB->numrows($result) != 0) { switch ($this->options['keep_networklink']) { // Delete netport case 0: // Not a copy -> delete if ($ID == $newID) { while ($data = $DB->fetch_assoc($result)) { $np->delete(array('id' => $data['id'])); } } // Copy -> do nothing break; // Disconnect // Disconnect case 1: // Not a copy -> disconnect if ($ID == $newID) { while ($data = $DB->fetch_assoc($result)) { if ($nn->getFromDBForNetworkPort($data['id'])) { $nn->delete($data); } if ($data['netpoints_id']) { $netpointID = $this->transferDropdownNetpoint($data['netpoints_id']); $input['id'] = $data['id']; $input['netpoints_id'] = $netpointID; $np->update($input); } } } else { // Copy -> copy netports while ($data = $DB->fetch_assoc($result)) { $data = Toolbox::addslashes_deep($data); unset($data['id']); $data['items_id'] = $newID; $data['netpoints_id'] = $this->transferDropdownNetpoint($data['netpoints_id']); unset($np->fields); $np->add(toolbox::addslashes_deep($data)); } } break; // Keep network links // Keep network links default: // Copy -> Copy netpoints (do not keep links) if ($ID != $newID) { while ($data = $DB->fetch_assoc($result)) { unset($data['id']); $data['items_id'] = $newID; $data['netpoints_id'] = $this->transferDropdownNetpoint($data['netpoints_id']); unset($np->fields); $np->add(toolbox::addslashes_deep($data)); } } else { while ($data = $DB->fetch_assoc($result)) { // Not a copy -> only update netpoint if ($data['netpoints_id']) { $netpointID = $this->transferDropdownNetpoint($data['netpoints_id']); $input['id'] = $data['id']; $input['netpoints_id'] = $netpointID; $np->update($input); } } } } } } }
function pluginFusioninventoryInstall($version, $migrationname = 'Migration') { global $DB; ini_set("memory_limit", "-1"); ini_set("max_execution_time", "0"); $migration = new $migrationname($version); /* * Load classes */ foreach (glob(GLPI_ROOT . '/plugins/fusioninventory/inc/*.php') as $file) { require_once $file; } $migration->displayMessage("Installation of plugin FusionInventory"); // Get informations of plugin /* * Clean if Fusion / Tracker has been installed and uninstalled (not clean correctly) */ $migration->displayMessage("Clean data from old installation of the plugin"); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5150'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5151'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5152'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5153'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5156'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5157'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5158'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5159'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5161'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5165'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5166'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5167'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5168'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype` LIKE 'PluginFusioninventory%'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype` LIKE 'PluginFusinvinventory%'"; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype` LIKE 'PluginFusinvsnmp%'"; $DB->query($sql); // Purge network ports have itemtype tp 5153 $networkPort = new NetworkPort(); $sql = "SELECT * FROM `glpi_networkports`\n WHERE `itemtype`='5153'"; $result = $DB->query($sql); while ($data = $DB->fetch_array($result)) { $networkPort->delete(array('id' => $data['id']), 1); } /* * Remove old rules */ $migration->displayMessage("Clean rules from old installation of the plugin"); $Rule = new Rule(); $a_rules = $Rule->find("`sub_type`='PluginFusioninventoryInventoryRuleImport'"); foreach ($a_rules as $data) { $Rule->delete($data); } $a_rules = $Rule->find("`sub_type`='PluginFusinvinventoryRuleEntity'"); foreach ($a_rules as $data) { $Rule->delete($data); } $a_rules = $Rule->find("`sub_type`='PluginFusinvinventoryRuleLocation'"); foreach ($a_rules as $data) { $Rule->delete($data); } /* * Create DB structure */ $migration->displayMessage("Creation tables in database"); $DB_file = GLPI_ROOT . "/plugins/fusioninventory/install/mysql/plugin_fusioninventory-empty.sql"; if (!$DB->runFile($DB_file)) { $migration->displayMessage("Error on creation tables in database"); } if (!$DB->runFile(GLPI_ROOT . "/plugins/fusioninventory/install/mysql/usbid.sql")) { $migration->displayMessage("Error on creation table usbid in database"); } if (!$DB->runFile(GLPI_ROOT . "/plugins/fusioninventory/install/mysql/pciid.sql")) { $migration->displayMessage("Error on creation table pciid in database"); } if (!$DB->runFile(GLPI_ROOT . "/plugins/fusioninventory/install/mysql/oui.sql")) { $migration->displayMessage("Error on creation table oui in database"); } /* * Creation of folders */ $migration->displayMessage("Creation of folders"); if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/tmp')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/tmp'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/computer')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/computer'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/printer')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/printer'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/networkequipment')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/networkequipment'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/upload')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/upload'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/walks')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/walks'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/tmpmodels')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/tmpmodels'); } /* * Deploy folders */ if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/repository')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/repository'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/manifests')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/manifests'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/import')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/import'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/export')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/export'); } /* * Manage profiles */ $migration->displayMessage("Initialize profiles"); PluginFusioninventoryProfile::initProfile(); /* * bug of purge network port when purge unmanaged devices, so we clean */ $sql = "SELECT `glpi_networkports`.`id` as nid FROM `glpi_networkports`\n LEFT JOIN `glpi_plugin_fusioninventory_unmanageds`\n ON `glpi_plugin_fusioninventory_unmanageds`.`id` = `glpi_networkports`.`items_id`\n WHERE `itemtype`='PluginFusioninventoryUnmanaged'\n AND `glpi_plugin_fusioninventory_unmanageds`.`id` IS NULL "; $result = $DB->query($sql); while ($data = $DB->fetch_array($result)) { $networkPort->delete(array('id' => $data['nid']), 1); } /* * Add config */ $migration->displayMessage("Initialize configuration"); $pfConfig = new PluginFusioninventoryConfig(); $pfConfig->initConfigModule(); $configLogField = new PluginFusioninventoryConfigLogField(); $configLogField->initConfig(); /* * Register Agent TASKS */ $migration->displayMessage("Initialize agent TASKS"); $pfAgentmodule = new PluginFusioninventoryAgentmodule(); $input = array(); $input['modulename'] = "WAKEONLAN"; $input['is_active'] = 0; $input['exceptions'] = exportArrayToDB(array()); $pfAgentmodule->add($input); $input = array(); $input['modulename'] = "INVENTORY"; $input['is_active'] = 1; $input['exceptions'] = exportArrayToDB(array()); $pfAgentmodule->add($input); $input = array(); $input['modulename'] = "InventoryComputerESX"; $input['is_active'] = 0; $input['exceptions'] = exportArrayToDB(array()); $pfAgentmodule->add($input); $input = array(); $input['modulename'] = "NETWORKINVENTORY"; $input['is_active'] = 0; $input['exceptions'] = exportArrayToDB(array()); $pfAgentmodule->add($input); $input = array(); $input['modulename'] = "NETWORKDISCOVERY"; $input['is_active'] = 0; $input['exceptions'] = exportArrayToDB(array()); $pfAgentmodule->add($input); $input = array(); $input['modulename'] = "DEPLOY"; $input['is_active'] = 0; $input['exceptions'] = exportArrayToDB(array()); $pfAgentmodule->add($input); $input = array(); $input['modulename'] = "Collect"; $input['is_active'] = 1; $input['exceptions'] = exportArrayToDB(array()); $pfAgentmodule->add($input); /* * Add cron task */ $migration->displayMessage("Initialize cron task"); CronTask::Register('PluginFusioninventoryTask', 'taskscheduler', '60', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30)); Crontask::Register('PluginFusioninventoryTaskjobstate', 'cleantaskjob', 3600 * 24, array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30)); Crontask::Register('PluginFusioninventoryNetworkPortLog', 'cleannetworkportlogs', 3600 * 24, array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30)); CronTask::Register('PluginFusioninventoryTaskjob', 'updatedynamictasks', '60', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30, 'state' => 0)); Crontask::Register('PluginFusioninventoryAgent', 'cleanoldagents', 3600 * 24, array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30, 'comment' => 'Clean agents not contacted since xxx days')); Crontask::Register('PluginFusioninventoryAgentWakeup', 'wakeupAgents', 120, array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30, 'comment' => 'Wake agents ups')); /* * Create rules */ $migration->displayMessage("Create rules"); $pfSetup = new PluginFusioninventorySetup(); $pfSetup->initRules(); /* * Add notification for configuration management */ /* * Import OCS locks */ $migration->displayMessage("Import OCS locks if exists"); $pfLock = new PluginFusioninventoryLock(); $pfLock->importFromOcs(); Crontask::Register('PluginFusioninventoryTaskjobstate', 'cleantaskjob', 3600 * 24, array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30)); $pfNetworkporttype = new PluginFusioninventoryNetworkporttype(); $pfNetworkporttype->init(); require_once GLPI_ROOT . "/plugins/fusioninventory/inc/inventorycomputerstat.class.php"; PluginFusioninventoryInventoryComputerStat::init(); $mode_cli = basename($_SERVER['SCRIPT_NAME']) == "cli_install.php"; }
/** * @param $cfg_ocs * @param $ocsComputer * @param $computers_id * @param $entities_id */ static function importNetwork($cfg_ocs, $ocsComputer, $computers_id, $entities_id) { global $DB; // Group by DESCRIPTION, MACADDR, TYPE, TYPEMIB, SPEED, VIRTUALDEV // to get an array in IPADDRESS $ocsNetworks = array(); foreach ($ocsComputer as $ocsNetwork) { $key = $ocsNetwork['DESCRIPTION'] . $ocsNetwork['MACADDR'] . $ocsNetwork['TYPE'] . $ocsNetwork['TYPEMIB'] . $ocsNetwork['SPEED'] . $ocsNetwork['VIRTUALDEV']; if (!isset($ocsNetworks[$key])) { $ocsNetworks[$key] = $ocsNetwork; $ocsNetworks[$key]['IPADDRESS'] = array($ocsNetwork['IPADDRESS']); } else { $ocsNetworks[$key]['IPADDRESS'][] = $ocsNetwork['IPADDRESS']; } } $network_ports = array(); $network_ifaces = array(); foreach ($ocsNetworks as $line) { $line = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line)); $mac = $line['MACADDR']; if (!isset($network_ports[$mac])) { $network_ports[$mac] = array('virtual' => array()); } $name = PluginOcsinventoryngOcsServer::encodeOcsDataInUtf8($cfg_ocs["ocs_db_utf8"], $line['DESCRIPTION']); if (!empty($line['IPADDRESS'])) { $ip = $line['IPADDRESS']; } else { $ip = false; } $networkport_type = new PluginOcsinventoryngNetworkPortType(); $networkport_type->getFromTypeAndTypeMIB($line); $speed = NetworkPortEthernet::transformPortSpeed($line['SPEED'], false); if (!empty($speed)) { $networkport_type->fields['speed'] = $speed; } $values = array('name' => $name, 'type' => array_push($network_ifaces, $networkport_type) - 1, 'ip' => $ip, 'result' => $line); // Virtual dev can be : // 1°) specifically defined from OCS // 2°) if there is already one main device // 3°) if the networkport is issued by VMWare if (isset($line['VIRTUALDEV']) && $line['VIRTUALDEV'] == '1' || isset($network_ports[$mac]['main']) || preg_match('/^vm(k|nic)([0-9]+)$/', $name)) { $network_ports[$mac]['virtual'][] = $values; } else { $network_ports[$mac]['main'] = $values; } } $already_known_ports = array(); $already_known_ifaces = array(); foreach ($network_ports as $mac => $ports) { if (isset($ports['main'])) { $main = $ports['main']; $type = $network_ifaces[$main['type']]; // First search for the Network Card $item_device = new Item_DeviceNetworkCard(); $item_device->getFromDBByQuery("INNER JOIN `glpi_devicenetworkcards`\n ON (`glpi_devicenetworkcards`.`designation`='" . $main['name'] . "')\n WHERE `glpi_items_devicenetworkcards`.`itemtype`='Computer'\n AND `glpi_items_devicenetworkcards`.`items_id`='{$computers_id}'\n AND `glpi_items_devicenetworkcards`.`mac`='{$mac}'\n AND `glpi_items_devicenetworkcards`.`devicenetworkcards_id`=\n `glpi_devicenetworkcards`.`id`"); // If not found, then, create it if ($item_device->isNewItem()) { $deviceNetworkCard = new DeviceNetworkCard(); $device_input = array('designation' => $main['name'], 'bandwidth' => $type->fields['speed'], 'entities_id' => $entities_id); $net_id = $deviceNetworkCard->import($device_input); if ($net_id) { $item_device->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicenetworkcards_id' => $net_id, 'mac' => $mac, '_no_history' => !$cfg_ocs['history_network'], 'is_dynamic' => 1, 'is_deleted' => 0)); } } if (!$item_device->isNewItem()) { $already_known_ifaces[] = $item_device->getID(); } if ($type->fields['instantiation_type'] == __CLASS__) { $result = $main['result']; $inst_input = array('TYPE' => $result['TYPE'], 'TYPEMIB' => $result['TYPEMIB'], 'speed' => $result['SPEED']); } else { $inst_input = $type->fields; foreach (array('id', 'name', 'OCS_TYPE', 'OCS_TYPEMIB', 'instantiation_type', 'comment') as $field) { unset($inst_input[$field]); } } $inst_input['items_devicenetworkcards_id'] = $item_device->getID(); $networkports_id = self::updateNetworkPort($mac, $main['name'], $computers_id, $type->fields['instantiation_type'], $inst_input, $main['ip'], false, $cfg_ocs['history_network'], $already_known_ports); if ($networkports_id < 0) { continue; } $already_known_ports[] = $networkports_id; } else { $networkports_id = 0; } foreach ($ports['virtual'] as $port) { $inst_input = array('networkports_id_alias' => $networkports_id); $id = self::updateNetworkPort($mac, $port['name'], $computers_id, 'NetworkPortAlias', $inst_input, $port['ip'], true, $cfg_ocs['history_network'], $already_known_ports); if ($id > 0) { $already_known_ports[] = $id; } } } $query = "SELECT `id`\n FROM `glpi_networkports`\n WHERE `itemtype` = 'Computer'\n AND `items_id` = '{$computers_id}'\n AND `is_dynamic` = '1'"; if (count($already_known_ports) > 0) { $query .= " AND `id` NOT IN ('" . implode("', '", $already_known_ports) . "')"; } $network_ports = new NetworkPort(); foreach ($DB->request($query) as $line) { $network_ports->delete($line, true, $cfg_ocs['history_network']); } $query = "SELECT `id`\n FROM `glpi_items_devicenetworkcards`\n WHERE `itemtype` = 'Computer'\n AND `items_id` = '{$computers_id}'\n AND `is_dynamic` = '1'"; if (count($already_known_ifaces) > 0) { $query .= " AND `id` NOT IN ('" . implode("', '", $already_known_ifaces) . "')"; } $item_device = new Item_DeviceNetworkCard(); foreach ($DB->request($query) as $line) { $item_device->delete($line, true, $cfg_ocs['history_network']); } }
/** * Import the devices for a computer * * @param $devicetype integer : device type * @param $computers_id integer : glpi computer id. * @param $ocsComputer * @param $plugin_ocsinventoryng_ocsservers_id integer : ocs server id * @param $cfg_ocs array : ocs config * @param $import_device array : already imported devices * @param $import_ip array : already imported ip * @return Nothing . * @internal param int $ocsid : ocs computer id (ID). * @internal param bool $dohistory : log changes? * */ static function updateDevices($devicetype, $computers_id, $ocsComputer, $plugin_ocsinventoryng_ocsservers_id, $cfg_ocs, $import_device, $import_ip) { $prevalue = $devicetype . self::FIELD_SEPARATOR; $do_clean = false; $comp = new Computer(); $comp->getFromDB($computers_id); $entities_id = $comp->fields['entities_id']; switch ($devicetype) { case "PluginOcsinventoryngItem_DeviceBiosdata": $CompDevice = new $devicetype(); //Bios $do_clean = true; $bios["designation"] = $ocsComputer["BVERSION"]; $bios["assettag"] = $ocsComputer["ASSETTAG"]; $bios["entities_id"] = $entities_id; //$date = str_replace("/", "-", $ocsComputer['BIOS']["BDATE"]); //$date = date("Y-m-d", strtotime($date)); $bios["date"] = $ocsComputer["BDATE"]; $bios["manufacturers_id"] = Dropdown::importExternal('Manufacturer', self::encodeOcsDataInUtf8($cfg_ocs['ocs_db_utf8'], $ocsComputer["SMANUFACTURER"])); if (!in_array(stripslashes($prevalue . $bios["designation"]), $import_device)) { $DeviceBios = new PluginOcsinventoryngDeviceBiosdata(); $bios_id = $DeviceBios->import($bios); if ($bios_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'plugin_ocsinventoryng_devicebiosdatas_id' => $bios_id, 'is_dynamic' => 1, 'entities_id' => $entities_id), array(), $cfg_ocs['history_devices']); } } else { $tmp = array_search(stripslashes($prevalue . $bios["designation"]), $import_device); unset($import_device[$tmp]); } break; case "Item_DeviceMemory": //MEMORIES $CompDevice = new $devicetype(); $do_clean = true; foreach ($ocsComputer as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if (isset($line2["CAPACITY"]) && $line2["CAPACITY"] != "No") { $ram["designation"] = ""; if ($line2["TYPE"] != "Empty Slot" && $line2["TYPE"] != "Unknown") { $ram["designation"] = $line2["TYPE"]; } if ($line2["DESCRIPTION"]) { if (!empty($ram["designation"])) { $ram["designation"] .= " - "; } $ram["designation"] .= $line2["DESCRIPTION"]; } if (!is_numeric($line2["CAPACITY"])) { $line2["CAPACITY"] = 0; } $ram["size_default"] = $line2["CAPACITY"]; $ram["entities_id"] = $entities_id; if (!in_array(stripslashes($prevalue . $ram["designation"]), $import_device)) { $ram["frequence"] = $line2["SPEED"]; $ram["devicememorytypes_id"] = Dropdown::importExternal('DeviceMemoryType', $line2["TYPE"]); $DeviceMemory = new DeviceMemory(); $ram_id = $DeviceMemory->import($ram); if ($ram_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicememories_id' => $ram_id, 'size' => $line2["CAPACITY"], 'is_dynamic' => 1), array(), $cfg_ocs['history_devices']); } } else { $tmp = array_search(stripslashes($prevalue . $ram["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'size' => $line2["CAPACITY"]), $cfg_ocs['history_devices']); unset($import_device[$tmp]); } } } break; case "Item_DeviceHardDrive": $CompDevice = new $devicetype(); //Disque Dur $do_clean = true; foreach ($ocsComputer as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if (!empty($line2["DISKSIZE"]) && preg_match("/disk|spare\\sdrive/i", $line2["TYPE"])) { if ($line2["NAME"]) { $dd["designation"] = $line2["NAME"]; } else { if ($line2["MODEL"]) { $dd["designation"] = $line2["MODEL"]; } else { $dd["designation"] = "Unknown"; } } if (!is_numeric($line2["DISKSIZE"])) { $line2["DISKSIZE"] = 0; } $dd["entities_id"] = $entities_id; if (!in_array(stripslashes($prevalue . $dd["designation"]), $import_device)) { $dd["capacity_default"] = $line2["DISKSIZE"]; $DeviceHardDrive = new DeviceHardDrive(); $dd_id = $DeviceHardDrive->import($dd); if ($dd_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'deviceharddrives_id' => $dd_id, 'serial' => $line2["SERIALNUMBER"], 'capacity' => $line2["DISKSIZE"], 'is_dynamic' => 1), array(), $cfg_ocs['history_devices']); } } else { $tmp = array_search(stripslashes($prevalue . $dd["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'capacity' => $line2["DISKSIZE"], 'serial' => $line2["SERIALNUMBER"]), $cfg_ocs['history_devices']); unset($import_device[$tmp]); } } } break; case "Item_DeviceDrive": $CompDevice = new $devicetype(); //lecteurs $do_clean = true; foreach ($ocsComputer as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if (empty($line2["DISKSIZE"]) || !preg_match("/disk/i", $line2["TYPE"])) { if ($line2["NAME"]) { $stor["designation"] = $line2["NAME"]; } else { if ($line2["MODEL"]) { $stor["designation"] = $line2["MODEL"]; } else { $stor["designation"] = "Unknown"; } } $stor["entities_id"] = $entities_id; if (!in_array(stripslashes($prevalue . $stor["designation"]), $import_device)) { $DeviceDrive = new DeviceDrive(); $stor_id = $DeviceDrive->import($stor); if ($stor_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicedrives_id' => $stor_id, 'is_dynamic' => 1), array(), $cfg_ocs['history_devices']); } } else { $tmp = array_search(stripslashes($prevalue . $stor["designation"]), $import_device); unset($import_device[$tmp]); } } } break; case "Item_DevicePci": if (isset($ocsComputer['MODEMS'])) { $CompDevice = new $devicetype(); //Modems $do_clean = true; foreach ($ocsComputer['MODEMS'] as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); $mdm["designation"] = $line2["NAME"]; $mdm["entities_id"] = $entities_id; if (!in_array(stripslashes($prevalue . $mdm["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"])) { $mdm["comment"] = $line2["TYPE"] . "\r\n" . $line2["DESCRIPTION"]; } $DevicePci = new DevicePci(); $mdm_id = $DevicePci->import($mdm); if ($mdm_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicepcis_id' => $mdm_id, 'is_dynamic' => 1), array(), $cfg_ocs['history_devices']); } } else { $tmp = array_search(stripslashes($prevalue . $mdm["designation"]), $import_device); unset($import_device[$tmp]); } } } //Ports if (isset($ocsComputer['PORTS'])) { $CompDevice = new $devicetype(); foreach ($ocsComputer['PORTS'] as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); $port["designation"] = ""; if ($line2["TYPE"] != "Other") { $port["designation"] .= $line2["TYPE"]; } if ($line2["NAME"] != "Not Specified") { $port["designation"] .= " " . $line2["NAME"]; } else { if ($line2["CAPTION"] != "None") { $port["designation"] .= " " . $line2["CAPTION"]; } } $port["entities_id"] = $entities_id; if (!empty($port["designation"])) { if (!in_array(stripslashes($prevalue . $port["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"]) && $line2["DESCRIPTION"] != "None") { $port["comment"] = $line2["DESCRIPTION"]; } $DevicePci = new DevicePci(); $port_id = $DevicePci->import($port); if ($port_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicepcis_id' => $port_id, 'is_dynamic' => 1), array(), $cfg_ocs['history_devices']); } } else { $tmp = array_search(stripslashes($prevalue . $port["designation"]), $import_device); unset($import_device[$tmp]); } } } } //Slots if (isset($ocsComputer['SLOTS'])) { $CompDevice = new $devicetype(); $do_clean = true; foreach ($ocsComputer['SLOTS'] as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if ($line2['NAME']) { if (!$cfg_ocs["ocs_db_utf8"] && !Toolbox::seems_utf8($line2["NAME"])) { $line2["NAME"] = Toolbox::encodeInUtf8($line2["NAME"]); } $pci["entities_id"] = $entities_id; $pci["designation"] = $line2["NAME"]; if (!in_array(stripslashes($prevalue . $pci["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"])) { $pci["comment"] = $line2["DESCRIPTION"]; } $DevicePci = new DevicePci(); $pci_id = $DevicePci->import($pci); if ($pci_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicepcis_id' => $pci_id, 'is_dynamic' => 1), array(), $cfg_ocs['history_devices']); } } else { $id = array_search(stripslashes($prevalue . $pci["designation"]), $import_device); unset($import_device[$id]); } } } } break; case "Item_DeviceProcessor": $CompDevice = new $devicetype(); //Processeurs: $do_clean = true; foreach ($ocsComputer as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); $processor = array(); $processor["designation"] = $line2["TYPE"]; if (!is_numeric($line2["SPEED"])) { $line2["SPEED"] = 0; } $processor["manufacturers_id"] = Dropdown::importExternal('Manufacturer', self::encodeOcsDataInUtf8($cfg_ocs['ocs_db_utf8'], $line2["MANUFACTURER"])); $processor["frequency_default"] = $line2["SPEED"]; $processor["nbcores_default"] = $line2["CORES"]; //$processor["nbthreads_default"] = $line2["LOGICAL_CPUS"]; $processor["frequence"] = $line2["CURRENT_SPEED"]; $processor["entities_id"] = $entities_id; if (!in_array(stripslashes($prevalue . $processor["designation"]), $import_device)) { $DeviceProcessor = new DeviceProcessor(); $proc_id = $DeviceProcessor->import($processor); if ($proc_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'deviceprocessors_id' => $proc_id, 'frequency' => $line2["SPEED"], 'is_dynamic' => 1), array(), $cfg_ocs['history_devices']); } } else { $tmp = array_search(stripslashes($prevalue . $processor["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'frequency' => $line2["SPEED"]), $cfg_ocs['history_devices']); unset($import_device[$tmp]); } } break; case "Item_DeviceNetworkCard": //Carte reseau PluginOcsinventoryngNetworkPort::importNetwork($cfg_ocs, $ocsComputer, $computers_id, $entities_id); break; case "Item_DeviceGraphicCard": $CompDevice = new $devicetype(); //carte graphique $do_clean = true; foreach ($ocsComputer as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if ($line2['NAME']) { $video["designation"] = $line2["NAME"]; $video["entities_id"] = $entities_id; if (!is_numeric($line2["MEMORY"])) { $line2["MEMORY"] = 0; } if (!in_array(stripslashes($prevalue . $video["designation"]), $import_device)) { $video["memory_default"] = $line2["MEMORY"]; $DeviceGraphicCard = new DeviceGraphicCard(); $video_id = $DeviceGraphicCard->import($video); if ($video_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicegraphiccards_id' => $video_id, 'memory' => $line2["MEMORY"], 'is_dynamic' => 1), array(), $cfg_ocs['history_devices']); } } else { $tmp = array_search(stripslashes($prevalue . $video["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'memory' => $line2["MEMORY"]), $cfg_ocs['history_devices']); unset($import_device[$tmp]); } } } break; case "Item_DeviceSoundCard": $CompDevice = new $devicetype(); //carte son $do_clean = true; foreach ($ocsComputer as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if ($line2['NAME']) { if (!$cfg_ocs["ocs_db_utf8"] && !Toolbox::seems_utf8($line2["NAME"])) { $line2["NAME"] = Toolbox::encodeInUtf8($line2["NAME"]); } $snd["entities_id"] = $entities_id; $snd["designation"] = $line2["NAME"]; if (!in_array(stripslashes($prevalue . $snd["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"])) { $snd["comment"] = $line2["DESCRIPTION"]; } $DeviceSoundCard = new DeviceSoundCard(); $snd_id = $DeviceSoundCard->import($snd); if ($snd_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicesoundcards_id' => $snd_id, 'is_dynamic' => 1), array(), $cfg_ocs['history_devices']); } } else { $id = array_search(stripslashes($prevalue . $snd["designation"]), $import_device); unset($import_device[$id]); } } } break; case "Item_DeviceMotherboard": $CompDevice = new $devicetype(); //Bios $do_clean = true; $mb["designation"] = $ocsComputer["MMODEL"]; $mb["entities_id"] = $entities_id; $mb["manufacturers_id"] = Dropdown::importExternal('Manufacturer', self::encodeOcsDataInUtf8($cfg_ocs['ocs_db_utf8'], $ocsComputer["MMANUFACTURER"])); if (!in_array(stripslashes($prevalue . $mb["designation"]), $import_device)) { $DeviceMB = new DeviceMotherboard(); $devicemotherboards_id = $DeviceMB->import($mb); if ($devicemotherboards_id) { $serial = $ocsComputer["MSN"]; $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'devicemotherboards_id' => $devicemotherboards_id, 'is_dynamic' => 1, 'serial' => $serial, 'entities_id' => $entities_id), array(), $cfg_ocs['history_devices']); } } else { $tmp = array_search(stripslashes($prevalue . $mb["designation"]), $import_device); unset($import_device[$tmp]); } break; case "Item_DeviceControl": //controllers $do_clean = true; $CompDevice = new $devicetype(); foreach ($ocsComputer as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if ($line2['NAME']) { if (!$cfg_ocs["ocs_db_utf8"] && !Toolbox::seems_utf8($line2["NAME"])) { $line2["NAME"] = Toolbox::encodeInUtf8($line2["NAME"]); } $ctrl["entities_id"] = $entities_id; $ctrl["designation"] = $line2["NAME"]; //TODO : OCS TYPE = IDE Controller // GLPI : interface = IDE //$ctrl["interfacetypes_id"] = $line2["TYPE"]; $ctrl["manufacturers_id"] = Dropdown::importExternal('Manufacturer', self::encodeOcsDataInUtf8($cfg_ocs['ocs_db_utf8'], $line2["MANUFACTURER"])); if (!in_array(stripslashes($prevalue . $ctrl["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"])) { $ctrl["comment"] = $line2["DESCRIPTION"]; } $DeviceControl = new DeviceControl(); $ctrl_id = $DeviceControl->import($ctrl); if ($ctrl_id) { $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicecontrols_id' => $ctrl_id, 'is_dynamic' => 1), array(), $cfg_ocs['history_devices']); } } else { $id = array_search(stripslashes($prevalue . $ctrl["designation"]), $import_device); unset($import_device[$id]); } } } break; } // Delete Unexisting Items not found in OCS if ($do_clean && count($import_device)) { foreach ($import_device as $key => $val) { if (!(strpos($key, $devicetype . '$$') === false)) { list($type, $id) = explode(self::FIELD_SEPARATOR, $key); $CompDevice = new $devicetype(); $CompDevice->delete(array('id' => $id, '_no_history' => !$cfg_ocs['history_devices']), true, $cfg_ocs['history_devices']); } } } //TODO Import IP if ($do_clean && count($import_ip) && $devicetype == "Item_DeviceNetworkCard") { foreach ($import_ip as $key => $val) { if ($key > 0) { $netport = new NetworkPort(); $netport->delete(array('id' => $key, '_no_history' => !$cfg_ocs['history_network']), 0, $cfg_ocs['history_network']); } } } //Alimentation //Carte mere }
/** * Import the devices for a computer * * @param $devicetype integer : device type * @param $computers_id integer : glpi computer id. * @param $ocsid integer : ocs computer id (ID). * @param $plugin_ocsinventoryng_ocsservers_id integer : ocs server id * @param $cfg_ocs array : ocs config * @param $import_device array : already imported devices * @param $import_ip array : already imported ip * @param $dohistory boolean : log changes? * * @return Nothing (void). **/ static function updateDevices($devicetype, $computers_id, $ocsid, $plugin_ocsinventoryng_ocsservers_id, $cfg_ocs, $import_device, $import_ip, $dohistory) { global $PluginOcsinventoryngDBocs, $DB; $prevalue = $devicetype . self::FIELD_SEPARATOR; self::checkOCSconnection($plugin_ocsinventoryng_ocsservers_id); $do_clean = false; switch ($devicetype) { case "Item_DeviceMemory": $CompDevice = new $devicetype(); //Memoire if ($cfg_ocs["import_device_memory"]) { $do_clean = true; $query2 = "SELECT*\n FROM `memories`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $PluginOcsinventoryngDBocs->query($query2); if ($PluginOcsinventoryngDBocs->numrows($result2) > 0) { // TODO a revoir // pourquoi supprimer tous les importés ? // En 0.83 cette suppression était lié à la présence du tag // IMPORT_TAG_078, et donc exécuté 1 seule fois pour redressement // Cela pete, je pense, tous les lock //if (count($import_device)){ // $dohistory = false; // foreach ($import_device as $key => $val) { // $tmp = explode(self::FIELD_SEPARATOR,$key); // if (isset($tmp[1]) && $tmp[0] == "Item_DeviceMemory") { // $CompDevice->delete(array('id' => $tmp[1], // '_no_history' => true), 1); // unset($import_device[$key]); // } // } //} while ($line2 = $PluginOcsinventoryngDBocs->fetch_array($result2)) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if (isset($line2["CAPACITY"]) && $line2["CAPACITY"] != "No") { $ram["designation"] = ""; if ($line2["TYPE"] != "Empty Slot" && $line2["TYPE"] != "Unknown") { $ram["designation"] = $line2["TYPE"]; } if ($line2["DESCRIPTION"]) { if (!empty($ram["designation"])) { $ram["designation"] .= " - "; } $ram["designation"] .= $line2["DESCRIPTION"]; } if (!is_numeric($line2["CAPACITY"])) { $line2["CAPACITY"] = 0; } $ram["size_default"] = $line2["CAPACITY"]; if (!in_array(stripslashes($prevalue . $ram["designation"]), $import_device)) { $ram["frequence"] = $line2["SPEED"]; $ram["devicememorytypes_id"] = Dropdown::importExternal('DeviceMemoryType', $line2["TYPE"]); $DeviceMemory = new DeviceMemory(); $ram_id = $DeviceMemory->import($ram); if ($ram_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'devicememories_id' => $ram_id, 'size' => $line2["CAPACITY"], 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $ram["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'size' => $line2["CAPACITY"])); unset($import_device[$tmp]); } } } } } break; case "Item_DeviceHardDrive": $CompDevice = new $devicetype(); //Disque Dur if ($cfg_ocs["import_device_hdd"]) { $do_clean = true; $query2 = "SELECT*\n FROM `storages`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $PluginOcsinventoryngDBocs->query($query2); if ($PluginOcsinventoryngDBocs->numrows($result2) > 0) { while ($line2 = $PluginOcsinventoryngDBocs->fetch_array($result2)) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if (!empty($line2["DISKSIZE"]) && preg_match("/disk|spare\\sdrive/i", $line2["TYPE"])) { if ($line2["NAME"]) { $dd["designation"] = $line2["NAME"]; } else { if ($line2["MODEL"]) { $dd["designation"] = $line2["MODEL"]; } else { $dd["designation"] = "Unknown"; } } if (!is_numeric($line2["DISKSIZE"])) { $line2["DISKSIZE"] = 0; } if (!in_array(stripslashes($prevalue . $dd["designation"]), $import_device)) { $dd["capacity_default"] = $line2["DISKSIZE"]; $DeviceHardDrive = new DeviceHardDrive(); $dd_id = $DeviceHardDrive->import($dd); if ($dd_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'deviceharddrives_id' => $dd_id, 'capacity' => $line2["DISKSIZE"], 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $dd["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'capacity' => $line2["DISKSIZE"])); unset($import_device[$tmp]); } } } } } break; case "Item_DeviceDrive": $CompDevice = new $devicetype(); //lecteurs if ($cfg_ocs["import_device_drive"]) { $do_clean = true; $query2 = "SELECT*\n FROM `storages`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $PluginOcsinventoryngDBocs->query($query2); if ($PluginOcsinventoryngDBocs->numrows($result2) > 0) { while ($line2 = $PluginOcsinventoryngDBocs->fetch_array($result2)) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if (empty($line2["DISKSIZE"]) || !preg_match("/disk/i", $line2["TYPE"])) { if ($line2["NAME"]) { $stor["designation"] = $line2["NAME"]; } else { if ($line2["MODEL"]) { $stor["designation"] = $line2["MODEL"]; } else { $stor["designation"] = "Unknown"; } } if (!in_array(stripslashes($prevalue . $stor["designation"]), $import_device)) { $DeviceDrive = new DeviceDrive(); $stor_id = $DeviceDrive->import($stor); if ($stor_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'devicedrives_id' => $stor_id, 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $stor["designation"]), $import_device); unset($import_device[$tmp]); } } } } } break; case "Item_DevicePci": $CompDevice = new $devicetype(); //Modems if ($cfg_ocs["import_device_modem"]) { $do_clean = true; $query2 = "SELECT*\n FROM `modems`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $PluginOcsinventoryngDBocs->query($query2); if ($PluginOcsinventoryngDBocs->numrows($result2) > 0) { while ($line2 = $PluginOcsinventoryngDBocs->fetch_array($result2)) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); $mdm["designation"] = $line2["NAME"]; if (!in_array(stripslashes($prevalue . $mdm["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"])) { $mdm["comment"] = $line2["TYPE"] . "\r\n" . $line2["DESCRIPTION"]; } $DevicePci = new DevicePci(); $mdm_id = $DevicePci->import($mdm); if ($mdm_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'devicepcis_id' => $mdm_id, 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $mdm["designation"]), $import_device); unset($import_device[$tmp]); } } } } //Ports if ($cfg_ocs["import_device_port"]) { $query2 = "SELECT*\n FROM `ports`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $PluginOcsinventoryngDBocs->query($query2); if ($PluginOcsinventoryngDBocs->numrows($result2) > 0) { while ($line2 = $PluginOcsinventoryngDBocs->fetch_array($result2)) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); $port["designation"] = ""; if ($line2["TYPE"] != "Other") { $port["designation"] .= $line2["TYPE"]; } if ($line2["NAME"] != "Not Specified") { $port["designation"] .= " " . $line2["NAME"]; } else { if ($line2["CAPTION"] != "None") { $port["designation"] .= " " . $line2["CAPTION"]; } } if (!empty($port["designation"])) { if (!in_array(stripslashes($prevalue . $port["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"]) && $line2["DESCRIPTION"] != "None") { $port["comment"] = $line2["DESCRIPTION"]; } $DevicePci = new DevicePci(); $port_id = $DevicePci->import($port); if ($port_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'devicepcis_id' => $port_id, 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $port["designation"]), $import_device); unset($import_device[$tmp]); } } } } } break; case "Item_DeviceProcessor": $CompDevice = new $devicetype(); //Processeurs: if ($cfg_ocs["import_device_processor"]) { $do_clean = true; $query = "SELECT*\n FROM `hardware`\n WHERE `ID` = '{$ocsid}'\n ORDER BY `ID`"; $result = $PluginOcsinventoryngDBocs->query($query); if ($PluginOcsinventoryngDBocs->numrows($result) == 1) { $line = $PluginOcsinventoryngDBocs->fetch_array($result); $line = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line)); for ($i = 0; $i < $line["PROCESSORN"]; $i++) { $processor = array(); $processor["designation"] = $line["PROCESSORT"]; if (!is_numeric($line["PROCESSORS"])) { $line["PROCESSORS"] = 0; } $processor["frequency_default"] = $line["PROCESSORS"]; $processor["frequence"] = $line["PROCESSORS"]; if (!in_array(stripslashes($prevalue . $processor["designation"]), $import_device)) { $DeviceProcessor = new DeviceProcessor(); $proc_id = $DeviceProcessor->import($processor); if ($proc_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'deviceprocessors_id' => $proc_id, 'frequency' => $line["PROCESSORS"], 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $processor["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'frequency' => $line["PROCESSORS"])); unset($import_device[$tmp]); } } } } break; case "Item_DeviceNetworkCard": //Carte reseau if ($cfg_ocs["import_device_iface"] || $cfg_ocs["import_ip"]) { PluginOcsinventoryngNetworkPort::importNetwork($PluginOcsinventoryngDBocs, $cfg_ocs, $ocsid, $computers_id, $dohistory); } break; case "Item_DeviceGraphicCard": $CompDevice = new $devicetype(); //carte graphique if ($cfg_ocs["import_device_gfxcard"]) { $do_clean = true; $query2 = "SELECT DISTINCT(`NAME`) AS NAME,\n `MEMORY`\n FROM `videos`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n AND `NAME` != ''\n ORDER BY `ID`"; $result2 = $PluginOcsinventoryngDBocs->query($query2); if ($PluginOcsinventoryngDBocs->numrows($result2) > 0) { while ($line2 = $PluginOcsinventoryngDBocs->fetch_array($result2)) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); $video["designation"] = $line2["NAME"]; if (!is_numeric($line2["MEMORY"])) { $line2["MEMORY"] = 0; } if (!in_array(stripslashes($prevalue . $video["designation"]), $import_device)) { $video["memory_default"] = $line2["MEMORY"]; $DeviceGraphicCard = new DeviceGraphicCard(); $video_id = $DeviceGraphicCard->import($video); if ($video_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'devicegraphiccards_id' => $video_id, 'memory' => $line2["MEMORY"], 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $video["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'memory' => $line2["MEMORY"])); unset($import_device[$tmp]); } } } } break; case "Item_DeviceSoundCard": $CompDevice = new $devicetype(); //carte son if ($cfg_ocs["import_device_sound"]) { $do_clean = true; $query2 = "SELECT DISTINCT(`NAME`) AS NAME,\n `DESCRIPTION`\n FROM `sounds`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n AND `NAME` != ''\n ORDER BY `ID`"; $result2 = $PluginOcsinventoryngDBocs->query($query2); if ($PluginOcsinventoryngDBocs->numrows($result2) > 0) { while ($line2 = $PluginOcsinventoryngDBocs->fetch_array($result2)) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if (!$cfg_ocs["ocs_db_utf8"] && !Toolbox::seems_utf8($line2["NAME"])) { $line2["NAME"] = Toolbox::encodeInUtf8($line2["NAME"]); } $snd["designation"] = $line2["NAME"]; if (!in_array(stripslashes($prevalue . $snd["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"])) { $snd["comment"] = $line2["DESCRIPTION"]; } $DeviceSoundCard = new DeviceSoundCard(); $snd_id = $DeviceSoundCard->import($snd); if ($snd_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'devicesoundcards_id' => $snd_id, 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $id = array_search(stripslashes($prevalue . $snd["designation"]), $import_device); unset($import_device[$id]); } } } } break; } // Delete Unexisting Items not found in OCS if ($do_clean && count($import_device)) { foreach ($import_device as $key => $val) { if (!(strpos($key, $devicetype . '$$') === false)) { list($type, $id) = explode(self::FIELD_SEPARATOR, $key); $CompDevice->delete(array('id' => $id, '_no_history' => !$dohistory, 1), true); } } } //TODO Import IP if ($do_clean && count($import_ip) && $devicetype == "Item_DeviceNetworkCard") { foreach ($import_ip as $key => $val) { if ($key > 0) { $netport = new NetworkPort(); $netport->delete(array('id' => $key)); } } } //Alimentation //Carte mere }
$input["logical_number"] = $i; $input["name"] = $_POST["name"] . $add . $i; unset($np->fields["id"]); if ($np->can(-1, CREATE, $input)) { $np->splitInputForElements($input); $np->add($input); $np->updateDependencies(1); } } Event::log(0, "networkport", 5, "inventory", sprintf(__('%s adds several network ports'), $_SESSION["glpiname"])); Html::back(); } } else { if (isset($_POST["purge"])) { $np->check($_POST['id'], PURGE); $np->delete($_POST, 1); Event::log($_POST['id'], "networkport", 5, "inventory", sprintf(__('%s purges an item'), $_SESSION["glpiname"])); if ($item = getItemForItemtype($np->fields['itemtype'])) { Html::redirect($item->getFormURL() . '?id=' . $np->fields['items_id']); } Html::redirect($CFG_GLPI["root_doc"] . "/front/central.php"); } else { if (isset($_POST["update"])) { $np->check($_POST['id'], UPDATE); $np->splitInputForElements($_POST); $np->update($_POST); $np->updateDependencies(1); Event::log($_POST["id"], "networkport", 4, "inventory", sprintf(__('%s updates an item'), $_SESSION["glpiname"])); Html::back(); } else { if (isset($_POST["disconnect"])) {
/** * Purge unmanaged devices * * @param $pram object to purge * * @return nothing * **/ static function purgeUnmanagedDevice($parm) { // Delete XML file if exist $folder = substr($parm->fields["id"], 0, -1); if (empty($folder)) { $folder = '0'; } if (file_exists(GLPI_PLUGIN_DOC_DIR . "/fusioninventory/xml/PluginFusioninventoryUnmanaged/" . $folder . "/" . $parm->fields["id"])) { unlink(GLPI_PLUGIN_DOC_DIR . "/fusioninventory/xml/PluginFusioninventoryUnmanaged/" . $folder . "/" . $parm->fields["id"]); } // Delete Networkports $NetworkPort = new NetworkPort(); $a_ports = $NetworkPort->find("`items_id`='" . $parm->fields["id"] . "'\n AND `itemtype`='PluginFusioninventoryUnmanaged'"); foreach ($a_ports as $a_port) { $NetworkPort->delete($a_port, 1); } }
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; }
function manageNetworkPort($inventory_networkports, $computers_id, $no_history) { global $DB; $networkPort = new NetworkPort(); $networkName = new NetworkName(); $iPAddress = new IPAddress(); $iPNetwork = new IPNetwork(); $networkPortEthernet = new NetworkPortEthernet(); $item_DeviceNetworkCard = new Item_DeviceNetworkCard(); foreach ($inventory_networkports as $a_networkport) { if ($a_networkport['mac'] != '') { $a_networkports = $networkPort->find("`mac`='" . $a_networkport['mac'] . "'\n AND `itemtype`='PluginFusioninventoryUnmanaged'", "", 1); if (count($a_networkports) > 0) { $input = current($a_networkports); $unmanageds_id = $input['items_id']; $input['logical_number'] = $a_networkport['logical_number']; $input['itemtype'] = 'Computer'; $input['items_id'] = $computers_id; $input['is_dynamic'] = 1; $input['name'] = $a_networkport['name']; $networkPort->update($input, !$no_history); $pfUnmanaged = new PluginFusioninventoryUnmanaged(); $pfUnmanaged->delete(array('id' => $unmanageds_id), 1); } } } // end get port from unknwon device $db_networkport = array(); if ($no_history === FALSE) { $query = "SELECT `id`, `name`, `mac`, `instantiation_type`, `logical_number`\n FROM `glpi_networkports`\n WHERE `items_id` = '{$computers_id}'\n AND `itemtype`='Computer'\n AND `is_dynamic`='1'"; $result = $DB->query($query); while ($data = $DB->fetch_assoc($result)) { $idtmp = $data['id']; unset($data['id']); if (is_null($data['mac'])) { $data['mac'] = ''; } if (preg_match("/[^a-zA-Z0-9 \\-_\\(\\)]+/", $data['name'])) { $data['name'] = Toolbox::addslashes_deep($data['name']); } $db_networkport[$idtmp] = array_map('strtolower', $data); } } $simplenetworkport = array(); foreach ($inventory_networkports as $key => $a_networkport) { // Add ipnetwork if not exist if ($a_networkport['gateway'] != '' && $a_networkport['netmask'] != '' && $a_networkport['subnet'] != '') { if (countElementsInTable('glpi_ipnetworks', "`address`='" . $a_networkport['subnet'] . "'\n AND `netmask`='" . $a_networkport['netmask'] . "'\n AND `gateway`='" . $a_networkport['gateway'] . "'\n AND `entities_id`='" . $_SESSION["plugin_fusioninventory_entity"] . "'") == 0) { $input_ipanetwork = array('name' => $a_networkport['subnet'] . '/' . $a_networkport['netmask'] . ' - ' . $a_networkport['gateway'], 'network' => $a_networkport['subnet'] . ' / ' . $a_networkport['netmask'], 'gateway' => $a_networkport['gateway'], 'entities_id' => $_SESSION["plugin_fusioninventory_entity"]); $iPNetwork->add($input_ipanetwork, array(), !$no_history); } } // End add ipnetwork $a_field = array('name', 'mac', 'instantiation_type'); foreach ($a_field as $field) { if (isset($a_networkport[$field])) { $simplenetworkport[$key][$field] = $a_networkport[$field]; } } } foreach ($simplenetworkport as $key => $arrays) { $arrayslower = array_map('strtolower', $arrays); foreach ($db_networkport as $keydb => $arraydb) { $logical_number = $arraydb['logical_number']; unset($arraydb['logical_number']); if ($arrayslower == $arraydb) { if ($inventory_networkports[$key]['logical_number'] != $logical_number) { $input = array(); $input['id'] = $keydb; $input['logical_number'] = $inventory_networkports[$key]['logical_number']; $networkPort->update($input, !$no_history); } // Add / update instantiation_type if (isset($inventory_networkports[$key]['instantiation_type'])) { if ($inventory_networkports[$key]['instantiation_type'] == 'NetworkPortEthernet') { $portsethernet = $networkPortEthernet->find("`networkports_id`='" . $keydb . "'", '', 1); if (count($portsethernet) == 1) { $portethernet = current($portsethernet); $input = $portethernet; } else { $input = array('networkports_id' => $keydb); } if (isset($inventory_networkports[$key]['speed'])) { $input['speed'] = $inventory_networkports[$key]['speed']; $input['speed_other_value'] = $inventory_networkports[$key]['speed']; } if (isset($inventory_networkports[$key]['mac'])) { $networkcards = $item_DeviceNetworkCard->find("`mac`='" . $inventory_networkports[$key]['mac'] . "' " . " AND `itemtype`='Computer'" . " AND `items_id`='" . $computers_id . "'", '', 1); if (count($networkcards) == 1) { $networkcard = current($networkcards); $input['items_devicenetworkcards_id'] = $networkcard['id']; } } $input['_no_history'] = $no_history; if (isset($input['id'])) { $networkPortEthernet->update($input); } else { $networkPortEthernet->add($input); } } } // Get networkname $a_networknames_find = current($networkName->find("`items_id`='" . $keydb . "'\n AND `itemtype`='NetworkPort'", "", 1)); if (!isset($a_networknames_find['id'])) { $a_networkport['entities_id'] = $_SESSION["plugin_fusioninventory_entity"]; $a_networkport['items_id'] = $computers_id; $a_networkport['itemtype'] = "Computer"; $a_networkport['is_dynamic'] = 1; $a_networkport['_no_history'] = $no_history; $a_networkport['items_id'] = $keydb; unset($a_networkport['_no_history']); $a_networkport['is_recursive'] = 0; $a_networkport['itemtype'] = 'NetworkPort'; unset($a_networkport['name']); $a_networkport['_no_history'] = $no_history; $a_networknames_id = $networkName->add($a_networkport, array(), !$no_history); $a_networknames_find['id'] = $a_networknames_id; } // Same networkport, verify ipaddresses $db_addresses = array(); $query = "SELECT `id`, `name` FROM `glpi_ipaddresses`\n WHERE `items_id` = '" . $a_networknames_find['id'] . "'\n AND `itemtype`='NetworkName'"; $result = $DB->query($query); while ($data = $DB->fetch_assoc($result)) { $db_addresses[$data['id']] = $data['name']; } $a_computerinventory_ipaddress = $inventory_networkports[$key]['ipaddress']; foreach ($a_computerinventory_ipaddress as $key2 => $arrays2) { foreach ($db_addresses as $keydb2 => $arraydb2) { if ($arrays2 == $arraydb2) { unset($a_computerinventory_ipaddress[$key2]); unset($db_addresses[$keydb2]); break; } } } if (count($a_computerinventory_ipaddress) == 0 and count($db_addresses) == 0) { // Nothing to do } else { if (count($db_addresses) != 0) { // Delete ip address in DB foreach (array_keys($db_addresses) as $idtmp) { $iPAddress->delete(array('id' => $idtmp), 1); } } if (count($a_computerinventory_ipaddress) != 0) { foreach ($a_computerinventory_ipaddress as $ip) { $input = array(); $input['items_id'] = $a_networknames_find['id']; $input['itemtype'] = 'NetworkName'; $input['name'] = $ip; $input['is_dynamic'] = 1; $iPAddress->add($input, array(), !$no_history); } } } unset($db_networkport[$keydb]); unset($simplenetworkport[$key]); unset($inventory_networkports[$key]); break; } } } if (count($inventory_networkports) == 0 and count($db_networkport) == 0) { // Nothing to do } else { if (count($db_networkport) != 0) { // Delete networkport in DB foreach ($db_networkport as $idtmp => $data) { $networkPort->delete(array('id' => $idtmp), 1); } } if (count($inventory_networkports) != 0) { foreach ($inventory_networkports as $a_networkport) { $a_networkport['entities_id'] = $_SESSION["plugin_fusioninventory_entity"]; $a_networkport['items_id'] = $computers_id; $a_networkport['itemtype'] = "Computer"; $a_networkport['is_dynamic'] = 1; $a_networkport['_no_history'] = $no_history; $a_networkport['items_id'] = $networkPort->add($a_networkport, array(), !$no_history); unset($a_networkport['_no_history']); $a_networkport['is_recursive'] = 0; $a_networkport['itemtype'] = 'NetworkPort'; unset($a_networkport['name']); $a_networkport['_no_history'] = $no_history; $a_networknames_id = $networkName->add($a_networkport, array(), !$no_history); foreach ($a_networkport['ipaddress'] as $ip) { $input = array(); $input['items_id'] = $a_networknames_id; $input['itemtype'] = 'NetworkName'; $input['name'] = $ip; $input['is_dynamic'] = 1; $input['_no_history'] = $no_history; $iPAddress->add($input, array(), !$no_history); } if (isset($a_networkport['instantiation_type'])) { if ($a_networkport['instantiation_type'] == 'NetworkPortEthernet') { $input = array('networkports_id' => $a_networkport['items_id']); if (isset($a_networkport['speed'])) { $input['speed'] = $a_networkport['speed']; $input['speed_other_value'] = $a_networkport['speed']; } if (isset($a_networkport['mac'])) { $networkcards = $item_DeviceNetworkCard->find("`mac`='" . $a_networkport['mac'] . "' " . " AND `itemtype`='Computer'" . " AND `items_id`='" . $computers_id . "'", '', 1); if (count($networkcards) == 1) { $networkcard = current($networkcards); $input['items_devicenetworkcards_id'] = $networkcard['id']; } } $input['_no_history'] = $no_history; $networkPortEthernet->add($input); } } } } } }
$add = "0"; } $input["logical_number"] = $i; $input["name"] = $_POST["name"] . $add . $i; unset($np->fields["id"]); if ($np->can(-1, 'w', $input)) { $np->add($input); } } Event::log(0, "networkport", 5, "inventory", $_SESSION["glpiname"] . " " . ($_POST["to_logical_number"] - $_POST["from_logical_number"] + 1) . " " . $LANG['log'][71]); glpi_header($_SERVER['HTTP_REFERER']); } } else { if (isset($_POST["delete"])) { $np->check($_POST['id'], 'd'); $np->delete($_POST); Event::log($_POST['id'], "networkport", 5, "inventory", $_SESSION["glpiname"] . " " . $LANG['log'][73]); if (class_exists($np->fields['itemtype'])) { $item = new $np->fields['itemtype'](); glpi_header($item->getFormURL() . '?id=' . $np->fields['items_id']); } glpi_header($CFG_GLPI["root_doc"] . "/front/central.php"); } else { if (isset($_POST["delete_several"])) { checkRight("networking", "w"); if (isset($_POST["del_port"]) && count($_POST["del_port"])) { foreach ($_POST["del_port"] as $port_id => $val) { if ($np->can($port_id, 'd')) { $np->delete(array("id" => $port_id)); } }
/** * Import the devices for a computer * * @param $devicetype integer : device type * @param $computers_id integer : glpi computer id. * @param $ocsid integer : ocs computer id (ID). * @param $plugin_ocsinventoryng_ocsservers_id integer : ocs server id * @param $cfg_ocs array : ocs config * @param $import_device array : already imported devices * @param $import_ip array : already imported ip * @param $dohistory boolean : log changes? * * @return Nothing (void). **/ static function updateDevices($devicetype, $computers_id, $ocsComputer, $plugin_ocsinventoryng_ocsservers_id, $cfg_ocs, $import_device, $import_ip, $dohistory) { global $DB; $prevalue = $devicetype . self::FIELD_SEPARATOR; $do_clean = false; $comp = new Computer(); $comp->getFromDB($computers_id); $entities_id = $comp->fields['entities_id']; switch ($devicetype) { case "Item_DeviceMemory": $CompDevice = new $devicetype(); //Memoire $do_clean = true; if ($ocsComputer) { // TODO a revoir // pourquoi supprimer tous les importés ? // En 0.83 cette suppression était lié à la présence du tag // IMPORT_TAG_078, et donc exécuté 1 seule fois pour redressement // Cela pete, je pense, tous les lock //if (count($import_device)){ // $dohistory = false; // foreach ($import_device as $key => $val) { // $tmp = explode(self::FIELD_SEPARATOR,$key); // if (isset($tmp[1]) && $tmp[0] == "Item_DeviceMemory") { // $CompDevice->delete(array('id' => $tmp[1], // '_no_history' => true), 1); // unset($import_device[$key]); // } // } //} if (isset($ocsComputer['MEMORIES'])) { foreach ($ocsComputer['MEMORIES'] as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if (isset($line2["CAPACITY"]) && $line2["CAPACITY"] != "No") { $ram["designation"] = ""; if ($line2["TYPE"] != "Empty Slot" && $line2["TYPE"] != "Unknown") { $ram["designation"] = $line2["TYPE"]; } if ($line2["DESCRIPTION"]) { if (!empty($ram["designation"])) { $ram["designation"] .= " - "; } $ram["designation"] .= $line2["DESCRIPTION"]; } if (!is_numeric($line2["CAPACITY"])) { $line2["CAPACITY"] = 0; } $ram["size_default"] = $line2["CAPACITY"]; $ram["entities_id"] = $entities_id; if (!in_array(stripslashes($prevalue . $ram["designation"]), $import_device)) { $ram["frequence"] = $line2["SPEED"]; $ram["devicememorytypes_id"] = Dropdown::importExternal('DeviceMemoryType', $line2["TYPE"]); $DeviceMemory = new DeviceMemory(); $ram_id = $DeviceMemory->import($ram); if ($ram_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicememories_id' => $ram_id, 'size' => $line2["CAPACITY"], 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $ram["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'size' => $line2["CAPACITY"])); unset($import_device[$tmp]); } } } } } break; case "Item_DeviceHardDrive": $CompDevice = new $devicetype(); //Disque Dur $do_clean = true; if ($ocsComputer) { if (isset($ocsComputer['STORAGES'])) { foreach ($ocsComputer['STORAGES'] as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if (!empty($line2["DISKSIZE"]) && preg_match("/disk|spare\\sdrive/i", $line2["TYPE"])) { if ($line2["NAME"]) { $dd["designation"] = $line2["NAME"]; } else { if ($line2["MODEL"]) { $dd["designation"] = $line2["MODEL"]; } else { $dd["designation"] = "Unknown"; } } if (!is_numeric($line2["DISKSIZE"])) { $line2["DISKSIZE"] = 0; } $dd["entities_id"] = $entities_id; if (!in_array(stripslashes($prevalue . $dd["designation"]), $import_device)) { $dd["capacity_default"] = $line2["DISKSIZE"]; $DeviceHardDrive = new DeviceHardDrive(); $dd_id = $DeviceHardDrive->import($dd); if ($dd_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'deviceharddrives_id' => $dd_id, 'serial' => $line2["SERIALNUMBER"], 'capacity' => $line2["DISKSIZE"], 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $dd["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'capacity' => $line2["DISKSIZE"], 'serial' => $line2["SERIALNUMBER"])); unset($import_device[$tmp]); } } } } } break; case "Item_DeviceDrive": $CompDevice = new $devicetype(); //lecteurs $do_clean = true; if ($ocsComputer) { if (isset($ocsComputer['STORAGES'])) { foreach ($ocsComputer['STORAGES'] as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if (empty($line2["DISKSIZE"]) || !preg_match("/disk/i", $line2["TYPE"])) { if ($line2["NAME"]) { $stor["designation"] = $line2["NAME"]; } else { if ($line2["MODEL"]) { $stor["designation"] = $line2["MODEL"]; } else { $stor["designation"] = "Unknown"; } } $stor["entities_id"] = $entities_id; if (!in_array(stripslashes($prevalue . $stor["designation"]), $import_device)) { $DeviceDrive = new DeviceDrive(); $stor_id = $DeviceDrive->import($stor); if ($stor_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicedrives_id' => $stor_id, 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $stor["designation"]), $import_device); unset($import_device[$tmp]); } } } } } break; case "Item_DevicePci": $CompDevice = new $devicetype(); //Modems $do_clean = true; if ($ocsComputer) { if (isset($ocsComputer['MODEMS'])) { foreach ($ocsComputer['MODEMS'] as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); $mdm["designation"] = $line2["NAME"]; $mdm["entities_id"] = $entities_id; if (!in_array(stripslashes($prevalue . $mdm["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"])) { $mdm["comment"] = $line2["TYPE"] . "\r\n" . $line2["DESCRIPTION"]; } $DevicePci = new DevicePci(); $mdm_id = $DevicePci->import($mdm); if ($mdm_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicepcis_id' => $mdm_id, 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $mdm["designation"]), $import_device); unset($import_device[$tmp]); } } } } //Ports if ($ocsComputer) { if (isset($ocsComputer['PORTS'])) { foreach ($ocsComputer['PORTS'] as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); $port["designation"] = ""; if ($line2["TYPE"] != "Other") { $port["designation"] .= $line2["TYPE"]; } if ($line2["NAME"] != "Not Specified") { $port["designation"] .= " " . $line2["NAME"]; } else { if ($line2["CAPTION"] != "None") { $port["designation"] .= " " . $line2["CAPTION"]; } } $port["entities_id"] = $entities_id; if (!empty($port["designation"])) { if (!in_array(stripslashes($prevalue . $port["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"]) && $line2["DESCRIPTION"] != "None") { $port["comment"] = $line2["DESCRIPTION"]; } $DevicePci = new DevicePci(); $port_id = $DevicePci->import($port); if ($port_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicepcis_id' => $port_id, 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $port["designation"]), $import_device); unset($import_device[$tmp]); } } } } } break; case "Item_DeviceProcessor": $CompDevice = new $devicetype(); //Processeurs: $do_clean = true; if ($ocsComputer) { if (isset($ocsComputer['HARDWARE'])) { $line = $ocsComputer['HARDWARE']; $line = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line)); for ($i = 0; $i < $line["PROCESSORN"]; $i++) { $processor = array(); $processor["designation"] = $line["PROCESSORT"]; if (!is_numeric($line["PROCESSORS"])) { $line["PROCESSORS"] = 0; } $processor["frequency_default"] = $line["PROCESSORS"]; $processor["frequence"] = $line["PROCESSORS"]; $processor["entities_id"] = $entities_id; if (!in_array(stripslashes($prevalue . $processor["designation"]), $import_device)) { $DeviceProcessor = new DeviceProcessor(); $proc_id = $DeviceProcessor->import($processor); if ($proc_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'deviceprocessors_id' => $proc_id, 'frequency' => $line["PROCESSORS"], 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $processor["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'frequency' => $line["PROCESSORS"])); unset($import_device[$tmp]); } } } } break; case "Item_DeviceNetworkCard": //Carte reseau PluginOcsinventoryngNetworkPort::importNetwork($plugin_ocsinventoryng_ocsservers_id, $cfg_ocs, $ocsComputer, $computers_id, $dohistory, $entities_id); break; case "Item_DeviceGraphicCard": $CompDevice = new $devicetype(); //carte graphique $do_clean = true; if ($ocsComputer) { if (isset($ocsComputer['VIDEOS'])) { foreach ($ocsComputer['VIDEOS'] as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if ($line2['NAME']) { $video["designation"] = $line2["NAME"]; $video["entities_id"] = $entities_id; if (!is_numeric($line2["MEMORY"])) { $line2["MEMORY"] = 0; } if (!in_array(stripslashes($prevalue . $video["designation"]), $import_device)) { $video["memory_default"] = $line2["MEMORY"]; $DeviceGraphicCard = new DeviceGraphicCard(); $video_id = $DeviceGraphicCard->import($video); if ($video_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicegraphiccards_id' => $video_id, 'memory' => $line2["MEMORY"], 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $video["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'memory' => $line2["MEMORY"])); unset($import_device[$tmp]); } } } } } break; case "Item_DeviceSoundCard": $CompDevice = new $devicetype(); //carte son $do_clean = true; if ($ocsComputer) { if (isset($ocsComputer['SOUNDS'])) { foreach ($ocsComputer['SOUNDS'] as $line2) { $line2 = Toolbox::clean_cross_side_scripting_deep(Toolbox::addslashes_deep($line2)); if ($line2['NAME']) { if (!$cfg_ocs["ocs_db_utf8"] && !Toolbox::seems_utf8($line2["NAME"])) { $line2["NAME"] = Toolbox::encodeInUtf8($line2["NAME"]); } $snd["entities_id"] = $entities_id; $snd["designation"] = $line2["NAME"]; if (!in_array(stripslashes($prevalue . $snd["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"])) { $snd["comment"] = $line2["DESCRIPTION"]; } $DeviceSoundCard = new DeviceSoundCard(); $snd_id = $DeviceSoundCard->import($snd); if ($snd_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'entities_id' => $entities_id, 'devicesoundcards_id' => $snd_id, 'is_dynamic' => 1, '_no_history' => !$dohistory)); } } else { $id = array_search(stripslashes($prevalue . $snd["designation"]), $import_device); unset($import_device[$id]); } } } } } break; case "PluginOcsinventoryngItem_DeviceBiosdata": $CompDevice = new $devicetype(); //Bios $do_clean = true; if ($ocsComputer) { if (isset($ocsComputer['BIOS'])) { $bios["designation"] = $ocsComputer['BIOS']["BVERSION"]; $bios["assettag"] = $ocsComputer['BIOS']["ASSETTAG"]; $bios["entities_id"] = $entities_id; //$date = str_replace("/", "-", $ocsComputer['BIOS']["BDATE"]); //$date = date("Y-m-d", strtotime($date)); $bios["date"] = $ocsComputer['BIOS']["BDATE"]; $bios["manufacturers_id"] = Dropdown::importExternal('Manufacturer', self::encodeOcsDataInUtf8($cfg_ocs['ocs_db_utf8'], $ocsComputer['BIOS']["SMANUFACTURER"])); if (!in_array(stripslashes($prevalue . $bios["designation"]), $import_device)) { $DeviceBios = new PluginOcsinventoryngDeviceBiosdata(); $bios_id = $DeviceBios->import($bios); if ($bios_id) { $devID = $CompDevice->add(array('items_id' => $computers_id, 'itemtype' => 'Computer', 'plugin_ocsinventoryng_devicebiosdatas_id' => $bios_id, 'is_dynamic' => 1, 'entities_id' => $entities_id, '_no_history' => !$dohistory)); } } else { $tmp = array_search(stripslashes($prevalue . $bios["designation"]), $import_device); unset($import_device[$tmp]); } } } break; } // Delete Unexisting Items not found in OCS if ($do_clean && count($import_device)) { foreach ($import_device as $key => $val) { if (!(strpos($key, $devicetype . '$$') === false)) { list($type, $id) = explode(self::FIELD_SEPARATOR, $key); $CompDevice->delete(array('id' => $id, '_no_history' => !$dohistory, 1), true); } } } //TODO Import IP if ($do_clean && count($import_ip) && $devicetype == "Item_DeviceNetworkCard") { foreach ($import_ip as $key => $val) { if ($key > 0) { $netport = new NetworkPort(); $netport->delete(array('id' => $key)); } } } //Alimentation //Carte mere }
function importPorts($a_inventory, $items_id) { $pfNetworkporttype = new PluginFusioninventoryNetworkporttype(); $networkPort = new NetworkPort(); $pfNetworkPort = new PluginFusioninventoryNetworkPort(); $networkports_id = 0; foreach ($a_inventory['networkport'] as $a_port) { $ifType = $a_port['iftype']; if ($pfNetworkporttype->isImportType($ifType) || isset($a_inventory['aggregate'][$a_port['logical_number']]) || $ifType == '') { $a_ports_DB = current($networkPort->find("`itemtype`='NetworkEquipment'\n AND `items_id`='" . $items_id . "'\n AND `logical_number` = '" . $a_port['logical_number'] . "'", '', 1)); if (!isset($a_ports_DB['id'])) { // Add port if (isset($a_inventory['aggregate']) && isset($a_inventory['aggregate'][$a_port['logical_number']])) { $a_port['instantiation_type'] = 'NetworkPortAggregate'; } else { $a_port['instantiation_type'] = 'NetworkPortEthernet'; } $a_port['items_id'] = $items_id; $a_port['itemtype'] = 'NetworkEquipment'; $networkports_id = $networkPort->add($a_port); unset($a_port['id']); $a_pfnetworkport_DB = current($pfNetworkPort->find("`networkports_id`='" . $networkports_id . "'", '', 1)); $a_port['id'] = $a_pfnetworkport_DB['id']; $a_port['lastup'] = date('Y-m-d H:i:s'); $pfNetworkPort->update($a_port); } else { // Update port $networkports_id = $a_ports_DB['id']; $a_port['id'] = $a_ports_DB['id']; $networkPort->update($a_port); unset($a_port['id']); // Check if pfnetworkport exist. $a_pfnetworkport_DB = current($pfNetworkPort->find("`networkports_id`='" . $networkports_id . "'", '', 1)); $a_port['networkports_id'] = $networkports_id; if (isset($a_pfnetworkport_DB['id'])) { $a_port['id'] = $a_pfnetworkport_DB['id']; if ($a_port['ifstatus'] == 0 && $a_pfnetworkport_DB['ifstatus'] == 1) { $a_port['lastup'] = date('Y-m-d H:i:s'); } $pfNetworkPort->update($a_port); } else { $a_port['networkports_id'] = $networkports_id; $a_port['lastup'] = date('Y-m-d H:i:s'); $pfNetworkPort->add($a_port); } } // Connections if (isset($a_inventory['connection-lldp'][$a_port['logical_number']])) { $this->importConnectionLLDP($a_inventory['connection-lldp'][$a_port['logical_number']], $networkports_id); } else { if (isset($a_inventory['connection-mac'][$a_port['logical_number']])) { $this->importConnectionMac($a_inventory['connection-mac'][$a_port['logical_number']], $networkports_id); } } // Vlan if (isset($a_inventory['vlans'][$a_port['logical_number']])) { $this->importPortVlan($a_inventory['vlans'][$a_port['logical_number']], $networkports_id); } // Aggegation if (isset($a_inventory['aggregate']) && isset($a_inventory['aggregate'][$a_port['logical_number']])) { $this->importPortAggregate($a_inventory['aggregate'][$a_port['logical_number']], $networkports_id, $items_id); } } else { // Delete the port $a_ports_DB = current($networkPort->find("`itemtype`='NetworkEquipment'\n AND `items_id`='" . $items_id . "'\n AND `logical_number` = '" . $a_port['logical_number'] . "'", '', 1)); if (count($a_ports_DB) > 0) { $networkPort->delete($a_ports_DB); } } } }
/** * Transfer network links * * @param $itemtype original type of transfered item * @param $ID original ID of the item * @param $newID new ID of the item * @param $ocs_computer if computer type OCS ID of the item if available **/ function transferNetworkLink($itemtype, $ID, $newID, $ocs_computer = false) { global $DB; $np = new NetworkPort(); $nn = new NetworkPort_NetworkPort(); $query = "SELECT *\n FROM `glpi_networkports`\n WHERE `items_id` = '{$ID}'\n AND `itemtype` = '{$itemtype}'"; if ($result = $DB->query($query)) { if ($DB->numrows($result) != 0) { switch ($this->options['keep_networklink']) { // Delete netport case 0: // Not a copy -> delete if ($ID == $newID) { while ($data = $DB->fetch_array($result)) { $np->delete(array('id' => $data['id'])); } // Only case of ocs link update is needed (if netports are keep nothing to do) if ($ocs_computer) { $query = "UPDATE `glpi_ocslinks`\n SET `import_ip` = NULL\n WHERE `computers_id` = '{$ID}'"; $DB->query($query); } } // Copy -> do nothing break; // Disconnect // Disconnect case 1: // Not a copy -> disconnect if ($ID == $newID) { while ($data = $DB->fetch_array($result)) { if ($nn->getFromDBForNetworkPort($data['id'])) { $nn->delete($data); } if ($data['netpoints_id']) { $netpointID = $this->transferDropdownNetpoint($data['netpoints_id']); $input['id'] = $data['id']; $input['netpoints_id'] = $netpointID; $np->update($input); } } } else { // Copy -> copy netports while ($data = $DB->fetch_array($result)) { $data = addslashes_deep($data); unset($data['id']); $data['items_id'] = $newID; $data['netpoints_id'] = $this->transferDropdownNetpoint($data['netpoints_id']); unset($np->fields); $np->add($data); } } break; // Keep network links // Keep network links default: // Copy -> Copy netpoints (do not keep links) if ($ID != $newID) { while ($data = $DB->fetch_array($result)) { unset($data['id']); $data['items_id'] = $newID; $data['netpoints_id'] = $this->transferDropdownNetpoint($data['netpoints_id']); unset($np->fields); $np->add($data); } } else { while ($data = $DB->fetch_array($result)) { // Not a copy -> only update netpoint if ($data['netpoints_id']) { $netpointID = $this->transferDropdownNetpoint($data['netpoints_id']); $input['id'] = $data['id']; $input['netpoints_id'] = $netpointID; $np->update($input); } } } } } } }
$input["logical_number"] = $i; $input["name"] = $_POST["name"] . $add . $i; unset($np->fields["id"]); if ($np->can(-1, 'w', $input)) { $np->splitInputForElements($input); $np->add($input); $np->updateDependencies(1); } } Event::log(0, "networkport", 5, "inventory", sprintf(__('%s adds several network ports'), $_SESSION["glpiname"])); Html::back(); } } else { if (isset($_POST["delete"])) { $np->check($_POST['id'], 'd'); $np->delete($_POST); Event::log($_POST['id'], "networkport", 5, "inventory", sprintf(__('%s purges an item'), $_SESSION["glpiname"])); if ($item = getItemForItemtype($np->fields['itemtype'])) { Html::redirect($item->getFormURL() . '?id=' . $np->fields['items_id']); } Html::redirect($CFG_GLPI["root_doc"] . "/front/central.php"); } else { if (isset($_POST["update"])) { $np->check($_POST['id'], 'w'); $np->splitInputForElements($_POST); $np->update($_POST); $np->updateDependencies(1); Event::log($_POST["id"], "networkport", 4, "inventory", sprintf(__('%s updates an item'), $_SESSION["glpiname"])); Html::back(); } else { if (isset($_POST["disconnect"])) {
function pluginFusioninventoryUpdate($current_version, $migrationname = 'Migration') { global $DB; ini_set("max_execution_time", "0"); ini_set("memory_limit", "-1"); foreach (glob(GLPI_ROOT . '/plugins/fusioninventory/inc/*.php') as $file) { require_once $file; } $migration = new $migrationname($current_version); $prepare_task = array(); $prepare_rangeip = array(); $prepare_Config = array(); $a_plugin = plugin_version_fusioninventory(); $plugins_id = PluginFusioninventoryModule::getModuleId($a_plugin['shortname']); $migration->displayMessage("Migration Classname : " . $migrationname); $migration->displayMessage("Update of plugin FusionInventory"); /* * Check if folders are correctly created */ if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/tmp')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/tmp'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/computer')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/computer'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/printer')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/printer'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/networkequipment')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/xml/networkequipment'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/walks')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/walks'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/tmpmodels')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/tmpmodels'); } /* * Deploy folders */ if (is_dir(GLPI_PLUGIN_DOC_DIR . '/fusinvdeploy/files')) { rename(GLPI_PLUGIN_DOC_DIR . '/fusinvdeploy/files', GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files'); } if (is_dir(GLPI_PLUGIN_DOC_DIR . '/fusinvdeploy/repository')) { rename(GLPI_PLUGIN_DOC_DIR . '/fusinvdeploy/repository', GLPI_PLUGIN_DOC_DIR . '/fusioninventory/repository'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/repository')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/repository'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/manifests')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/manifests'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/import')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/import'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/export')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files/export'); } if (is_dir(GLPI_PLUGIN_DOC_DIR . '/fusinvdeploy/upload')) { rename(GLPI_PLUGIN_DOC_DIR . '/fusinvdeploy/upload', GLPI_PLUGIN_DOC_DIR . '/fusioninventory/upload'); } if (!is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/upload')) { mkdir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/upload'); } /* * Rename fileparts without .gz extension (cf #1999) */ if (is_dir(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files')) { $gzfiles = pluginFusioninventoryFindFiles(GLPI_PLUGIN_DOC_DIR . '/fusioninventory/files', '/\\.gz$/'); foreach ($gzfiles as $file) { $fileWithoutExt = pathinfo($file, PATHINFO_DIRNAME) . '/' . pathinfo($file, PATHINFO_FILENAME); rename($file, $fileWithoutExt); } } unset($gzfiles); /* * Rename tables from old version of FuionInventory (2.2.1 for example) */ $migration->renameTable("glpi_plugin_fusioninventory_rangeip", "glpi_plugin_fusioninventory_ipranges"); $migration->renameTable("glpi_plugin_fusioninventory_lock", "glpi_plugin_fusioninventory_locks"); $migration->renameTable("glpi_plugin_fusioninventory_unknown_device", "glpi_plugin_fusioninventory_unknowndevices"); $migration->renameTable("glpi_plugin_fusioninventory_config", "glpi_plugin_fusioninventory_configs"); $migration->renameTable("glpi_plugin_fusioninventory_networking_ports", "glpi_plugin_fusinvsnmp_networkports"); $migration->renameTable("glpi_plugin_fusioninventory_construct_device", "glpi_plugin_fusinvsnmp_constructdevices"); $migration->renameTable("glpi_plugin_fusioninventory_construct_mibs", "glpi_plugin_fusioninventory_snmpmodelconstructdevice_miboids"); $migration->renameTable("glpi_plugin_fusioninventory_networking", "glpi_plugin_fusioninventory_networkequipments"); $migration->renameTable("glpi_plugin_fusioninventory_networking_ifaddr", "glpi_plugin_fusinvsnmp_networkequipmentips"); $migration->renameTable("glpi_plugin_fusioninventory_printers", "glpi_plugin_fusinvsnmp_printers"); $migration->renameTable("glpi_plugin_fusioninventory_printers_cartridges", "glpi_plugin_fusinvsnmp_printercartridges"); $migration->renameTable("glpi_plugin_fusioninventory_printers_history", "glpi_plugin_fusinvsnmp_printerlogs"); $migration->renameTable("glpi_plugin_fusioninventory_model_infos", "glpi_plugin_fusioninventory_snmpmodels"); $migration->renameTable("glpi_plugin_fusioninventory_mib_networking", "glpi_plugin_fusinvsnmp_modelmibs"); $migration->renameTable("glpi_plugin_fusioninventory_snmp_connection", "glpi_plugin_fusinvsnmp_configsecurities"); $migration->renameTable("glpi_plugin_fusioninventory_snmp_history", "glpi_plugin_fusinvsnmp_networkportlogs"); $migration->renameTable("glpi_plugin_fusioninventory_snmp_history_connections", "glpi_plugin_fusinvsnmp_networkportconnectionlogs"); $a_droptable = array('glpi_plugin_fusioninventory_agents_inventory_state', 'glpi_plugin_fusioninventory_config_modules', 'glpi_plugin_fusioninventory_connection_stats', 'glpi_plugin_fusioninventory_discovery', 'glpi_plugin_fusioninventory_errors', 'glpi_plugin_fusioninventory_lockable', 'glpi_plugin_fusioninventory_connection_history', 'glpi_plugin_fusioninventory_walks', 'glpi_plugin_fusioninventory_config_snmp_history', 'glpi_plugin_fusioninventory_config_snmp_networking', 'glpi_plugin_fusioninventory_task', 'glpi_plugin_fusinvinventory_pcidevices', 'glpi_plugin_fusinvinventory_pcivendors', 'glpi_plugin_fusinvinventory_usbdevices', 'glpi_plugin_fusinvinventory_usbvendors', 'glpi_plugin_fusinvsnmp_constructdevicewalks', 'glpi_plugin_fusioninventory_snmpmodelmiblabels', 'glpi_plugin_fusioninventory_snmpmodelmibobjects', 'glpi_plugin_fusioninventory_snmpmodelmiboids', 'glpi_plugin_fusioninventory_snmpmodelconstructdevices', 'glpi_plugin_fusioninventory_snmpmodelconstructdevicewalks' . 'glpi_plugin_fusioninventory_snmpmodelconstructdevices_users', 'glpi_plugin_fusioninventory_snmpmodelconstructdevice_miboids', 'glpi_plugin_fusioninventory_snmpmodelmibs', 'glpi_plugin_fusioninventory_snmpmodels', 'glpi_plugin_fusioninventory_snmpmodeldevices', 'glpi_plugin_fusinvsnmp_constructdevice_miboids', 'glpi_plugin_fusinvsnmp_constructdevices', 'glpi_plugin_fusinvsnmp_constructdevices_users', 'glpi_plugin_fusinvsnmp_miblabels', 'glpi_plugin_fusinvsnmp_mibobjects', 'glpi_plugin_fusinvsnmp_miboids', 'glpi_plugin_fusinvsnmp_modeldevices', 'glpi_plugin_fusinvsnmp_modelmibs', 'glpi_plugin_fusinvsnmp_models', 'glpi_plugin_fusioninventory_construct_walks'); foreach ($a_droptable as $newTable) { $migration->dropTable($newTable); } /* $a_table = array(); //table name $a_table['name'] = ''; $a_table['oldname'] = array( ); // fields : fields that are new, have changed type or just stay the same // array( // <fieldname> = array( // 'type' => <type>, 'value' => <value>) // ); $a_table['fields'] = array( ); // oldfields = fields that need to be removed // array( 'field0', 'field1', ...); $a_table['oldfields'] = array( ); // renamefields = fields that need to be renamed // array('oldname' = 'newname', ...) $a_table['renamefields'] = array( ); // keys : new, changed or not // array( 'field' => <fields>, 'name' => <keyname> , 'type' => <keytype>) // <fields> : fieldnames needed by the key // ex : array('field0' , 'field1' ...) // ex : 'fieldname' // <keyname> : the name of the key (if blank, the fieldname is used) // <type> : the type of key (ex: INDEX, ...) $a_table['keys'] = array( ); // oldkeys : keys that need to be removed // array( 'key0', 'key1', ... ) $a_table['oldkeys'] = array( ); */ //Push task functionnality $migration->addField('glpi_plugin_fusioninventory_tasks', 'last_agent_wakeup', 'datetime'); $migration->addField('glpi_plugin_fusioninventory_tasks', 'wakeup_agent_counter', "int(11) NOT NULL DEFAULT '0'"); $migration->addField('glpi_plugin_fusioninventory_tasks', 'wakeup_agent_time', "int(11) NOT NULL DEFAULT '0'"); $migration->addKey('glpi_plugin_fusioninventory_tasks', 'wakeup_agent_counter'); $migration->migrationOneTable('glpi_plugin_fusioninventory_tasks'); /* * Table glpi_plugin_fusioninventory_agents */ $newTable = "glpi_plugin_fusioninventory_agents"; $prepare_agentConfig = array(); if (TableExists("glpi_plugin_tracker_agents") and FieldExists("glpi_plugin_tracker_agents", "ifaddr_start")) { $query = "SELECT * FROM `glpi_plugin_tracker_agents`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $prepare_rangeip[] = array("ip_start" => $data['ifaddr_start'], "ip_end" => $data['ifaddr_end'], "name" => $data['name']); $prepare_agentConfig[] = array("name" => $data["name"], "lock" => $data['lock'], "threads_networkinventory" => $data['nb_process_query'], "threads_networkdiscovery" => $data['nb_process_discovery']); } } else { if (TableExists("glpi_plugin_tracker_agents") and FieldExists("glpi_plugin_tracker_agents", "core_discovery")) { $query = "SELECT * FROM `glpi_plugin_tracker_agents`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $prepare_agentConfig[] = array("name" => $data["name"], "lock" => $data['lock'], "threads_networkinventory" => $data['threads_query'], "threads_networkdiscovery" => $data['threads_discovery']); } } else { if (TableExists("glpi_plugin_fusioninventory_agents")) { if (FieldExists($newTable, "module_snmpquery")) { $query = "SELECT * FROM `glpi_plugin_fusioninventory_agents`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $prepare_agentConfig[] = array("id" => $data["ID"], "threads_networkinventory" => $data['threads_query'], "threads_networkdiscovery" => $data['threads_discovery'], "NETORKINVENTORY" => $data['module_snmpquery'], "NETWORKDISCOVERY" => $data['module_netdiscovery'], "INVENTORY" => $data['module_inventory'], "WAKEONLAN" => $data['module_wakeonlan']); } } } } } $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_agents'; $a_table['oldname'] = array('glpi_plugin_tracker_agents'); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['entities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['is_recursive'] = array('type' => 'bool', 'value' => '1'); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['last_contact'] = array('type' => 'datetime', 'value' => NULL); $a_table['fields']['version'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['lock'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['device_id'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['computers_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['token'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['useragent'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['tag'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['threads_networkdiscovery'] = array('type' => "int(4) NOT NULL DEFAULT '1' COMMENT 'array(xmltag=>value)'", 'value' => NULL); $a_table['fields']['threads_networkinventory'] = array('type' => "int(4) NOT NULL DEFAULT '1' COMMENT 'array(xmltag=>value)'", 'value' => NULL); $a_table['fields']['senddico'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['timeout_networkdiscovery'] = array('type' => "int(4) NOT NULL DEFAULT '0' COMMENT 'Network Discovery task timeout'", 'value' => NULL); $a_table['fields']['timeout_networkinventory'] = array('type' => "int(4) NOT NULL DEFAULT '0' COMMENT 'Network Inventory task timeout'", 'value' => NULL); $a_table['fields']['agent_port'] = array('type' => 'varchar(6)', 'value' => NULL); $a_table['oldfields'] = array('module_snmpquery', 'module_netdiscovery', 'module_inventory', 'module_wakeonlan', 'core_discovery', 'threads_discovery', 'core_query', 'threads_query', 'tracker_agent_version', 'logs', 'fragment', 'itemtype', 'device_type'); $a_table['renamefields'] = array(); $a_table['renamefields']['ID'] = 'id'; $a_table['renamefields']['last_agent_update'] = 'last_contact'; $a_table['renamefields']['fusioninventory_agent_version'] = 'version'; $a_table['renamefields']['key'] = 'device_id'; $a_table['renamefields']['on_device'] = 'computers_id'; $a_table['renamefields']['items_id'] = 'computers_id'; $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'name', 'name' => '', 'type' => 'INDEX'); $a_table['keys'][] = array('field' => 'device_id', 'name' => '', 'type' => 'INDEX'); $a_table['keys'][] = array('field' => 'computers_id', 'name' => '', 'type' => 'INDEX'); $a_table['oldkeys'] = array('key'); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_agentmodules */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_agentmodules'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['modulename'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['is_active'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['exceptions'] = array('type' => 'text', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['oldfields'][] = 'plugins_id'; $a_table['oldfields'][] = 'entities_id'; $a_table['oldfields'][] = 'url'; $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'modulename', 'name' => '', 'type' => 'UNIQUE'); $a_table['oldkeys'] = array('unicity', 'entities_id'); migrateTablesFusionInventory($migration, $a_table); /* * Add Deploy module */ $query = "SELECT `id` FROM `glpi_plugin_fusioninventory_agentmodules`\n WHERE `modulename`='DEPLOY'"; $result = $DB->query($query); if (!$DB->numrows($result)) { $query_ins = "INSERT INTO `glpi_plugin_fusioninventory_agentmodules`\n (`modulename`, `is_active`, `exceptions`)\n VALUES ('DEPLOY', '0', '" . exportArrayToDB(array()) . "')"; $DB->query($query_ins); } /* * Add WakeOnLan module appear in version 2.3.0 */ $query = "SELECT `id` FROM `glpi_plugin_fusioninventory_agentmodules`\n WHERE `modulename`='WAKEONLAN'"; $result = $DB->query($query); if (!$DB->numrows($result)) { $query_ins = "INSERT INTO `glpi_plugin_fusioninventory_agentmodules`\n (`modulename`, `is_active`, `exceptions`)\n VALUES ('WAKEONLAN', '0', '" . exportArrayToDB(array()) . "')"; $DB->query($query_ins); } /* * Add SNMPQUERY module if not present */ $query = "UPDATE `glpi_plugin_fusioninventory_agentmodules`\n SET `modulename`='NETWORKINVENTORY'\n WHERE `modulename`='SNMPQUERY'"; $DB->query($query); $query = "SELECT `id` FROM `glpi_plugin_fusioninventory_agentmodules`\n WHERE `modulename`='NETWORKINVENTORY'"; $result = $DB->query($query); if (!$DB->numrows($result)) { $agentmodule = new PluginFusioninventoryAgentmodule(); $input = array(); $input['modulename'] = "NETWORKINVENTORY"; $input['is_active'] = 0; $input['exceptions'] = exportArrayToDB(array()); $agentmodule->add($input); } /* * Add NETDISCOVERY module if not present */ $query = "UPDATE `glpi_plugin_fusioninventory_agentmodules`\n SET `modulename`='NETWORKDISCOVERY'\n WHERE `modulename`='NETDISCOVERY'"; $DB->query($query); $query = "SELECT `id` FROM `glpi_plugin_fusioninventory_agentmodules`\n WHERE `modulename`='NETWORKDISCOVERY'"; $result = $DB->query($query); if (!$DB->numrows($result)) { $agentmodule = new PluginFusioninventoryAgentmodule(); $input = array(); $input['modulename'] = "NETWORKDISCOVERY"; $input['is_active'] = 0; $input['exceptions'] = exportArrayToDB(array()); $agentmodule->add($input); } /* * Add INVENTORY module if not present */ $query = "SELECT `id` FROM `glpi_plugin_fusioninventory_agentmodules`\n WHERE `modulename`='INVENTORY'"; $result = $DB->query($query); if (!$DB->numrows($result)) { $agentmodule = new PluginFusioninventoryAgentmodule(); $input = array(); $input['modulename'] = "INVENTORY"; $input['is_active'] = 1; $input['exceptions'] = exportArrayToDB(array()); $agentmodule->add($input); } /* * Table glpi_plugin_fusioninventory_configs */ $newTable = "glpi_plugin_fusioninventory_configs"; if (TableExists('glpi_plugin_tracker_config')) { if (FieldExists('glpi_plugin_tracker_config', 'ssl_only')) { $query = "SELECT * FROM `glpi_plugin_tracker_config`\n LIMIT 1"; $result = $DB->query($query); if ($DB->numrows($result) > 0) { $data = $DB->fetch_assoc($result); $prepare_Config['ssl_only'] = $data['ssl_only']; } } // $query = "SELECT * FROM `glpi_plugin_tracker_config` // WHERE `type`='version' // LIMIT 1, 10"; // $result=$DB->query($query); // while ($data=$DB->fetch_array($result)) { // $DB->query("DELETE FROM `glpi_plugin_tracker_config` // WHERE `ID`='".$data['ID']."'"); // } } if (TableExists('glpi_plugin_fusioninventory_configs')) { $id = 'id'; if (FieldExists('glpi_plugin_fusioninventory_configs', 'ID')) { $id = 'ID'; } $query = "SELECT * FROM `glpi_plugin_fusioninventory_configs`\n WHERE `type`='version'\n LIMIT 1, 10"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $DB->query("DELETE FROM `glpi_plugin_fusioninventory_configs`\n WHERE `" . $id . "`='" . $data[$id] . "'"); } } $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_configs'; $a_table['oldname'] = array('glpi_plugin_tracker_config'); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['type'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['value'] = array('type' => 'string', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['oldfields'][] = 'version'; $a_table['oldfields'][] = 'URL_agent_conf'; $a_table['oldfields'][] = 'ssl_only'; $a_table['oldfields'][] = 'authsnmp'; $a_table['oldfields'][] = 'inventory_frequence'; $a_table['oldfields'][] = 'criteria1_ip'; $a_table['oldfields'][] = 'criteria1_name'; $a_table['oldfields'][] = 'criteria1_serial'; $a_table['oldfields'][] = 'criteria1_macaddr'; $a_table['oldfields'][] = 'criteria2_ip'; $a_table['oldfields'][] = 'criteria2_name'; $a_table['oldfields'][] = 'criteria2_serial'; $a_table['oldfields'][] = 'criteria2_macaddr'; $a_table['oldfields'][] = 'delete_agent_process'; $a_table['oldfields'][] = 'activation_history'; $a_table['oldfields'][] = 'activation_connection'; $a_table['oldfields'][] = 'activation_snmp_computer'; $a_table['oldfields'][] = 'activation_snmp_networking'; $a_table['oldfields'][] = 'activation_snmp_peripheral'; $a_table['oldfields'][] = 'activation_snmp_phone'; $a_table['oldfields'][] = 'activation_snmp_printer'; $a_table['oldfields'][] = 'plugins_id'; $a_table['oldfields'][] = 'module'; $a_table['renamefields'] = array(); $a_table['renamefields']['ID'] = 'id'; $a_table['keys'] = array(); $a_table['keys'][] = array('field' => array("type"), 'name' => 'unicity', 'type' => 'UNIQUE'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_entities */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_entities'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['entities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['transfers_id_auto'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['agent_base_url'] = array('type' => 'string', 'value' => ''); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => array('entities_id', 'transfers_id_auto'), 'name' => 'entities_id', 'type' => 'INDEX'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); if (countElementsInTable($a_table['name']) == 0) { $a_configs = getAllDatasFromTable('glpi_plugin_fusioninventory_configs', "`type`='transfers_id_auto'"); $transfers_id_auto = 0; if (count($a_configs) > 0) { $a_config = current($a_configs); $transfers_id_auto = $a_config['value']; } $a_configs = getAllDatasFromTable('glpi_plugin_fusioninventory_configs', "`type`='agent_base_url'"); $agent_base_url = ''; if (count($a_configs) > 0) { $a_config = current($a_configs); $agent_base_url = $a_config['value']; } $DB->query("INSERT INTO `glpi_plugin_fusioninventory_entities`\n (`entities_id`, `transfers_id_auto`, `agent_base_url`)\n VALUES ('0', '" . $transfers_id_auto . "', '" . $agent_base_url . "');"); } else { if (countElementsInTable($a_table['name']) > 0) { $a_configs = getAllDatasFromTable('glpi_plugin_fusioninventory_configs', "`type`='agent_base_url'"); $agent_base_url = ''; if (count($a_configs) > 0) { $a_config = current($a_configs); $agent_base_url = $a_config['value']; $DB->query("UPDATE `glpi_plugin_fusioninventory_entities`\n SET `agent_base_url` = '" . $agent_base_url . "'\n ;"); } } } /* * Table glpi_plugin_fusioninventory_credentials */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_credentials'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['entities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['is_recursive'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['name'] = array('type' => 'string', 'value' => ""); $a_table['fields']['username'] = array('type' => 'string', 'value' => ""); $a_table['fields']['password'] = array('type' => 'string', 'value' => ""); $a_table['fields']['comment'] = array('type' => 'text', 'value' => NULL); $a_table['fields']['date_mod'] = array('type' => 'datetime', 'value' => NULL); $a_table['fields']['itemtype'] = array('type' => 'string', 'value' => ""); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); // Fix itemtype changed in 0.84 $DB->query("UPDATE `glpi_plugin_fusioninventory_credentials`\n SET `itemtype`='PluginFusioninventoryInventoryComputerESX'\n WHERE `itemtype`='PluginFusinvinventoryVmwareESX'"); /* * Table glpi_plugin_fusioninventory_credentialips */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_credentialips'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['entities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_credentials_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['name'] = array('type' => 'string', 'value' => ""); $a_table['fields']['comment'] = array('type' => 'text', 'value' => NULL); $a_table['fields']['ip'] = array('type' => 'string', 'value' => ""); $a_table['fields']['date_mod'] = array('type' => 'datetime', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_ipranges */ $newTable = "glpi_plugin_fusioninventory_ipranges"; if (TableExists("glpi_plugin_tracker_rangeip")) { // Get all data to create task $query = "SELECT * FROM `glpi_plugin_tracker_rangeip`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { if ($data['discover'] == '1') { $prepare_task[] = array("agents_id" => $data['FK_tracker_agents'], "ipranges_id" => $data['ID'], "netdiscovery" => "1"); } if ($data['query'] == '1') { $prepare_task[] = array("agents_id" => $data['FK_tracker_agents'], "ipranges_id" => $data['ID'], "snmpquery" => "1"); } } } if (TableExists("glpi_plugin_fusioninventory_rangeip") and FieldExists("glpi_plugin_fusioninventory_rangeip", "FK_fusioninventory_agents_discover")) { // Get all data to create task $query = "SELECT * FROM `glpi_plugin_fusioninventory_rangeip`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { if ($data['discover'] == '1') { $prepare_task[] = array("agents_id" => $data['FK_fusioninventory_agents_discover'], "ipranges_id" => $data['ID'], "netdiscovery" => "1"); } if ($data['query'] == '1') { $prepare_task[] = array("agents_id" => $data['FK_fusioninventory_agents_query'], "ipranges_id" => $data['ID'], "snmpquery" => "1"); } } } $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_ipranges'; $a_table['oldname'] = array('glpi_plugin_tracker_rangeip', 'glpi_plugin_fusinvsnmp_ipranges'); $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => ''), 'name' => array('type' => 'string', 'value' => NULL), 'entities_id' => array('type' => 'integer', 'value' => NULL), 'ip_start' => array('type' => 'string', 'value' => NULL), 'ip_end' => array('type' => 'string', 'value' => NULL)); $a_table['oldfields'] = array('FK_tracker_agents', 'discover', 'query', 'FK_fusioninventory_agents_discover', 'FK_fusioninventory_agents_query', 'construct_device_id', 'log', 'comment'); $a_table['renamefields'] = array('ID' => 'id', 'ifaddr_start' => 'ip_start', 'ifaddr_end' => 'ip_end', 'FK_entities' => 'entities_id'); $a_table['keys'] = array(array('field' => 'entities_id', 'name' => '', 'type' => 'INDEX')); $a_table['oldkeys'] = array('FK_tracker_agents', 'FK_tracker_agents_2'); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_locks */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_locks'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['tablename'] = array('type' => "varchar(64) COLLATE utf8_unicode_ci NOT NULL DEFAULT ''", 'value' => NULL); $a_table['fields']['items_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['tablefields'] = array('type' => 'text', 'value' => NULL); $a_table['oldfields'] = array('itemtype'); $a_table['renamefields'] = array(); $a_table['renamefields']['fields'] = 'tablefields'; $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'tablename', 'name' => '', 'type' => 'INDEX'); $a_table['keys'][] = array('field' => 'items_id', 'name' => '', 'type' => 'INDEX'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_ipranges_configsecurities */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_ipranges_configsecurities'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['plugin_fusioninventory_ipranges_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_configsecurities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['rank'] = array('type' => 'integer', 'value' => '1'); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_mappings */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_mappings'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['itemtype'] = array('type' => "varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL", 'value' => NULL); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['table'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['tablefield'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['locale'] = array('type' => "int(4) NOT NULL DEFAULT '0'", 'value' => NULL); $a_table['fields']['shortlocale'] = array('type' => 'int(4) DEFAULT NULL', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'name', 'name' => '', 'type' => 'INDEX'); $a_table['keys'][] = array('field' => 'itemtype', 'name' => '', 'type' => 'INDEX'); $a_table['keys'][] = array('field' => 'table', 'name' => '', 'type' => 'INDEX'); $a_table['keys'][] = array('field' => 'tablefield', 'name' => '', 'type' => 'INDEX'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); pluginFusioninventoryUpdatemapping(); if (TableExists('glpi_plugin_fusioninventory_profiles')) { /* * Table glpi_plugin_fusioninventory_profiles */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_profiles'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['type'] = array('type' => 'string', 'value' => ''); $a_table['fields']['right'] = array('type' => 'char', 'value' => NULL); $a_table['fields']['plugins_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['profiles_id'] = array('type' => 'integer', 'value' => NULL); $a_table['oldfields'] = array('name', 'interface', 'is_default', 'snmp_networking', 'snmp_printers', 'snmp_models', 'snmp_authentification', 'rangeip', 'agents', 'remotecontrol', 'agentsprocesses', 'unknowndevices', 'reports', 'deviceinventory', 'netdiscovery', 'snmp_query', 'wol', 'configuration'); $a_table['renamefields'] = array(); $a_table['renamefields']['ID'] = 'id'; $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); // Remove multiple lines can have problem with unicity $query = "SELECT * , count(`id`) AS cnt\n FROM `glpi_plugin_fusioninventory_profiles`\n GROUP BY `type`,`plugins_id`,`profiles_id`\n HAVING cnt >1\n ORDER BY cnt"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $queryd = "DELETE FROM `glpi_plugin_fusioninventory_profiles`\n WHERE `type`='" . $data['type'] . "'\n AND `plugins_id`='" . $data['plugins_id'] . "'\n AND `profiles_id`='" . $data['profiles_id'] . "'\n ORDER BY `id` DESC\n LIMIT " . ($data['cnt'] - 1) . " "; $DB->query($queryd); } $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_profiles'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => array("type", "plugins_id", "profiles_id"), 'name' => 'unicity', 'type' => 'UNIQUE'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); } /* * Update tasks related database tables */ pluginFusioninventoryUpdateTasks($migration, $plugins_id); /* * Table glpi_plugin_fusioninventory_timeslots */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_timeslots'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['entities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['is_recursive'] = array('type' => 'bool', 'value' => '0'); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['comment'] = array('type' => 'text', 'value' => NULL); $a_table['fields']['date_mod'] = array('type' => 'datetime', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_timeslotentries */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_timeslotentries'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['plugin_fusioninventory_timeslots_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['entities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['is_recursive'] = array('type' => 'bool', 'value' => '0'); $a_table['fields']['day'] = array('type' => 'bool', 'value' => 1); $a_table['fields']['begin'] = array('type' => 'int(11) DEFAULT NULL', 'value' => NULL); $a_table['fields']['end'] = array('type' => 'int(11) DEFAULT NULL', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_unmanageds */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_unmanageds'; $a_table['oldname'] = array('glpi_plugin_fusioninventory_unknowndevices', 'glpi_plugin_tracker_unknown_device'); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['date_mod'] = array('type' => 'datetime', 'value' => NULL); $a_table['fields']['entities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['locations_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['is_deleted'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['users_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['serial'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['otherserial'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['contact'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['domain'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['comment'] = array('type' => 'text', 'value' => NULL); $a_table['fields']['item_type'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['accepted'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_agents_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['ip'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['hub'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['states_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['sysdescr'] = array('type' => 'text', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_configsecurities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['is_dynamic'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['serialized_inventory'] = array('type' => 'longblob', 'value' => NULL); $a_table['oldfields'] = array('dnsname', 'snmp', 'FK_model_infos', 'FK_snmp_connection', 'FK_agent', 'mac', 'ifmac', 'plugin_fusinvsnmp_models_id', 'plugin_fusioninventory_snmpmodels_id', 'is_template'); $a_table['renamefields'] = array('ID' => 'id', 'comments' => 'comment', 'type' => 'item_type', 'ifaddr' => 'ip', 'FK_entities' => 'entities_id', 'location' => 'locations_id', 'deleted' => 'is_deleted', 'plugin_fusinvsnmp_configsecurities_id' => 'plugin_fusioninventory_configsecurities_id'); $a_table['keys'] = array(array('field' => 'entities_id', 'name' => '', 'type' => 'INDEX'), array('field' => 'plugin_fusioninventory_agents_id', 'name' => '', 'type' => 'INDEX'), array('field' => 'is_deleted', 'name' => '', 'type' => 'INDEX'), array('field' => 'date_mod', 'name' => '', 'type' => 'INDEX')); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); if (TableExists('glpi_plugin_fusinvsnmp_unknowndevices')) { $query = "SELECT * FROM `glpi_plugin_fusinvsnmp_unknowndevices`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $DB->query("UPDATE `glpi_plugin_fusioninventory_unmanageds`\n SET `sysdescr`='" . $data['sysdescr'] . "',\n `plugin_fusioninventory_configsecurities_id`='" . $data['plugin_fusinvsnmp_configsecurities_id'] . "'\n WHERE `id`='" . $data['plugin_fusioninventory_unknowndevices_id'] . "'"); } $migration->dropTable('glpi_plugin_fusinvsnmp_unknowndevices'); } /* * Table glpi_plugin_fusioninventory_ignoredimportdevices */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_ignoredimportdevices'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['date'] = array('type' => 'datetime', 'value' => NULL); $a_table['fields']['itemtype'] = array('type' => "varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL", 'value' => NULL); $a_table['fields']['entities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['ip'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['mac'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['rules_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['method'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['serial'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['uuid'] = array('type' => 'string', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_inventorycomputercriterias */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_inventorycomputercriterias'; $a_table['oldname'] = array('glpi_plugin_fusinvinventory_criterias'); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['comment'] = array('type' => 'text', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'name', 'name' => '', 'type' => 'INDEX'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_rulematchedlogs */ $newTable = "glpi_plugin_fusioninventory_rulematchedlogs"; if (!TableExists($newTable)) { $query = "CREATE TABLE `" . $newTable . "` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"; $DB->query($query); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "date", "datetime DEFAULT NULL"); $migration->addField($newTable, "items_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "itemtype", "varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "rules_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "plugin_fusioninventory_agents_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "method", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_inventorycomputerblacklists */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_inventorycomputerblacklists'; $a_table['oldname'] = array('glpi_plugin_fusinvinventory_blacklists'); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['plugin_fusioninventory_criterium_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['value'] = array('type' => 'string', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'plugin_fusioninventory_criterium_id', 'name' => '', 'type' => 'KEY'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); $DB->list_fields($newTable, FALSE); pluginFusioninventorychangeDisplayPreference("5153", "PluginFusioninventoryUnknownDevice"); pluginFusioninventorychangeDisplayPreference("5158", "PluginFusioninventoryAgent"); /* * Udpate criteria for blacklist */ $a_criteria = array(); $a_criteria['Serial number'] = 'ssn'; $a_criteria['uuid'] = 'uuid'; $a_criteria['Mac address'] = 'macAddress'; $a_criteria['Windows product key'] = 'winProdKey'; $a_criteria['Model'] = 'smodel'; $a_criteria['storage serial'] = 'storagesSerial'; $a_criteria['drives serial'] = 'drivesSerial'; $a_criteria['Asset Tag'] = 'assetTag'; $a_criteria['Computer name'] = 'name'; $a_criteria['Manufacturer'] = 'manufacturer'; foreach ($a_criteria as $name => $comment) { $query = "SELECT * FROM `glpi_plugin_fusioninventory_inventorycomputercriterias`\n WHERE `name`='" . $name . "'"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $query_ins = "INSERT INTO `glpi_plugin_fusioninventory_inventorycomputercriterias`\n (`name`, `comment`)\n VALUES ('" . $name . "', '" . $comment . "')"; $DB->query($query_ins); } } $a_criteria = array(); $query = "SELECT * FROM `glpi_plugin_fusioninventory_inventorycomputercriterias`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $a_criteria[$data['comment']] = $data['id']; } /* * Update blacklist */ $newTable = "glpi_plugin_fusioninventory_inventorycomputerblacklists"; // * ssn $a_input = array('N/A', '(null string)', 'INVALID', 'SYS-1234567890', 'SYS-9876543210', 'SN-12345', 'SN-1234567890', '1111111111', '1111111', '1', '0123456789', '12345', '123456', '1234567', '12345678', '123456789', '1234567890', '123456789000', '12345678901234567', '0000000000', '000000000', '00000000', '0000000', '0000000', 'NNNNNNN', 'xxxxxxxxxxx', 'EVAL', 'IATPASS', 'none', 'To Be Filled By O.E.M.', 'Tulip Computers', 'Serial Number xxxxxx', 'SN-123456fvgv3i0b8o5n6n7k', 'Unknow', 'System Serial Number', 'MB-1234567890', '0', 'empty', 'Not Specified'); foreach ($a_input as $value) { $query = "SELECT * FROM `" . $newTable . "`\n WHERE `plugin_fusioninventory_criterium_id`='" . $a_criteria['ssn'] . "'\n AND `value`='" . $value . "'"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $query = "INSERT INTO `" . $newTable . "`\n (`plugin_fusioninventory_criterium_id`, `value`)\n VALUES ( '" . $a_criteria['ssn'] . "', '" . $value . "')"; $DB->query($query); } } // * uuid $a_input = array('FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF', '03000200-0400-0500-0006-000700080009', '6AB5B300-538D-1014-9FB5-B0684D007B53', '01010101-0101-0101-0101-010101010101'); foreach ($a_input as $value) { $query = "SELECT * FROM `" . $newTable . "`\n WHERE `plugin_fusioninventory_criterium_id`='" . $a_criteria['uuid'] . "'\n AND `value`='" . $value . "'"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $query = "INSERT INTO `" . $newTable . "`\n (`plugin_fusioninventory_criterium_id`, `value`)\n VALUES ( '" . $a_criteria['uuid'] . "', '" . $value . "')"; $DB->query($query); } } // * macAddress $a_input = array('20:41:53:59:4e:ff', '02:00:4e:43:50:49', 'e2:e6:16:20:0a:35', 'd2:0a:2d:a0:04:be', '00:a0:c6:00:00:00', 'd2:6b:25:2f:2c:e7', '33:50:6f:45:30:30', '0a:00:27:00:00:00', '00:50:56:C0:00:01', '00:50:56:C0:00:08', '02:80:37:EC:02:00', '50:50:54:50:30:30', '24:b6:20:52:41:53'); foreach ($a_input as $value) { $query = "SELECT * FROM `" . $newTable . "`\n WHERE `plugin_fusioninventory_criterium_id`='" . $a_criteria['macAddress'] . "'\n AND `value`='" . $value . "'"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $query = "INSERT INTO `" . $newTable . "`\n (`plugin_fusioninventory_criterium_id`, `value`)\n VALUES ( '" . $a_criteria['macAddress'] . "', '" . $value . "')"; $DB->query($query); } } // * smodel $a_input = array('Unknow', 'To Be Filled By O.E.M.', '*', 'System Product Name', 'Product Name', 'System Name'); foreach ($a_input as $value) { $query = "SELECT * FROM `" . $newTable . "`\n WHERE `plugin_fusioninventory_criterium_id`='" . $a_criteria['smodel'] . "'\n AND `value`='" . $value . "'"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $query = "INSERT INTO `" . $newTable . "`\n (`plugin_fusioninventory_criterium_id`, `value`)\n VALUES ( '" . $a_criteria['smodel'] . "', '" . $value . "')"; $DB->query($query); } } // * manufacturer $a_input = array('System manufacturer'); foreach ($a_input as $value) { $query = "SELECT * FROM `" . $newTable . "`\n WHERE `plugin_fusioninventory_criterium_id`='" . $a_criteria['manufacturer'] . "'\n AND `value`='" . $value . "'"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $query = "INSERT INTO `" . $newTable . "`\n (`plugin_fusioninventory_criterium_id`, `value`)\n VALUES ( '" . $a_criteria['manufacturer'] . "', '" . $value . "')"; $DB->query($query); } } // * ip $query = "SELECT * FROM `glpi_plugin_fusioninventory_inventorycomputercriterias`\n WHERE `name`='IP'"; $result = $DB->query($query); if ($DB->numrows($result) == 0) { $DB->query("INSERT INTO `glpi_plugin_fusioninventory_inventorycomputercriterias`\n (`id`, `name`, `comment`) VALUES\n (11, 'IP', 'IP')"); } $a_criteria = array(); $query = "SELECT * FROM `glpi_plugin_fusioninventory_inventorycomputercriterias`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $a_criteria[$data['comment']] = $data['id']; } $a_input = array('0.0.0.0'); foreach ($a_input as $value) { $query = "SELECT * FROM `" . $newTable . "`\n WHERE `plugin_fusioninventory_criterium_id`='" . $a_criteria['IP'] . "'\n AND `value`='" . $value . "'"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $query = "INSERT INTO `" . $newTable . "`\n (`plugin_fusioninventory_criterium_id`, `value`)\n VALUES ( '" . $a_criteria['IP'] . "', '" . $value . "')"; $DB->query($query); } } /* * Table glpi_plugin_fusioninventory_inventorycomputerantiviruses */ $newTable = "glpi_plugin_fusioninventory_inventorycomputerantiviruses"; $migration->renameTable("glpi_plugin_fusinvinventory_antivirus", $newTable); if (!TableExists($newTable)) { $DB->query("CREATE TABLE `" . $newTable . "` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"); } $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "computers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "name", "varchar(255) DEFAULT NULL"); $migration->addField($newTable, "manufacturers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "version", "varchar(255) DEFAULT NULL"); $migration->addField($newTable, "is_active", "tinyint(1) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "uptodate", "tinyint(1) NOT NULL DEFAULT '0'"); $migration->addKey($newTable, "name"); $migration->addKey($newTable, "version"); $migration->addKey($newTable, "is_active"); $migration->addKey($newTable, "uptodate"); $migration->addKey($newTable, "computers_id"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_inventorycomputerbatteries */ $newTable = "glpi_plugin_fusioninventory_inventorycomputerbatteries"; if (!TableExists($newTable)) { $query = "CREATE TABLE `" . $newTable . "` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"; $DB->query($query); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "computers_id", "computers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "name", "name", "varchar(255) DEFAULT NULL"); $migration->changeField($newTable, "manufacturers_id", "manufacturers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "serial", "serial", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "capacity", "capacity", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "date", "date", "datetime DEFAULT NULL"); $migration->changeField($newTable, "plugin_fusioninventory_inventorycomputerchemistries_id", "plugin_fusioninventory_inventorycomputerchemistries_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "voltage", "voltage", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "computers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "name", "varchar(255) DEFAULT NULL"); $migration->addField($newTable, "manufacturers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "serial", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "capacity", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "date", "datetime DEFAULT NULL"); $migration->addField($newTable, "plugin_fusioninventory_inventorycomputerchemistries_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "voltage", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addKey($newTable, "computers_id"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_inventorycomputerchemistries */ $newTable = "glpi_plugin_fusioninventory_inventorycomputerchemistries"; if (!TableExists($newTable)) { $query = "CREATE TABLE `" . $newTable . "` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"; $DB->query($query); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "name", "name", "varchar(255) DEFAULT NULL"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "name", "varchar(255) DEFAULT NULL"); $migration->migrationOneTable($newTable); $migration->addKey($newTable, "name"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_inventorycomputercomputers */ if (TableExists("glpi_plugin_fusinvinventory_computers") and FieldExists("glpi_plugin_fusinvinventory_computers", "uuid")) { $Computer = new Computer(); $sql = "SELECT * FROM `glpi_plugin_fusinvinventory_computers`"; $result = $DB->query($sql); while ($data = $DB->fetch_array($result)) { if ($Computer->getFromDB($data['items_id'])) { $input = array(); $input['id'] = $data['items_id']; $input['uuid'] = $data['uuid']; $Computer->update($input); } } $sql = "DROP TABLE `glpi_plugin_fusinvinventory_computers`"; $DB->query($sql); } if (TableExists("glpi_plugin_fusinvinventory_tmp_agents")) { $sql = "DROP TABLE `glpi_plugin_fusinvinventory_tmp_agents`"; $DB->query($sql); } $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_inventorycomputercomputers'; $a_table['oldname'] = array('glpi_plugin_fusinvinventory_computers'); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['computers_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['bios_date'] = array('type' => 'datetime', 'value' => NULL); $a_table['fields']['bios_version'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['bios_assettag'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['bios_manufacturers_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['operatingsystem_installationdate'] = array('type' => 'datetime', 'value' => NULL); $a_table['fields']['winowner'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['wincompany'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['last_fusioninventory_update'] = array('type' => 'datetime', 'value' => NULL); $a_table['fields']['remote_addr'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_computerarchs_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['serialized_inventory'] = array('type' => 'longblob', 'value' => ""); $a_table['fields']['is_entitylocked'] = array('type' => 'bool', 'value' => "0"); $a_table['fields']['oscomment'] = array('type' => 'text', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'computers_id', 'name' => '', 'type' => 'INDEX'); $a_table['keys'][] = array('field' => 'last_fusioninventory_update', 'name' => '', 'type' => 'INDEX'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); // Migrate libserialization require_once GLPI_ROOT . "/plugins/fusioninventory/inc/inventorycomputercomputer.class.php"; $pfInventoryComputerComputer = new PluginFusioninventoryInventoryComputerComputer(); if (TableExists('glpi_plugin_fusinvinventory_libserialization')) { $query = "SELECT * FROM `glpi_plugin_fusinvinventory_libserialization`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $a_pfcomputer = array(); $a_pfcomputer = current($pfInventoryComputerComputer->find("`computers_id`='" . $data['computers_id'] . "'", "", 1)); if (empty($a_pfcomputer)) { // Add if (countElementsInTable("glpi_computers", "`id`='" . $data['computers_id'] . "'") > 0) { $input = array(); $input['computers_id'] = $data['computers_id']; $input['last_fusioninventory_update'] = $data['last_fusioninventory_update']; $pfInventoryComputerComputer->add($input); } } else { // Update $a_pfcomputer['last_fusioninventory_update'] = $data['last_fusioninventory_update']; $pfInventoryComputerComputer->update($a_pfcomputer); } } } $migration->dropTable('glpi_plugin_fusinvinventory_libserialization'); /* * Table glpi_plugin_fusioninventory_inventorycomputerstats */ if (!TableExists("glpi_plugin_fusioninventory_inventorycomputerstats")) { $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_inventorycomputerstats'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => "smallint(3) NOT NULL AUTO_INCREMENT", 'value' => ''); $a_table['fields']['day'] = array('type' => "smallint(3) NOT NULL DEFAULT '0'", 'value' => ''); $a_table['fields']['hour'] = array('type' => "tinyint(2) NOT NULL DEFAULT '0'", 'value' => ''); $a_table['fields']['counter'] = array('type' => 'integer', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); require_once GLPI_ROOT . "/plugins/fusioninventory/inc/inventorycomputerstat.class.php"; PluginFusioninventoryInventoryComputerStat::init(); } /* * Table glpi_plugin_fusioninventory_inventorycomputerstorages */ $newTable = "glpi_plugin_fusioninventory_inventorycomputerstorages"; if (!TableExists($newTable)) { $query = "CREATE TABLE `" . $newTable . "` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"; $DB->query($query); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "name", "name", "varchar(255) DEFAULT NULL"); $migration->changeField($newTable, "uuid", "uuid", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "totalsize", "totalsize", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "freesize", "freesize", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "plugin_fusioninventory_inventorycomputerstoragetypes_id", "plugin_fusioninventory_inventorycomputerstoragetypes_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "computers_id", "computers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "name", "varchar(255) DEFAULT NULL"); $migration->addField($newTable, "uuid", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "totalsize", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "freesize", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "plugin_fusioninventory_inventorycomputerstoragetypes_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "computers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addKey($newTable, "uuid"); $migration->addKey($newTable, "computers_id"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_inventorycomputerstoragetypes */ $newTable = "glpi_plugin_fusioninventory_inventorycomputerstoragetypes"; if (!TableExists($newTable)) { $query = "CREATE TABLE `" . $newTable . "` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"; $DB->query($query); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "name", "name", "varchar(255) DEFAULT NULL"); $migration->changeField($newTable, "level", "level", "tinyint(2) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "name", "varchar(255) DEFAULT NULL"); $migration->addField($newTable, "level", "tinyint(2) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addKey($newTable, "level"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_inventorycomputerstorages_storages */ $newTable = "glpi_plugin_fusioninventory_inventorycomputerstorages_storages"; if (!TableExists($newTable)) { $query = "CREATE TABLE `" . $newTable . "` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"; $DB->query($query); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "plugin_fusioninventory_inventorycomputerstorages_id_1", "plugin_fusioninventory_inventorycomputerstorages_id_1", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "plugin_fusioninventory_inventorycomputerstorages_id_2", "plugin_fusioninventory_inventorycomputerstorages_id_2", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "plugin_fusioninventory_inventorycomputerstorages_id_1", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "plugin_fusioninventory_inventorycomputerstorages_id_2", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addKey($newTable, "plugin_fusioninventory_inventorycomputerstorages_id_1"); $migration->addKey($newTable, "plugin_fusioninventory_inventorycomputerstorages_id_2"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * glpi_plugin_fusioninventory_configlogfields */ $newTable = "glpi_plugin_fusioninventory_configlogfields"; $migration->renameTable("glpi_plugin_fusioninventory_config_snmp_history", $newTable); $migration->renameTable("glpi_plugin_fusinvsnmp_configlogfields", $newTable); if (TableExists($newTable)) { if (FieldExists($newTable, "field")) { $query = "SELECT * FROM `" . $newTable . "`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $pfMapping = new PluginFusioninventoryMapping(); $mapping = 0; if ($mapping = $pfMapping->get("NetworkEquipment", $data['field'])) { $queryu = "UPDATE `" . $newTable . "`\n SET `field`='" . $mapping['id'] . "'\n WHERE `field`='" . $data['field'] . "'"; $DB->query($queryu); } } } } if (!TableExists($newTable)) { $query = "CREATE TABLE `" . $newTable . "` (\n `id` int(8) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"; $DB->query($query); } $migration->changeField($newTable, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "id", "id", "int(8) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "plugin_fusioninventory_mappings_id", "plugin_fusioninventory_mappings_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "days", "days", "int(255) NOT NULL DEFAULT '-1'"); $migration->migrationOneTable($newTable); $migration->changeField($newTable, "ID", "id", "int(8) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "field", "plugin_fusioninventory_mappings_id", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(8) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "plugin_fusioninventory_mappings_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "days", "int(255) NOT NULL DEFAULT '-1'"); $migration->addKey($newTable, "plugin_fusioninventory_mappings_id"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); $configLogField = new PluginFusioninventoryConfigLogField(); $configLogField->initConfig(); /* * Table glpi_plugin_fusioninventory_networkportconnectionlogs */ $newTable = "glpi_plugin_fusioninventory_networkportconnectionlogs"; $migration->renameTable("glpi_plugin_fusinvsnmp_networkportconnectionlogs", $newTable); if (!TableExists($newTable)) { $DB->query('CREATE TABLE `' . $newTable . '` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1'); } $migration->changeField($newTable, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "date", "date_mod", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->changeField($newTable, "date_mod", "date_mod", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->changeField($newTable, "creation", "creation", "tinyint(1) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "FK_port_source", "networkports_id_source", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "networkports_id_source", "networkports_id_source", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "FK_port_destination", "networkports_id_destination", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "networkports_id_destination", "networkports_id_destination", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "plugin_fusioninventory_agentprocesses_id", "plugin_fusioninventory_agentprocesses_id", "int(11) NOT NULL DEFAULT '0'"); $migration->dropField($newTable, "process_number"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "date_mod", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->addField($newTable, "creation", "tinyint(1) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "networkports_id_source", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "networkports_id_destination", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "plugin_fusioninventory_agentprocesses_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addKey($newTable, array("networkports_id_source", "networkports_id_destination", "plugin_fusioninventory_agentprocesses_id"), "networkports_id_source"); $migration->addKey($newTable, "date_mod"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_networkporttypes */ $newTable = "glpi_plugin_fusioninventory_networkporttypes"; $migration->renameTable("glpi_plugin_fusinvsnmp_networkporttypes", $newTable); if (!TableExists($newTable)) { $query = "CREATE TABLE `" . $newTable . "` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"; $DB->query($query); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "name", "name", "varchar(255) DEFAULT NULL"); $migration->changeField($newTable, "number", "number", "int(4) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "othername", "othername", "varchar(255) DEFAULT NULL"); $migration->changeField($newTable, "import", "import", "tinyint(1) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "name", "varchar(255) DEFAULT NULL"); $migration->addField($newTable, "number", "int(4) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "othername", "varchar(255) DEFAULT NULL"); $migration->addField($newTable, "import", "tinyint(1) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_printers */ $newTable = "glpi_plugin_fusioninventory_printers"; $migration->renameTable("glpi_plugin_fusinvsnmp_printers", $newTable); $migration->renameTable("glpi_plugin_tracker_printers", $newTable); if (!TableExists($newTable)) { $DB->query('CREATE TABLE `' . $newTable . '` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1'); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "printers_id", "printers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "sysdescr", "sysdescr", "text COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "plugin_fusinvsnmp_configsecurities_id", "plugin_fusioninventory_configsecurities_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "plugin_fusioninventory_configsecurities_id", "plugin_fusioninventory_configsecurities_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "frequence_days", "frequence_days", "int(5) NOT NULL DEFAULT '1'"); $migration->changeField($newTable, "last_fusioninventory_update", "last_fusioninventory_update", "datetime DEFAULT NULL"); $migration->migrationOneTable($newTable); $migration->changeField($newTable, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "FK_printers", "printers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "FK_snmp_connection", "plugin_fusioninventory_configsecurities_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "last_tracker_update", "last_fusioninventory_update", "datetime DEFAULT NULL"); $migration->dropKey($newTable, "FK_printers"); $migration->dropKey($newTable, "FK_snmp_connection"); $migration->dropKey($newTable, "plugin_fusioninventory_snmpmodels_id"); $migration->migrationOneTable($newTable); $migration->dropField($newTable, "plugin_fusinvsnmp_models_id"); $migration->dropField($newTable, "plugin_fusioninventory_snmpmodels_id"); $migration->dropField($newTable, "FK_model_infos"); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "printers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "sysdescr", "text COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "plugin_fusioninventory_configsecurities_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "frequence_days", "int(5) NOT NULL DEFAULT '1'"); $migration->addField($newTable, "last_fusioninventory_update", "datetime DEFAULT NULL"); $migration->addField($newTable, "serialized_inventory", "longblob"); $migration->addKey($newTable, "plugin_fusioninventory_configsecurities_id"); $migration->addKey($newTable, "printers_id"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_printerlogs */ $newTable = "glpi_plugin_fusioninventory_printerlogs"; $migration->renameTable("glpi_plugin_fusinvsnmp_printerlogs", $newTable); $migration->renameTable("glpi_plugin_tracker_printers_history", $newTable); if (!TableExists($newTable)) { $DB->query('CREATE TABLE `' . $newTable . '` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1'); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "printers_id", "printers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "date", "date", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->changeField($newTable, "pages_total", "pages_total", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "pages_n_b", "pages_n_b", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "pages_color", "pages_color", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "pages_recto_verso", "pages_recto_verso", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "scanned", "scanned", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "pages_total_print", "pages_total_print", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "pages_n_b_print", "pages_n_b_print", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "pages_color_print", "pages_color_print", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "pages_total_copy", "pages_total_copy", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "pages_n_b_copy", "pages_n_b_copy", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "pages_color_copy", "pages_color_copy", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "pages_total_fax", "pages_total_fax", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->changeField($newTable, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "FK_printers", "printers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "printers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "date", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->addField($newTable, "pages_total", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "pages_n_b", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "pages_color", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "pages_recto_verso", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "scanned", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "pages_total_print", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "pages_n_b_print", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "pages_color_print", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "pages_total_copy", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "pages_n_b_copy", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "pages_color_copy", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "pages_total_fax", "int(11) NOT NULL DEFAULT '0'"); $migration->addKey($newTable, array("printers_id", "date"), "printers_id"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * glpi_plugin_fusioninventory_printercartridges */ $newTable = "glpi_plugin_fusioninventory_printercartridges"; $migration->renameTable("glpi_plugin_fusinvsnmp_printercartridges", $newTable); $migration->renameTable("glpi_plugin_tracker_printers_cartridges", $newTable); if (!TableExists($newTable)) { $DB->query('CREATE TABLE `' . $newTable . '` ( `id` bigint(100) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1'); } $migration->changeField($newTable, "id", "id", "bigint(100) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "printers_id", "printers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "plugin_fusioninventory_mappings_id", "plugin_fusioninventory_mappings_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "cartridges_id", "cartridges_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "state", "state", "int(3) NOT NULL DEFAULT '100'"); $migration->migrationOneTable($newTable); $migration->changeField($newTable, "ID", "id", "bigint(100) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "FK_printers", "printers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "FK_cartridges", "cartridges_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "plugin_fusioninventory_mappings_id", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); // Update with mapping if (FieldExists($newTable, "object_name")) { $query = "SELECT * FROM `" . $newTable . "`\n GROUP BY `object_name`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $pfMapping = new PluginFusioninventoryMapping(); $mapping = 0; if ($mapping = $pfMapping->get("Printer", $data['object_name'])) { $DB->query("UPDATE `" . $newTable . "`\n SET `plugin_fusioninventory_mappings_id`='" . $mapping['id'] . "'\n WHERE `object_name`='" . $data['object_name'] . "'"); } } } $migration->dropField($newTable, "object_name"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "bigint(100) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "printers_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "plugin_fusioninventory_mappings_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "cartridges_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "state", "int(3) NOT NULL DEFAULT '100'"); $migration->addKey($newTable, "printers_id"); $migration->addKey($newTable, "plugin_fusioninventory_mappings_id"); $migration->addKey($newTable, "cartridges_id"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * glpi_plugin_fusioninventory_networkports */ $newTable = "glpi_plugin_fusioninventory_networkports"; $migration->renameTable("glpi_plugin_fusinvsnmp_networkports", $newTable); $migration->renameTable("glpi_plugin_tracker_networking_ports", $newTable); if (!TableExists($newTable)) { $DB->query('CREATE TABLE `' . $newTable . '` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1'); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "networkports_id", "networkports_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "ifmtu", "ifmtu", "int(8) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "ifspeed", "ifspeed", "bigint(50) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "ifinternalstatus", "ifinternalstatus", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "ifconnectionstatus", "ifconnectionstatus", "int(8) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "iflastchange", "iflastchange", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "ifinoctets", "ifinoctets", "bigint(50) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "ifinerrors", "ifinerrors", "bigint(50) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "ifoutoctets", "ifoutoctets", "bigint(50) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "ifouterrors", "ifouterrors", "bigint(50) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "ifstatus", "ifstatus", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "mac", "mac", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "ifdescr", "ifdescr", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "portduplex", "portduplex", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "trunk", "trunk", "tinyint(1) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "lastup", "lastup", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->migrationOneTable($newTable); $migration->changeField($newTable, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "FK_networking_ports", "networkports_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "ifmac", "mac", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->dropKey($newTable, "FK_networking_ports"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "networkports_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "ifmtu", "int(8) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "ifspeed", "bigint(50) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "ifinternalstatus", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "ifconnectionstatus", "int(8) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "iflastchange", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "ifinoctets", "bigint(50) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "ifinerrors", "bigint(50) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "ifoutoctets", "bigint(50) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "ifouterrors", "bigint(50) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "ifstatus", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "mac", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "ifdescr", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "ifalias", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "portduplex", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "trunk", "tinyint(1) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "lastup", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->addKey($newTable, "networkports_id"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_networkequipments */ $newTable = "glpi_plugin_fusioninventory_networkequipments"; $migration->renameTable("glpi_plugin_fusinvsnmp_networkequipments", $newTable); $migration->renameTable("glpi_plugin_tracker_networking", $newTable); if (!TableExists($newTable)) { $DB->query('CREATE TABLE `' . $newTable . '` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1'); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "networkequipments_id", "networkequipments_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "sysdescr", "sysdescr", "text COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "plugin_fusioninventory_configsecurities_id", "plugin_fusioninventory_configsecurities_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "uptime", "uptime", "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "cpu", "cpu", "int(3) NOT NULL DEFAULT '0' COMMENT '%'"); $migration->changeField($newTable, "memory", "memory", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "last_fusioninventory_update", "last_fusioninventory_update", "datetime DEFAULT NULL"); $migration->changeField($newTable, "last_PID_update", "last_PID_update", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->changeField($newTable, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "FK_networking", "networkequipments_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "FK_snmp_connection", "plugin_fusioninventory_configsecurities_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "last_tracker_update", "last_fusioninventory_update", "datetime DEFAULT NULL"); $migration->changeField($newTable, "plugin_fusinvsnmp_configsecurities_id", "plugin_fusioninventory_configsecurities_id", "int(11) NOT NULL DEFAULT '0'"); $migration->dropKey($newTable, "FK_networking"); $migration->dropKey($newTable, "FK_model_infos"); $migration->dropKey($newTable, "plugin_fusioninventory_snmpmodels_id"); $migration->migrationOneTable($newTable); $migration->dropField($newTable, "plugin_fusioninventory_snmpmodels_id"); $migration->dropField($newTable, "plugin_fusinvsnmp_models_id"); $migration->dropField($newTable, "FK_model_infos"); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "networkequipments_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "sysdescr", "text COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "plugin_fusioninventory_configsecurities_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "uptime", "varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0'"); $migration->addField($newTable, "cpu", "int(3) NOT NULL DEFAULT '0' COMMENT '%'"); $migration->addField($newTable, "memory", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "last_fusioninventory_update", "datetime DEFAULT NULL"); $migration->addField($newTable, "last_PID_update", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "serialized_inventory", "longblob"); $migration->addKey($newTable, "networkequipments_id"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * glpi_plugin_fusioninventory_networkequipmentips * Removed in 0.84, but required here for update, we drop in edn of this function */ if (TableExists("glpi_plugin_fusioninventory_networkequipmentips") || TableExists("glpi_plugin_fusinvsnmp_networkequipmentips") || TableExists("glpi_plugin_tracker_networking_ifaddr")) { $newTable = "glpi_plugin_fusioninventory_networkequipmentips"; $migration->renameTable("glpi_plugin_fusinvsnmp_networkequipmentips", $newTable); $migration->renameTable("glpi_plugin_tracker_networking_ifaddr", $newTable); if (!TableExists($newTable)) { $DB->query('CREATE TABLE `' . $newTable . '` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1'); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "networkequipments_id", "networkequipments_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "ip", "ip", "varchar(255) DEFAULT NULL"); $migration->migrationOneTable($newTable); $migration->changeField($newTable, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "FK_networking", "networkequipments_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "ifaddr", "ip", "varchar(255) DEFAULT NULL"); $migration->dropKey($newTable, "ifaddr"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "networkequipments_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "ip", "varchar(255) DEFAULT NULL"); $migration->addKey($newTable, "ip"); $migration->addKey($newTable, "networkequipments_id"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); } /* * Table glpi_plugin_fusioninventory_networkportlogs */ $newTable = "glpi_plugin_fusioninventory_networkportlogs"; if (TableExists("glpi_plugin_tracker_snmp_history")) { // **** Update history update213to220_ConvertField($migration); // **** Migration network history connections $query = "SELECT count(ID) FROM `glpi_plugin_tracker_snmp_history`\n WHERE `Field`='0'"; $result = $DB->query($query); $datas = $DB->fetch_assoc($result); $nb = $datas['count(ID)']; //echo "Move Connections history to another table..."; for ($i = 0; $i < $nb; $i = $i + 500) { $migration->displayMessage("{$i} / {$nb}"); $sql_connection = "SELECT * FROM `glpi_plugin_tracker_snmp_history`\n WHERE `Field`='0'\n ORDER BY `FK_process` DESC, `date_mod` DESC\n LIMIT 500"; $result_connection = $DB->query($sql_connection); while ($thread_connection = $DB->fetch_array($result_connection)) { $input = array(); $input['process_number'] = $thread_connection['FK_process']; $input['date'] = $thread_connection['date_mod']; if ($thread_connection["old_device_ID"] != "0" or $thread_connection["new_device_ID"] != "0") { if ($thread_connection["old_device_ID"] != "0") { // disconnection $input['creation'] = '0'; } else { if ($thread_connection["new_device_ID"] != "0") { // connection $input['creation'] = '1'; } } $input['FK_port_source'] = $thread_connection["FK_ports"]; $dataPort = array(); if ($thread_connection["old_device_ID"] != "0") { $queryPort = "SELECT *\n FROM `glpi_networkports`\n WHERE `mac`='" . $thread_connection['old_value'] . "'\n LIMIT 1"; $resultPort = $DB->query($queryPort); $dataPort = $DB->fetch_assoc($resultPort); } else { if ($thread_connection["new_device_ID"] != "0") { $queryPort = "SELECT *\n FROM `glpi_networkports`\n WHERE `mac`='" . $thread_connection['new_value'] . "'\n LIMIT 1"; $resultPort = $DB->query($queryPort); $dataPort = $DB->fetch_assoc($resultPort); } } if (isset($dataPort['id'])) { $input['FK_port_destination'] = $dataPort['id']; } else { $input['FK_port_destination'] = 0; } $query_ins = "INSERT INTO `glpi_plugin_fusinvsnmp_networkportconnectionlogs`\n (`date_mod`, `creation`, `networkports_id_source`,\n `networkports_id_destination`)\n VALUES ('" . $input['date'] . "',\n '" . $input['creation'] . "',\n '" . $input['FK_port_source'] . "',\n '" . $input['FK_port_destination'] . "')"; $DB->query($query_ins); } } } $query_del = "DELETE FROM `glpi_plugin_tracker_snmp_history`\n WHERE `Field`='0'\n AND (`old_device_ID`!='0' OR `new_device_ID`!='0')"; $DB->query($query_del); $migration->displayMessage("{$nb} / {$nb}"); } $migration->renameTable("glpi_plugin_fusinvsnmp_networkportlogs", $newTable); $migration->renameTable("glpi_plugin_tracker_snmp_history", $newTable); if (!TableExists($newTable)) { $query = "CREATE TABLE `" . $newTable . "` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"; $DB->query($query); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "networkports_id", "networkports_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "plugin_fusioninventory_mappings_id", "plugin_fusioninventory_mappings_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "date_mod", "date_mod", "datetime DEFAULT NULL"); $migration->changeField($newTable, "value_old", "value_old", "varchar(255) DEFAULT NULL"); $migration->changeField($newTable, "value_new", "value_new", "varchar(255) DEFAULT NULL"); $migration->changeField($newTable, "plugin_fusioninventory_agentprocesses_id", "plugin_fusioninventory_agentprocesses_id", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->changeField($newTable, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "FK_ports", "networkports_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "plugin_fusioninventory_mappings_id", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); // Update with mapping if (FieldExists($newTable, "Field")) { // $pfNetworkPortLog = new PluginFusioninventoryNetworkPortLog(); $pfMapping = new PluginFusioninventoryMapping(); $query = "SELECT * FROM `" . $newTable . "`\n GROUP BY `Field`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $mapping = 0; if ($mapping = $pfMapping->get("NetworkEquipment", $data['Field'])) { $DB->query("UPDATE `" . $newTable . "`\n SET `plugin_fusioninventory_mappings_id`='" . $mapping['id'] . "'\n WHERE `Field`='" . $data['Field'] . "'\n AND `plugin_fusioninventory_mappings_id`!='" . $mapping['id'] . "'"); } } } $migration->dropField($newTable, "Field"); $migration->changeField($newTable, "old_value", "value_old", "varchar(255) DEFAULT NULL"); $migration->dropField($newTable, "old_device_type"); $migration->dropField($newTable, "old_device_ID"); $migration->changeField($newTable, "new_value", "value_new", "varchar(255) DEFAULT NULL"); $migration->dropField($newTable, "new_device_type"); $migration->dropField($newTable, "new_device_ID"); $migration->dropField($newTable, "FK_process"); $migration->dropKey($newTable, "FK_process"); $migration->dropKey($newTable, "FK_ports"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "networkports_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "plugin_fusioninventory_mappings_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "date_mod", "datetime DEFAULT NULL"); $migration->addField($newTable, "value_old", "varchar(255) DEFAULT NULL"); $migration->addField($newTable, "value_new", "varchar(255) DEFAULT NULL"); $migration->addField($newTable, "plugin_fusioninventory_agentprocesses_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addKey($newTable, array("networkports_id", "date_mod"), "networkports_id"); $migration->addKey($newTable, "plugin_fusioninventory_mappings_id"); $migration->addKey($newTable, "plugin_fusioninventory_agentprocesses_id"); $migration->addKey($newTable, "date_mod"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_configsecurities */ // TODO get info to create SNMP authentification with old values of Tracker plugin $newTable = "glpi_plugin_fusioninventory_configsecurities"; $migration->renameTable("glpi_plugin_fusinvsnmp_configsecurities", $newTable); $migration->renameTable("glpi_plugin_tracker_snmp_connection", $newTable); if (!TableExists($newTable)) { $DB->query('CREATE TABLE `' . $newTable . '` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1'); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "name", "name", "varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "snmpversion", "snmpversion", "varchar(8) COLLATE utf8_unicode_ci NOT NULL DEFAULT '1'"); $migration->changeField($newTable, "community", "community", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "username", "username", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "authentication", "authentication", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "auth_passphrase", "auth_passphrase", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "encryption", "encryption", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "priv_passphrase", "priv_passphrase", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->changeField($newTable, "is_deleted", "is_deleted", "tinyint(1) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->changeField($newTable, "ID", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "FK_snmp_version", "snmpversion", "varchar(8) COLLATE utf8_unicode_ci NOT NULL DEFAULT '1'"); $migration->changeField($newTable, "sec_name", "username", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->dropField($newTable, "sec_level"); $migration->dropField($newTable, "auth_protocol"); $migration->dropField($newTable, "priv_protocol"); $migration->dropField($newTable, "deleted"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "name", "varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "snmpversion", "varchar(8) COLLATE utf8_unicode_ci NOT NULL DEFAULT '1'"); $migration->addField($newTable, "community", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "username", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "authentication", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "auth_passphrase", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "encryption", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "priv_passphrase", "varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL"); $migration->addField($newTable, "is_deleted", "tinyint(1) NOT NULL DEFAULT '0'"); $migration->addKey($newTable, "snmpversion"); $migration->addKey($newTable, "is_deleted"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * glpi_plugin_fusioninventory_statediscoveries */ $newTable = "glpi_plugin_fusioninventory_statediscoveries"; $migration->renameTable("glpi_plugin_fusinvsnmp_statediscoveries", $newTable); if (!TableExists($newTable)) { $DB->query("CREATE TABLE `" . $newTable . "` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1"); } $migration->changeField($newTable, "id", "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->changeField($newTable, "plugin_fusioninventory_taskjob_id", "plugin_fusioninventory_taskjob_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "plugin_fusioninventory_agents_id", "plugin_fusioninventory_agents_id", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "start_time", "start_time", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->changeField($newTable, "end_time", "end_time", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->changeField($newTable, "date_mod", "date_mod", "datetime DEFAULT NULL"); $migration->changeField($newTable, "threads", "threads", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "nb_ip", "nb_ip", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "nb_found", "nb_found", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "nb_error", "nb_error", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "nb_exists", "nb_exists", "int(11) NOT NULL DEFAULT '0'"); $migration->changeField($newTable, "nb_import", "nb_import", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $migration->addField($newTable, "id", "int(11) NOT NULL AUTO_INCREMENT"); $migration->addField($newTable, "plugin_fusioninventory_taskjob_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "plugin_fusioninventory_agents_id", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "start_time", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->addField($newTable, "end_time", "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'"); $migration->addField($newTable, "date_mod", "datetime DEFAULT NULL"); $migration->addField($newTable, "threads", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "nb_ip", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "nb_found", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "nb_error", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "nb_exists", "int(11) NOT NULL DEFAULT '0'"); $migration->addField($newTable, "nb_import", "int(11) NOT NULL DEFAULT '0'"); $migration->migrationOneTable($newTable); $DB->list_fields($newTable, FALSE); /* * Table glpi_plugin_fusioninventory_computerlicenseinfos */ if (TableExists("glpi_plugin_fusinvinventory_licenseinfos")) { $DB->query("UPDATE `glpi_plugin_fusinvinventory_licenseinfos`" . " SET `softwarelicenses_id`='0'" . " WHERE `softwarelicenses_id` IS NULL"); } $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_computerlicenseinfos'; $a_table['oldname'] = array('glpi_plugin_fusinvinventory_licenseinfos'); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['computers_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['softwarelicenses_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['fullname'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['serial'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['is_trial'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['is_update'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['is_oem'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['activation_date'] = array('type' => 'datetime', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'name', 'name' => '', 'type' => 'INDEX'); $a_table['keys'][] = array('field' => 'fullname', 'name' => '', 'type' => 'INDEX'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_computerarchs */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_computerarchs'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => 'autoincrement', 'value' => ''); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['comment'] = array('type' => 'text', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'name', 'name' => '', 'type' => 'INDEX'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Deploy Update Begin */ /* * glpi_plugin_fusioninventory_deployfiles */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_deployfiles'; $a_table['oldname'] = array(); $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => NULL), 'name' => array('type' => 'varchar(255) NOT NULL', 'value' => NULL), 'mimetype' => array('type' => 'varchar(255) NOT NULL', 'value' => NULL), 'filesize' => array('type' => 'bigint(20) NOT NULL', 'value' => NULL), 'comment' => array('type' => 'text DEFAULT NULL', 'value' => NULL), 'sha512' => array('type' => 'char(128) NOT NULL', 'value' => NULL), 'shortsha512' => array('type' => 'char(6) NOT NULL', 'value' => NULL), 'entities_id' => array('type' => 'int(11) NOT NULL', 'value' => NULL), 'is_recursive' => array('type' => 'tinyint(1) NOT NULL DEFAULT 0', 'value' => 0), 'date_mod' => array('type' => 'datetime DEFAULT NULL', 'value' => NULL)); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(array('field' => 'id', 'name' => '', 'type' => 'KEY'), array('field' => 'shortsha512', 'name' => '', 'type' => 'KEY'), array('field' => 'entities_id', 'name' => '', 'type' => 'KEY'), array('field' => 'date_mod', 'name' => '', 'type' => 'KEY')); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * glpi_plugin_fusioninventory_deployorders */ $a_table = array(); //table name $a_table['name'] = 'glpi_plugin_fusioninventory_deployorders'; $a_table['oldname'] = array('glpi_plugin_fusinvdeploy_orders'); $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => NULL), 'type' => array('type' => 'int(11) NOT NULL', 'value' => NULL), 'create_date' => array('type' => ' datetime NOT NULL', 'value' => NULL), 'plugin_fusioninventory_deploypackages_id' => array('type' => 'int(11) NOT NULL', 'value' => NULL), 'json' => array('type' => 'longtext DEFAULT NULL', 'value' => NULL)); $a_table['oldfields'] = array(); $a_table['renamefields'] = array('plugin_fusinvdeploy_packages_id' => 'plugin_fusioninventory_deploypackages_id'); $a_table['keys'] = array(array('field' => 'type', 'name' => '', 'type' => 'KEY'), array('field' => 'create_date', 'name' => '', 'type' => 'KEY'), array('field' => 'plugin_fusioninventory_deploypackages_id', 'name' => '', 'type' => 'KEY')); $a_table['oldkeys'] = array('plugin_fusinvdeploy_packages_id'); migrateTablesFusionInventory($migration, $a_table); /* * glpi_plugin_fusioninventory_deploypackages */ $a_table = array(); //table name $a_table['name'] = 'glpi_plugin_fusioninventory_deploypackages'; $a_table['oldname'] = array('glpi_plugin_fusinvdeploy_packages'); $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => NULL), 'name' => array('type' => 'varchar(255) COLLATE utf8_unicode_ci NOT NULL', 'value' => NULL), 'comment' => array('type' => "text", 'value' => NULL), 'entities_id' => array('type' => 'int(11) NOT NULL', 'value' => NULL), 'is_recursive' => array('type' => 'tinyint(1) NOT NULL DEFAULT 0', 'value' => NULL), 'date_mod' => array('type' => 'datetime DEFAULT NULL', 'value' => NULL), 'uuid' => array('type' => 'string', 'value' => NULL)); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(array('field' => 'entities_id', 'name' => '', 'type' => 'KEY'), array('field' => 'date_mod', 'name' => '', 'type' => 'KEY')); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * glpi_plugin_fusioninventory_deploymirrors */ $a_table = array(); //table name $a_table['name'] = 'glpi_plugin_fusioninventory_deploymirrors'; $a_table['oldname'] = array('glpi_plugin_fusinvdeploy_mirrors'); $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => NULL), 'entities_id' => array('type' => 'int(11) NOT NULL', 'value' => NULL), 'is_recursive' => array('type' => 'tinyint(1) NOT NULL DEFAULT 0', 'value' => NULL), 'name' => array('type' => 'varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL', 'value' => NULL), 'url' => array('type' => "varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci" . " NOT NULL DEFAULT ''", 'value' => NULL), 'locations_id' => array('type' => 'int(11) NOT NULL', 'value' => 0), 'comment' => array('type' => "text", 'value' => NULL), 'date_mod' => array('type' => 'datetime DEFAULT NULL', 'value' => NULL)); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(array('field' => 'entities_id', 'name' => '', 'type' => 'KEY'), array('field' => 'date_mod', 'name' => '', 'type' => 'KEY')); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * glpi_plugin_fusioninventory_deploygroups */ $a_table = array(); //table name $a_table['name'] = 'glpi_plugin_fusioninventory_deploygroups'; $a_table['oldname'] = array('glpi_plugin_fusinvdeploy_groups'); $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => NULL), 'name' => array('type' => 'varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL', 'value' => NULL), 'comment' => array('type' => "text", 'value' => NULL), 'type' => array('type' => 'varchar(255) COLLATE utf8_unicode_ci NOT NULL', 'value' => NULL)); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * glpi_plugin_fusioninventory_deploygroups_staticdatas */ $a_table = array(); //table name $a_table['name'] = 'glpi_plugin_fusioninventory_deploygroups_staticdatas'; $a_table['oldname'] = array('glpi_plugin_fusinvdeploy_groups_staticdatas'); $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => NULL), 'groups_id' => array('type' => 'integer', 'value' => NULL), 'itemtype' => array('type' => 'varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL', 'value' => NULL), 'items_id' => array('type' => 'integer', 'value' => NULL)); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(array('field' => 'groups_id', 'name' => '', 'type' => 'KEY'), array('field' => 'items_id', 'name' => '', 'type' => 'KEY')); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * glpi_plugin_fusioninventory_deploygroups_dynamicdatas */ $a_table = array(); //table name $a_table['name'] = 'glpi_plugin_fusioninventory_deploygroups_dynamicdatas'; $a_table['oldname'] = array('glpi_plugin_fusinvdeploy_groups_dynamicdatas'); $a_table['fields'] = array('id' => array('type' => 'autoincrement', 'value' => NULL), 'groups_id' => array('type' => 'integer', 'value' => NULL), 'fields_array' => array('type' => 'text', 'value' => NULL)); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(array('field' => 'groups_id', 'name' => '', 'type' => 'KEY')); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * import old datas as json in order table before migrate this table */ migrateTablesFromFusinvDeploy($migration); /* * Deploy Update End */ /* * Table glpi_plugin_fusioninventory_collects */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_collects'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => "autoincrement", 'value' => ''); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['entities_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['is_recursive'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['type'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['is_active'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['comment'] = array('type' => 'text', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_collects_registries */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_collects_registries'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => "autoincrement", 'value' => ''); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_collects_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['hive'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['path'] = array('type' => 'text', 'value' => NULL); $a_table['fields']['key'] = array('type' => 'string', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_collects_registries_contents */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_collects_registries_contents'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => "autoincrement", 'value' => ''); $a_table['fields']['computers_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_collects_registries_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['key'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['value'] = array('type' => 'string', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'computers_id', 'name' => '', 'type' => 'INDEX'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_collects_wmis */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_collects_wmis'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => "autoincrement", 'value' => ''); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_collects_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['moniker'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['class'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['properties'] = array('type' => 'string', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_collects_wmis_contents */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_collects_wmis_contents'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => "autoincrement", 'value' => ''); $a_table['fields']['computers_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_collects_wmis_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['property'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['value'] = array('type' => 'string', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_collects_files */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_collects_files'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => "autoincrement", 'value' => ''); $a_table['fields']['name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_collects_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['dir'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['limit'] = array('type' => "int(4) NOT NULL DEFAULT '50'", 'value' => NULL); $a_table['fields']['is_recursive'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['filter_regex'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['filter_sizeequals'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['filter_sizegreater'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['filter_sizelower'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['filter_checksumsha512'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['filter_checksumsha2'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['filter_name'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['filter_iname'] = array('type' => 'string', 'value' => NULL); $a_table['fields']['filter_is_file'] = array('type' => 'bool', 'value' => '1'); $a_table['fields']['filter_is_dir'] = array('type' => 'bool', 'value' => '0'); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_collects_files_contents */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_collects_files_contents'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['id'] = array('type' => "autoincrement", 'value' => ''); $a_table['fields']['computers_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['plugin_fusioninventory_collects_files_id'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['pathfile'] = array('type' => 'text', 'value' => NULL); $a_table['fields']['size'] = array('type' => 'integer', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_dblockinventorynames */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_dblockinventorynames'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['value'] = array('type' => "varchar(100) NOT NULL DEFAULT ''", 'value' => NULL); $a_table['fields']['date'] = array('type' => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'value', 'name' => '', 'type' => 'UNIQUE'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_dblockinventories */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_dblockinventories'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['value'] = array('type' => 'integer', 'value' => NULL); $a_table['fields']['date'] = array('type' => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'value', 'name' => '', 'type' => 'UNIQUE'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_dblocksoftwares */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_dblocksoftwares'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['value'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['date'] = array('type' => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'value', 'name' => '', 'type' => 'UNIQUE'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Table glpi_plugin_fusioninventory_dblocksoftwareversions */ $a_table = array(); $a_table['name'] = 'glpi_plugin_fusioninventory_dblocksoftwareversions'; $a_table['oldname'] = array(); $a_table['fields'] = array(); $a_table['fields']['value'] = array('type' => 'bool', 'value' => NULL); $a_table['fields']['date'] = array('type' => 'timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP', 'value' => NULL); $a_table['oldfields'] = array(); $a_table['renamefields'] = array(); $a_table['keys'] = array(); $a_table['keys'][] = array('field' => 'value', 'name' => '', 'type' => 'UNIQUE'); $a_table['oldkeys'] = array(); migrateTablesFusionInventory($migration, $a_table); /* * Add ESX module appear in version 2.4.0(0.80+1.0) */ $DB->query("UPDATE `glpi_plugin_fusioninventory_agentmodules`\n SET `modulename`='InventoryComputerESX'\n WHERE `modulename`='ESX'"); $agentmodule = new PluginFusioninventoryAgentmodule(); $query = "SELECT `id` FROM `glpi_plugin_fusioninventory_agentmodules`\n WHERE `modulename`='InventoryComputerESX'\n LIMIT 1"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $input = array(); $input['modulename'] = "InventoryComputerESX"; $input['is_active'] = 0; $input['exceptions'] = exportArrayToDB(array()); $url = ''; if (isset($_SERVER['HTTP_REFERER'])) { $url = $_SERVER['HTTP_REFERER']; } $agentmodule->add($input); } /* * Add Collect module appear in version 0.84+2.0 */ $agentmodule = new PluginFusioninventoryAgentmodule(); $query = "SELECT `id` FROM `glpi_plugin_fusioninventory_agentmodules`\n WHERE `modulename`='Collect'\n LIMIT 1"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $input = array(); $input['modulename'] = "Collect"; $input['is_active'] = 1; $input['exceptions'] = exportArrayToDB(array()); $agentmodule->add($input); } /* * Update pci and usb ids and oui */ foreach (array('usbid.sql', 'pciid.sql', 'oui.sql') as $sql) { $DB_file = GLPI_ROOT . "/plugins/fusioninventory/install/mysql/{$sql}"; $DBf_handle = fopen($DB_file, "rt"); $sql_query = fread($DBf_handle, filesize($DB_file)); fclose($DBf_handle); foreach (explode(";\n", "{$sql_query}") as $sql_line) { if (Toolbox::get_magic_quotes_runtime()) { $sql_line = Toolbox::stripslashes_deep($sql_line); } if (!empty($sql_line)) { $DB->query($sql_line); } } } /* * Migrate data of table glpi_plugin_fusinvsnmp_agentconfigs into * glpi_plugin_fusioninventory_agents */ if (TableExists("glpi_plugin_fusinvsnmp_agentconfigs")) { $query = "SELECT * FROM `glpi_plugin_fusinvsnmp_agentconfigs`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $queryu = "UPDATE `glpi_plugin_fusioninventory_agents`\n SET `threads_networkdiscovery`='" . $data['threads_netdiscovery'] . "',\n `threads_networkinventory`='" . $data['threads_snmpquery'] . "',\n `senddico`='" . $data['senddico'] . "'\n WHERE `id`='" . $data['plugin_fusioninventory_agents_id'] . "'"; $DB->query($queryu); } } // Update profiles if (TableExists("glpi_plugin_tracker_profiles")) { $profile = new Profile(); $pfProfile = new PluginFusioninventoryProfile(); $query = "SELECT * FROM `glpi_plugin_tracker_profiles`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $profiledata = current($profile->find("`name`='" . $data['name'] . "'", "", 1)); if (!empty($profiledata)) { $newprofile = array(); $newprofile['snmp_networking'] = "networkequipment"; $newprofile['snmp_printers'] = "printer"; $newprofile['snmp_models'] = "model"; $newprofile['snmp_authentification'] = "configsecurity"; $newprofile['general_config'] = "configuration"; $newprofile['snmp_report'] = "reportprinter"; foreach ($newprofile as $old => $new) { if (isset($profiledata[$old])) { // $pfProfile->addProfile($new, // $profiledata[$old], // $profiledata['id']); } } if (isset($profiledata["snmp_report"])) { // $pfProfile->addProfile("reportnetworkequipment", // $profiledata["snmp_report"], // $profiledata['id']); } } } $DB->query("DROP TABLE `glpi_plugin_tracker_profiles`"); } update213to220_ConvertField($migration); /* * Move networkequipment IPs to net system */ if (TableExists("glpi_plugin_fusioninventory_networkequipmentips")) { $networkPort = new NetworkPort(); $networkName = new NetworkName(); $ipAddress = new IPAddress(); $networkEquipment = new NetworkEquipment(); $query = "SELECT * FROM `glpi_plugin_fusioninventory_networkequipments`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { if ($networkEquipment->getFromDB($data['networkequipments_id'])) { $oldtableip = array(); $queryIP = "SELECT * FROM `glpi_plugin_fusioninventory_networkequipmentips`\n WHERE `networkequipments_id`='" . $data['networkequipments_id'] . "'"; $resultIP = $DB->query($queryIP); while ($dataIP = $DB->fetch_array($resultIP)) { $oldtableip[$dataIP['ip']] = $dataIP['ip']; } // Get actual IP defined $networknames_id = 0; $a_ports = $networkPort->find("`itemtype`='NetworkEquipment'\n AND `items_id`='" . $data['networkequipments_id'] . "'\n AND `instantiation_type`='NetworkPortAggregate'\n AND `name`='management'", "", 1); foreach ($a_ports as $a_port) { $a_networknames = $networkName->find("`itemtype`='NetworkPort'\n AND `items_id`='" . $a_port['id'] . "'"); foreach ($a_networknames as $a_networkname) { $networknames_id = $a_networkname['id']; $a_ipaddresses = $ipAddress->find("`itemtype`='NetworkName'\n AND `items_id`='" . $a_networkname['id'] . "'"); foreach ($a_ipaddresses as $a_ipaddress) { if (isset($oldtableip[$a_ipaddress['name']])) { unset($oldtableip[$a_ipaddress['name']]); } else { $ipAddress->delete($a_ipaddress, 1); } } } } // Update foreach ($oldtableip as $ip) { $input = array(); $input['itemtype'] = "NetworkName"; $input['items_id'] = $networknames_id; $input['name'] = $ip; $input['is_dynamic'] = 1; $ipAddress->add($input); } } } } /* * Table Delete old table not used */ $a_drop = array(); $a_drop[] = 'glpi_plugin_tracker_computers'; $a_drop[] = 'glpi_plugin_tracker_connection_history'; $a_drop[] = 'glpi_plugin_tracker_agents_processes'; $a_drop[] = 'glpi_plugin_tracker_config_snmp_history'; $a_drop[] = 'glpi_plugin_tracker_config_snmp_networking'; $a_drop[] = 'glpi_plugin_tracker_config_snmp_printer'; $a_drop[] = 'glpi_plugin_tracker_config_snmp_script'; $a_drop[] = 'glpi_plugin_tracker_connection_stats'; $a_drop[] = 'glpi_plugin_tracker_discovery'; $a_drop[] = 'glpi_plugin_tracker_errors'; $a_drop[] = 'glpi_plugin_tracker_model_infos'; $a_drop[] = 'glpi_plugin_tracker_processes'; $a_drop[] = 'glpi_plugin_tracker_processes_values'; $a_drop[] = 'glpi_plugin_fusioninventory_agents_errors'; $a_drop[] = 'glpi_plugin_fusioninventory_agents_processes'; $a_drop[] = 'glpi_plugin_fusioninventory_computers'; $a_drop[] = 'glpi_dropdown_plugin_tracker_snmp_auth_auth_protocol'; $a_drop[] = 'glpi_dropdown_plugin_tracker_snmp_auth_priv_protocol'; $a_drop[] = 'glpi_dropdown_plugin_tracker_snmp_auth_sec_level'; $a_drop[] = 'glpi_dropdown_plugin_tracker_snmp_version'; $a_drop[] = 'glpi_plugin_fusioninventory_config_snmp_networking'; $a_drop[] = 'glpi_plugin_fusioninventory_config_snmp_history'; $a_drop[] = 'glpi_plugin_fusinvsnmp_agentconfigs'; $a_drop[] = 'glpi_plugin_tracker_computers'; $a_drop[] = 'glpi_plugin_tracker_config'; $a_drop[] = 'glpi_plugin_tracker_config_discovery'; $a_drop[] = 'glpi_dropdown_plugin_fusioninventory_mib_label'; $a_drop[] = 'glpi_dropdown_plugin_fusioninventory_mib_object'; $a_drop[] = 'glpi_dropdown_plugin_fusioninventory_mib_oid'; $a_drop[] = 'glpi_dropdown_plugin_fusioninventory_snmp_auth_auth_protocol'; $a_drop[] = 'glpi_dropdown_plugin_fusioninventory_snmp_auth_priv_protocol'; $a_drop[] = 'glpi_dropdown_plugin_fusioninventory_snmp_version'; $a_drop[] = 'glpi_plugin_fusinvsnmp_temp_profiles'; $a_drop[] = 'glpi_plugin_fusinvsnmp_tmp_agents'; $a_drop[] = 'glpi_plugin_fusinvsnmp_tmp_configs'; $a_drop[] = 'glpi_plugin_fusinvsnmp_tmp_tasks'; $a_drop[] = 'glpi_plugin_tracker_tmp_connections'; $a_drop[] = 'glpi_plugin_tracker_tmp_netports'; $a_drop[] = 'glpi_plugin_tracker_walks'; $a_drop[] = 'glpi_plugin_fusioninventory_networkequipmentips'; foreach ($a_drop as $droptable) { if (TableExists($droptable)) { $DB->query("DROP TABLE `" . $droptable . "`"); } } $migration->executeMigration(); /* * Add WakeOnLan module appear in version 2.3.0 */ $query = "SELECT `id` FROM `glpi_plugin_fusioninventory_agentmodules`\n WHERE `modulename`='WAKEONLAN'"; $result = $DB->query($query); if (!$DB->numrows($result)) { $agentmodule = new PluginFusioninventoryAgentmodule(); $input = array(); $input['plugins_id'] = $plugins_id; $input['modulename'] = "WAKEONLAN"; $input['is_active'] = 0; $input['exceptions'] = exportArrayToDB(array()); $agentmodule->add($input); } /* * Add storage type if not present */ $a_storage = array(); $a_storage['partition'] = 5; $a_storage['volume groups'] = 10; $a_storage['logical volumes'] = 20; $a_storage['hard disk'] = 1; $a_storage['mount'] = 25; foreach ($a_storage as $name => $level) { $query = "SELECT `id` FROM `glpi_plugin_fusioninventory_inventorycomputerstoragetypes`\n WHERE `name`='" . $name . "'"; $result = $DB->query($query); if (!$DB->numrows($result)) { $DB->query("INSERT INTO `glpi_plugin_fusioninventory_inventorycomputerstoragetypes`\n (`name`, `level`) VALUES\n ('" . $name . "', '" . $level . "')"); } } /* * Clean for port orphelin */ //networkports with item_type = 0 $NetworkPort = new NetworkPort(); $NetworkPort_Vlan = new NetworkPort_Vlan(); $NetworkPort_NetworkPort = new NetworkPort_NetworkPort(); $a_networkports = $NetworkPort->find("`itemtype`=''"); foreach ($a_networkports as $data) { if ($NetworkPort_NetworkPort->getFromDBForNetworkPort($data['id'])) { $NetworkPort_NetworkPort->delete($NetworkPort_NetworkPort->fields); } $a_vlans = $NetworkPort_Vlan->find("`networkports_id`='" . $data['id'] . "'"); foreach ($a_vlans as $a_vlan) { $NetworkPort_Vlan->delete($a_vlan); } $NetworkPort->delete($data, 1); } /* * Clean old ports deleted but have some informations in SNMP tables */ //echo "Clean ports purged\n"; $query_select = "SELECT `glpi_plugin_fusioninventory_networkports`.`id`\n FROM `glpi_plugin_fusioninventory_networkports`\n LEFT JOIN `glpi_networkports`\n ON `glpi_networkports`.`id` = `networkports_id`\n LEFT JOIN `glpi_networkequipments`\n ON `glpi_networkequipments`.`id` = `glpi_networkports`.`items_id`\n WHERE `glpi_networkequipments`.`id` IS NULL"; $result = $DB->query($query_select); while ($data = $DB->fetch_array($result)) { $query_del = "DELETE FROM `glpi_plugin_fusioninventory_networkports`\n WHERE `id`='" . $data["id"] . "'"; $DB->query($query_del); } /* * Clean for switch more informations again in DB when switch is purged */ //echo "Clean for switch more informations again in DB when switch is purged\n"; $query_select = "SELECT `glpi_plugin_fusioninventory_networkequipments`.`id`\n FROM `glpi_plugin_fusioninventory_networkequipments`\n LEFT JOIN `glpi_networkequipments`\n ON `glpi_networkequipments`.`id` = `networkequipments_id`\n WHERE `glpi_networkequipments`.`id` IS NULL"; $result = $DB->query($query_select); while ($data = $DB->fetch_array($result)) { $query_del = "DELETE FROM `glpi_plugin_fusioninventory_networkequipments`\n WHERE `id`='" . $data["id"] . "'"; $DB->query($query_del); } /* * Clean for printer more informations again in DB when printer is purged */ //echo "Clean for printer more informations again in DB when printer is purged\n"; $query_select = "SELECT `glpi_plugin_fusioninventory_printers`.`id`\n FROM `glpi_plugin_fusioninventory_printers`\n LEFT JOIN `glpi_printers` ON `glpi_printers`.`id` = `printers_id`\n WHERE `glpi_printers`.`id` IS NULL"; $result = $DB->query($query_select); while ($data = $DB->fetch_array($result)) { $query_del = "DELETE FROM `glpi_plugin_fusioninventory_printers`\n WHERE `id`='" . $data["id"] . "'"; $DB->query($query_del); } /* * Clean printer cartridge not deleted with the printer associated */ //echo "Clean printer cartridge not deleted with the printer associated\n"; $query_select = "SELECT `glpi_plugin_fusioninventory_printercartridges`.`id`\n FROM `glpi_plugin_fusioninventory_printercartridges`\n LEFT JOIN `glpi_printers` ON `glpi_printers`.`id` = `printers_id`\n WHERE `glpi_printers`.`id` IS NULL"; $result = $DB->query($query_select); while ($data = $DB->fetch_array($result)) { $query_del = "DELETE FROM `glpi_plugin_fusioninventory_printercartridges`\n WHERE `id`='" . $data["id"] . "'"; $DB->query($query_del); } /* * Clean printer history not deleted with printer associated */ //echo "Clean printer history not deleted with printer associated\n"; $query_select = "SELECT `glpi_plugin_fusioninventory_printerlogs`.`id`\n FROM `glpi_plugin_fusioninventory_printerlogs`\n LEFT JOIN `glpi_printers` ON `glpi_printers`.`id` = `printers_id`\n WHERE `glpi_printers`.`id` IS NULL"; $result = $DB->query($query_select); while ($data = $DB->fetch_array($result)) { $query_del = "DELETE FROM `glpi_plugin_fusioninventory_printerlogs`\n WHERE `id`='" . $data["id"] . "'"; $DB->query($query_del); } /* * Fix problem with mapping with many entries with same mapping */ $a_mapping = array(); $a_mappingdouble = array(); $query = "SELECT * FROM `glpi_plugin_fusioninventory_mappings`\n ORDER BY `id`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { if (!isset($a_mapping[$data['itemtype'] . "." . $data['name']])) { $a_mapping[$data['itemtype'] . "." . $data['name']] = $data['id']; } else { $a_mappingdouble[$data['id']] = $data['itemtype'] . "." . $data['name']; } } foreach ($a_mappingdouble as $mapping_id => $mappingkey) { $query = "UPDATE `glpi_plugin_fusioninventory_printercartridges`\n SET plugin_fusioninventory_mappings_id='" . $a_mapping[$mappingkey] . "'\n WHERE plugin_fusioninventory_mappings_id='" . $mapping_id . "'"; $DB->query($query); $query = "UPDATE `glpi_plugin_fusioninventory_networkportlogs`\n SET plugin_fusioninventory_mappings_id='" . $a_mapping[$mappingkey] . "'\n WHERE plugin_fusioninventory_mappings_id='" . $mapping_id . "'"; $DB->query($query); $query = "UPDATE `glpi_plugin_fusioninventory_configlogfields`\n SET plugin_fusioninventory_mappings_id='" . $a_mapping[$mappingkey] . "'\n WHERE plugin_fusioninventory_mappings_id='" . $mapping_id . "'"; $DB->query($query); $query = "DELETE FROM `glpi_plugin_fusioninventory_mappings`\n WHERE `id` = '" . $mapping_id . "'"; $DB->query($query); } /* * Update networports to convert itemtype 5153 to PluginFusioninventoryUnknownDevice */ $sql = "UPDATE `glpi_networkports`\n SET `itemtype`='PluginFusioninventoryUnknownDevice'\n WHERE `itemtype`='5153'"; $DB->query($sql); $sql = "UPDATE `glpi_networkports`\n SET `itemtype`='PluginFusioninventoryTask'\n WHERE `itemtype`='5166'"; $DB->query($sql); /* * Clean display preferences not used */ $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5150' "; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5160' "; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5161' "; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5163' "; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5165' "; $DB->query($sql); $sql = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='5190' "; $DB->query($sql); /* * Update display preferences */ changeDisplayPreference("5153", "PluginFusioninventoryUnknownDevice"); changeDisplayPreference("5158", "PluginFusioninventoryAgent"); changeDisplayPreference("PluginFusinvinventoryBlacklist", "PluginFusioninventoryInventoryComputerBlacklist"); changeDisplayPreference("5151", "PluginFusinvsnmpModel"); changeDisplayPreference("PluginFusinvsnmpModel", "PluginFusioninventorySnmpmodel"); changeDisplayPreference("5152", "PluginFusinvsnmpConfigSecurity"); changeDisplayPreference("5156", "PluginFusinvsnmpPrinterCartridge"); changeDisplayPreference("5157", "PluginFusinvsnmpNetworkEquipment"); changeDisplayPreference("PluginFusinvsnmpNetworkEquipment", "PluginFusioninventoryNetworkEquipment"); changeDisplayPreference("5159", "PluginFusinvsnmpIPRange"); changeDisplayPreference("5162", "PluginFusinvsnmpNetworkPortLog"); changeDisplayPreference("5167", "PluginFusioninventorySnmpmodelConstructDevice"); changeDisplayPreference("PluginFusinvsnmpConstructDevice", "PluginFusioninventorySnmpmodelConstructDevice"); changeDisplayPreference("5168", "PluginFusinvsnmpPrinterLog"); changeDisplayPreference("PluginFusinvsnmpPrinterLogReport", "PluginFusioninventoryPrinterLogReport"); changeDisplayPreference("PluginFusioninventoryUnknownDevice", "PluginFusioninventoryUnmanaged"); /* * Delete IP and MAC of PluginFusioninventoryUnknownDevice in displaypreference */ $queryd = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='PluginFusioninventoryUnknownDevice'\n AND (`num`='11' OR `num`='12' OR `num`='16')"; $DB->query($queryd); /* * Clean in displaypreference */ $queryd = "DELETE FROM `glpi_displaypreferences`\n WHERE `itemtype`='PluginFusioninventorysnmpModel'"; $DB->query($queryd); /* * Modify displaypreference for PluginFusioninventoryPrinterLog */ $pfPrinterLogReport = new PluginFusioninventoryPrinterLog(); $a_searchoptions = $pfPrinterLogReport->getSearchOptions(); $query = "SELECT * FROM `glpi_displaypreferences`\n WHERE `itemtype` = 'PluginFusioninventoryPrinterLogReport'\n AND `users_id`='0'"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $query = "INSERT INTO `glpi_displaypreferences` (`id`, `itemtype`, `num`, `rank`,\n `users_id`)\n VALUES (NULL, 'PluginFusioninventoryPrinterLogReport', '2', '1', '0'),\n (NULL, 'PluginFusioninventoryPrinterLogReport', '18', '2', '0'),\n (NULL, 'PluginFusioninventoryPrinterLogReport', '20', '3', '0'),\n (NULL, 'PluginFusioninventoryPrinterLogReport', '5', '4', '0'),\n (NULL, 'PluginFusioninventoryPrinterLogReport', '6', '5', '0')"; $DB->query($query); } else { while ($data = $DB->fetch_array($result)) { if (!isset($a_searchoptions[$data['num']])) { $queryd = "DELETE FROM `glpi_displaypreferences`\n WHERE `id`='" . $data['id'] . "'"; $DB->query($queryd); } } } /* * Modify displaypreference for PluginFusinvsnmpNetworkEquipment */ $a_check = array(); $a_check["2"] = 1; $a_check["3"] = 2; $a_check["4"] = 3; $a_check["5"] = 4; $a_check["6"] = 5; $a_check["7"] = 6; $a_check["8"] = 7; $a_check["9"] = 8; $a_check["10"] = 9; $a_check["11"] = 10; $a_check["14"] = 11; $a_check["12"] = 12; $a_check["13"] = 13; foreach ($a_check as $num => $rank) { $query = "SELECT * FROM `glpi_displaypreferences`\n WHERE `itemtype` = 'PluginFusioninventoryNetworkEquipment'\n AND `num`='" . $num . "'\n AND `users_id`='0'"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $query = "INSERT INTO `glpi_displaypreferences` (`id`, `itemtype`, `num`, `rank`,\n `users_id`)\n VALUES (NULL, 'PluginFusioninventoryNetworkEquipment', '" . $num . "',\n '" . $rank . "', '0')"; $DB->query($query); } } $query = "SELECT * FROM `glpi_displaypreferences`\n WHERE `itemtype` = 'PluginFusioninventoryNetworkEquipment'\n AND `users_id`='0'"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { if (!isset($a_check[$data['num']])) { $queryd = "DELETE FROM `glpi_displaypreferences`\n WHERE `id`='" . $data['id'] . "'"; $DB->query($queryd); } } // If no PluginFusioninventoryTaskjoblog in preferences, add them $query = "SELECT * FROM `glpi_displaypreferences`\n WHERE `itemtype` = 'PluginFusioninventoryTaskjoblog'\n AND `users_id`='0'"; $result = $DB->query($query); if ($DB->numrows($result) == 0) { $DB->query("INSERT INTO `glpi_displaypreferences`\n (`id`, `itemtype`, `num`, `rank`, `users_id`)\n VALUES (NULL,'PluginFusioninventoryTaskjoblog', '2', '1', '0'),\n (NULL,'PluginFusioninventoryTaskjoblog', '3', '2', '0'),\n (NULL,'PluginFusioninventoryTaskjoblog', '4', '3', '0'),\n (NULL,'PluginFusioninventoryTaskjoblog', '5', '4', '0'),\n (NULL,'PluginFusioninventoryTaskjoblog', '6', '5', '0'),\n (NULL,'PluginFusioninventoryTaskjoblog', '7', '6', '0'),\n (NULL,'PluginFusioninventoryTaskjoblog', '8', '7', '0')"); } // If no PluginFusioninventoryNetworkPort in preferences, add them $query = "SELECT * FROM `glpi_displaypreferences`\n WHERE `itemtype` = 'PluginFusioninventoryNetworkPort'\n AND `users_id`='0'"; $result = $DB->query($query); if ($DB->numrows($result) == 0) { $DB->query("INSERT INTO `glpi_displaypreferences`\n (`id`, `itemtype`, `num`, `rank`, `users_id`)\n VALUES (NULL,'PluginFusioninventoryNetworkPort', '3', '1', '0'),\n (NULL,'PluginFusioninventoryNetworkPort', '5', '2', '0'),\n (NULL,'PluginFusioninventoryNetworkPort', '6', '3', '0'),\n (NULL,'PluginFusioninventoryNetworkPort', '7', '4', '0'),\n (NULL,'PluginFusioninventoryNetworkPort', '8', '5', '0'),\n (NULL,'PluginFusioninventoryNetworkPort', '9', '6', '0'),\n (NULL,'PluginFusioninventoryNetworkPort', '10', '7', '0'),\n (NULL,'PluginFusioninventoryNetworkPort', '11', '8', '0'),\n (NULL,'PluginFusioninventoryNetworkPort', '12', '9', '0'),\n (NULL,'PluginFusioninventoryNetworkPort', '13', '10', '0'),\n (NULL,'PluginFusioninventoryNetworkPort', '14', '11', '0')"); } /* * Convert taskjob definition from PluginFusinvsnmpIPRange to PluginFusioninventoryIPRange * onvert taskjob definition from PluginFusinvdeployPackage to PluginFusioninventoryDeployPackage */ $query = "SELECT * FROM `glpi_plugin_fusioninventory_taskjobs`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $a_defs = importArrayFromDB($data['targets']); foreach ($a_defs as $num => $a_def) { if (key($a_def) == 'PluginFusinvsnmpIPRange') { $a_defs[$num] = array('PluginFusioninventoryIPRange' => current($a_def)); } else { if (key($a_def) == 'PluginFusinvdeployPackage') { $a_defs[$num] = array('PluginFusioninventoryDeployPackage' => current($a_def)); } } } $queryu = "UPDATE `glpi_plugin_fusioninventory_taskjobs`\n SET `targets`='" . exportArrayToDB($a_defs) . "'\n WHERE `id`='" . $data['id'] . "'"; $DB->query($queryu); } /* * Convert taskjoblogs itemtype from PluginFusinvdeployPackage to * PluginFusioninventoryDeployPackage */ $query = "UPDATE `glpi_plugin_fusioninventory_taskjoblogs` " . "SET `itemtype`='PluginFusioninventoryDeployPackage'" . "WHERE `itemtype`='PluginFusinvdeployPackage'"; $result = $DB->query($query); /* * Convert taskjobstates itemtype from PluginFusinvdeployPackage to * PluginFusioninventoryDeployPackage */ $query = "UPDATE `glpi_plugin_fusioninventory_taskjobstates` " . "SET `itemtype`='PluginFusioninventoryDeployPackage'" . "WHERE `itemtype` = 'PluginFusinvdeployPackage'"; $result = $DB->query($query); /* * Convert taskjob action from PluginFusinvdeployGroup to PluginFusioninventoryDeployGroup */ $query = "SELECT * FROM `glpi_plugin_fusioninventory_taskjobs`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $a_defs = importArrayFromDB($data['actors']); foreach ($a_defs as $num => $a_def) { if (key($a_def) == 'PluginFusinvdeployGroup') { $a_defs[$num] = array('PluginFusioninventoryDeployGroup' => current($a_def)); } } $queryu = "UPDATE `glpi_plugin_fusioninventory_taskjobs`\n SET `actors`='" . exportArrayToDB($a_defs) . "'\n WHERE `id`='" . $data['id'] . "'"; $DB->query($queryu); } /* * Convert itemtype from glpi_plugin_fusioninventory_unknowndevices to * PluginFusioninventoryUnmanaged */ $tables = array('glpi_networkports', 'glpi_logs', 'glpi_plugin_fusioninventory_ignoredimportdevices'); foreach ($tables as $table) { $query = "UPDATE `" . $table . "` " . "SET `itemtype`='PluginFusioninventoryUnmanaged'" . "WHERE `itemtype` = 'PluginFusioninventoryUnknowndevice'"; $DB->query($query); } $query = "UPDATE `glpi_ipaddresses` " . "SET `mainitemtype`='PluginFusioninventoryUnmanaged'" . "WHERE `mainitemtype` = 'PluginFusioninventoryUnknowndevice'"; $DB->query($query); /* * Update rules */ $query = "UPDATE glpi_rules SET `sub_type`='PluginFusioninventoryInventoryRuleImport'\n WHERE `sub_type`='PluginFusioninventoryRuleImportEquipment'"; $DB->query($query); $query = "SELECT * FROM `glpi_rules`\n WHERE `sub_type`='PluginFusioninventoryInventoryRuleImport'"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $querya = "UPDATE glpi_ruleactions SET `value`='1'\n WHERE `rules_id`='" . $data['id'] . "'\n AND `value`='0'\n AND `field`='_fusion'"; $DB->query($querya); } $query = "UPDATE glpi_rules SET `sub_type`='PluginFusioninventoryInventoryRuleEntity'\n WHERE `sub_type`='PluginFusinvinventoryRuleEntity'"; $DB->query($query); /* * Add default rules */ if (TableExists("glpi_plugin_tracker_config_discovery")) { $migration->displayMessage("Create rules"); $pfSetup = new PluginFusioninventorySetup(); $pfSetup->initRules(); } // If no rules, add them if (countElementsInTable('glpi_rules', "`sub_type`='PluginFusioninventoryInventoryRuleImport'") == 0) { $migration->displayMessage("Create rules"); $pfSetup = new PluginFusioninventorySetup(); $pfSetup->initRules(); } // Add peripheral rules (in first in rule list) when use it since 0.85 $query = "DELETE FROM `glpi_plugin_fusioninventory_configs`" . " WHERE `type`='import_peripheral' "; $DB->query($query); $query = "UPDATE `glpi_rules` " . " SET `ranking` = `ranking`+3" . " WHERE `sub_type`='PluginFusioninventoryInventoryRuleImport' "; $ranking = 0; // Create rule for : Peripheral + serial $rulecollection = new PluginFusioninventoryInventoryRuleImportCollection(); $input = array(); $input['is_active'] = 1; $input['name'] = 'Peripheral serial'; $input['match'] = 'AND'; $input['sub_type'] = 'PluginFusioninventoryInventoryRuleImport'; $input['ranking'] = $ranking; $rule_id = $rulecollection->add($input); // Add criteria $rule = $rulecollection->getRuleClass(); $rulecriteria = new RuleCriteria(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "serial"; $input['pattern'] = 1; $input['condition'] = 10; $rulecriteria->add($input); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "serial"; $input['pattern'] = 1; $input['condition'] = 8; $rulecriteria->add($input); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "itemtype"; $input['pattern'] = 'Peripheral'; $input['condition'] = 0; $rulecriteria->add($input); // Add action $ruleaction = new RuleAction(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['action_type'] = 'assign'; $input['field'] = '_fusion'; $input['value'] = '1'; $ruleaction->add($input); $ranking++; // Create rule for : Peripheral import $rulecollection = new PluginFusioninventoryInventoryRuleImportCollection(); $input = array(); $input['is_active'] = 1; $input['name'] = 'Peripheral import'; $input['match'] = 'AND'; $input['sub_type'] = 'PluginFusioninventoryInventoryRuleImport'; $input['ranking'] = $ranking; $rule_id = $rulecollection->add($input); // Add criteria $rule = $rulecollection->getRuleClass(); $rulecriteria = new RuleCriteria(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "itemtype"; $input['pattern'] = 'Peripheral'; $input['condition'] = 0; $rulecriteria->add($input); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "serial"; $input['pattern'] = 1; $input['condition'] = 8; $rulecriteria->add($input); // Add action $ruleaction = new RuleAction(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['action_type'] = 'assign'; $input['field'] = '_fusion'; $input['value'] = '1'; $ruleaction->add($input); $ranking++; // Create rule for : Peripheral ignore import $rulecollection = new PluginFusioninventoryInventoryRuleImportCollection(); $input = array(); $input['is_active'] = 1; $input['name'] = 'Peripheral ignore import'; $input['match'] = 'AND'; $input['sub_type'] = 'PluginFusioninventoryInventoryRuleImport'; $input['ranking'] = $ranking; $rule_id = $rulecollection->add($input); // Add criteria $rule = $rulecollection->getRuleClass(); $rulecriteria = new RuleCriteria(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "itemtype"; $input['pattern'] = 'Peripheral'; $input['condition'] = 0; $rulecriteria->add($input); // Add action $ruleaction = new RuleAction(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['action_type'] = 'assign'; $input['field'] = '_ignore_import'; $input['value'] = '1'; $ruleaction->add($input); // Add monitor rules (in first in rule list) when use it since 0.85 $query = "DELETE FROM `glpi_plugin_fusioninventory_configs`" . " WHERE `type`='import_monitor' "; $DB->query($query); $query = "UPDATE `glpi_rules` " . " SET `ranking` = `ranking`+3" . " WHERE `sub_type`='PluginFusioninventoryInventoryRuleImport' "; $ranking = 0; // Create rule for : Monitor + serial $rulecollection = new PluginFusioninventoryInventoryRuleImportCollection(); $input = array(); $input['is_active'] = 1; $input['name'] = 'Monitor serial'; $input['match'] = 'AND'; $input['sub_type'] = 'PluginFusioninventoryInventoryRuleImport'; $input['ranking'] = $ranking; $rule_id = $rulecollection->add($input); // Add criteria $rule = $rulecollection->getRuleClass(); $rulecriteria = new RuleCriteria(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "serial"; $input['pattern'] = 1; $input['condition'] = 10; $rulecriteria->add($input); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "serial"; $input['pattern'] = 1; $input['condition'] = 8; $rulecriteria->add($input); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "itemtype"; $input['pattern'] = 'Monitor'; $input['condition'] = 0; $rulecriteria->add($input); // Add action $ruleaction = new RuleAction(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['action_type'] = 'assign'; $input['field'] = '_fusion'; $input['value'] = '1'; $ruleaction->add($input); $ranking++; // Create rule for : Monitor import $rulecollection = new PluginFusioninventoryInventoryRuleImportCollection(); $input = array(); $input['is_active'] = 1; $input['name'] = 'Monitor import'; $input['match'] = 'AND'; $input['sub_type'] = 'PluginFusioninventoryInventoryRuleImport'; $input['ranking'] = $ranking; $rule_id = $rulecollection->add($input); // Add criteria $rule = $rulecollection->getRuleClass(); $rulecriteria = new RuleCriteria(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "itemtype"; $input['pattern'] = 'Monitor'; $input['condition'] = 0; $rulecriteria->add($input); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "serial"; $input['pattern'] = 1; $input['condition'] = 8; $rulecriteria->add($input); // Add action $ruleaction = new RuleAction(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['action_type'] = 'assign'; $input['field'] = '_fusion'; $input['value'] = '1'; $ruleaction->add($input); $ranking++; // Create rule for : Monitor ignore import $rulecollection = new PluginFusioninventoryInventoryRuleImportCollection(); $input = array(); $input['is_active'] = 1; $input['name'] = 'Monitor ignore import'; $input['match'] = 'AND'; $input['sub_type'] = 'PluginFusioninventoryInventoryRuleImport'; $input['ranking'] = $ranking; $rule_id = $rulecollection->add($input); // Add criteria $rule = $rulecollection->getRuleClass(); $rulecriteria = new RuleCriteria(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['criteria'] = "itemtype"; $input['pattern'] = 'Monitor'; $input['condition'] = 0; $rulecriteria->add($input); // Add action $ruleaction = new RuleAction(get_class($rule)); $input = array(); $input['rules_id'] = $rule_id; $input['action_type'] = 'assign'; $input['field'] = '_ignore_import'; $input['value'] = '1'; $ruleaction->add($input); // Add printer rules (in first in rule list) when use it since 0.85 $query = "DELETE FROM `glpi_plugin_fusioninventory_configs`" . " WHERE `type`='import_printer' "; /* * Manage configuration of plugin */ $config = new PluginFusioninventoryConfig(); $pfSetup = new PluginFusioninventorySetup(); $users_id = $pfSetup->createFusionInventoryUser(); $a_input = array(); $a_input['ssl_only'] = 0; $a_input['delete_task'] = 20; $a_input['inventory_frequence'] = 24; $a_input['agent_port'] = 62354; $a_input['extradebug'] = 0; $a_input['users_id'] = $users_id; $a_input['agents_old_days'] = 0; $config->addValues($a_input, FALSE); // $DB->query("DELETE FROM `glpi_plugin_fusioninventory_configs` // WHERE `plugins_id`='0'"); // $query = "SELECT * FROM `glpi_plugin_fusioninventory_configs` // WHERE `type`='version' // LIMIT 1, 10"; // $result = $DB->query($query); // while ($data=$DB->fetch_array($result)) { // $config->delete($data); // } $a_input = array(); $a_input['version'] = PLUGIN_FUSIONINVENTORY_VERSION; $config->addValues($a_input, TRUE); $a_input = array(); $a_input['ssl_only'] = 0; if (isset($prepare_Config['ssl_only'])) { $a_input['ssl_only'] = $prepare_Config['ssl_only']; } $a_input['delete_task'] = 20; $a_input['inventory_frequence'] = 24; $a_input['agent_port'] = 62354; $a_input['extradebug'] = 0; $a_input['users_id'] = 0; //Deploy configuration options $a_input['server_upload_path'] = Toolbox::addslashes_deep(implode(DIRECTORY_SEPARATOR, array(GLPI_PLUGIN_DOC_DIR, 'fusioninventory', 'upload'))); $a_input['alert_winpath'] = 1; $a_input['server_as_mirror'] = 1; $config->addValues($a_input, FALSE); $pfSetup = new PluginFusioninventorySetup(); $users_id = $pfSetup->createFusionInventoryUser(); $query = "UPDATE `glpi_plugin_fusioninventory_configs`\n SET `value`='" . $users_id . "'\n WHERE `type`='users_id'"; $DB->query($query); // Update fusinvinventory _config values to this plugin $input = array(); $input['import_software'] = 1; $input['import_volume'] = 1; $input['import_antivirus'] = 1; $input['import_registry'] = 1; $input['import_process'] = 1; $input['import_vm'] = 1; $input['component_processor'] = 1; $input['component_memory'] = 1; $input['component_harddrive'] = 1; $input['component_networkcard'] = 1; $input['component_graphiccard'] = 1; $input['component_soundcard'] = 1; $input['component_drive'] = 1; $input['component_networkdrive'] = 1; $input['component_control'] = 1; $input['states_id_default'] = 0; $input['location'] = 0; $input['group'] = 0; $input['component_networkcardvirtual'] = 1; $config->addValues($input, FALSE); // Add new config values if not added $input = $config->initConfigModule(TRUE); foreach ($input as $name => $value) { $a_conf = $config->find("`type`='" . $name . "'"); if (count($a_conf) == 0) { $config->add(array('type' => $name, 'value' => $value)); } } $migration->displayMessage("Clean printers"); /* * Remove / at the end of printers (bugs in older versions of agents. */ $printer = new Printer(); $query = "SELECT * FROM `glpi_printers`\n WHERE `serial` LIKE '%/' "; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $cleanSerial = preg_replace('/\\/$/', '', $data['serial']); $querynb = "SELECT * FROM `glpi_printers`\n WHERE `serial`='" . $cleanSerial . "'\n LIMIT 1"; $resultnb = $DB->query($querynb); if ($DB->numrows($resultnb) == '0') { $input = array(); $input['id'] = $data['id']; $input["serial"] = $cleanSerial; $printer->update($input); } } /* * Update blacklist */ $input = array(); $input['03000200-0400-0500-0006-000700080009'] = '2'; $input['6AB5B300-538D-1014-9FB5-B0684D007B53'] = '2'; $input['01010101-0101-0101-0101-010101010101'] = '2'; $input['20:41:53:59:4e:ff'] = '3'; $input['02:00:4e:43:50:49'] = '3'; $input['e2:e6:16:20:0a:35'] = '3'; $input['d2:0a:2d:a0:04:be'] = '3'; $input['00:a0:c6:00:00:00'] = '3'; $input['d2:6b:25:2f:2c:e7'] = '3'; $input['33:50:6f:45:30:30'] = '3'; $input['0a:00:27:00:00:00'] = '3'; $input['00:50:56:C0:00:01'] = '3'; $input['00:50:56:C0:00:02'] = '3'; $input['00:50:56:C0:00:03'] = '3'; $input['00:50:56:C0:00:04'] = '3'; $input['00:50:56:C0:00:08'] = '3'; $input['FE:FF:FF:FF:FF:FF'] = '3'; $input['00:00:00:00:00:00'] = '3'; $input['00:0b:ca:fe:00:00'] = '3'; $input['02:80:37:EC:02:00'] = '3'; $input['MB-1234567890'] = '1'; $input['Not Specified'] = '1'; $input['OEM_Serial'] = '1'; $input['SystemSerialNumb'] = '1'; $input['Not'] = '2'; foreach ($input as $value => $type) { $query = "SELECT * FROM `glpi_plugin_fusioninventory_inventorycomputerblacklists`\n WHERE `plugin_fusioninventory_criterium_id`='" . $type . "'\n AND `value`='" . $value . "'"; $result = $DB->query($query); if ($DB->numrows($result) == '0') { $query = "INSERT INTO `glpi_plugin_fusioninventory_inventorycomputerblacklists`\n (`plugin_fusioninventory_criterium_id`, `value`) VALUES\n ( '" . $type . "', '" . $value . "')"; $DB->query($query); } } $migration->displayMessage("Add Crontasks"); /* * Add Crontask if not exist */ $crontask = new CronTask(); if ($crontask->getFromDBbyName('PluginFusioninventoryTaskjob', 'taskscheduler')) { $crontask->fields['itemtype'] = 'PluginFusioninventoryTask'; $crontask->updateInDB(array('itemtype')); } if (!$crontask->getFromDBbyName('PluginFusioninventoryTask', 'taskscheduler')) { CronTask::Register('PluginFusioninventoryTask', 'taskscheduler', '60', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30)); } if ($crontask->getFromDBbyName('PluginFusioninventoryTaskjobstate', 'cleantaskjob') and $crontask->getFromDBbyName('PluginFusioninventoryTaskjobstatus', 'cleantaskjob')) { $crontask->getFromDBbyName('PluginFusioninventoryTaskjobstatus', 'cleantaskjob'); $crontask->delete($crontask->fields); } if ($crontask->getFromDBbyName('PluginFusioninventoryTaskjobstatus', 'cleantaskjob')) { $query = "UPDATE `glpi_crontasks` SET `itemtype`='PluginFusioninventoryTaskjobstate'\n WHERE `itemtype`='PluginFusioninventoryTaskjobstatus'"; $DB->query($query); } if (!$crontask->getFromDBbyName('PluginFusioninventoryTaskjobstate', 'cleantaskjob')) { Crontask::Register('PluginFusioninventoryTaskjobstate', 'cleantaskjob', 3600 * 24, array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30)); } if ($crontask->getFromDBbyName('PluginFusinvsnmpNetworkPortLog', 'cleannetworkportlogs')) { $crontask->delete($crontask->fields); } if (!$crontask->getFromDBbyName('PluginFusioninventoryNetworkPortLog', 'cleannetworkportlogs')) { Crontask::Register('PluginFusioninventoryNetworkPortLog', 'cleannetworkportlogs', 3600 * 24, array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30)); } if ($crontask->getFromDBbyName('PluginFusioninventoryConfigurationManagement', 'checkdevices')) { $crontask->delete($crontask->fields); } if (!$crontask->getFromDBbyName('PluginFusioninventoryAgent', 'cleanoldagents')) { Crontask::Register('PluginFusioninventoryAgent', 'cleanoldagents', 86400, array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30, 'hourmin' => 22, 'hourmax' => 6, 'comment' => 'Clean agents not contacted since xxx days')); } /* * Update task's agents list from dynamic group periodically in order to automatically target new * computer. */ if (!$crontask->getFromDBbyName('PluginFusioninventoryTaskjob', 'updatedynamictasks')) { CronTask::Register('PluginFusioninventoryTaskjob', 'updatedynamictasks', '60', array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30, 'state' => 0)); } if (!$crontask->getFromDBbyName('PluginFusioninventoryAgentWakeup', 'wakeupAgents')) { Crontask::Register('PluginFusioninventoryAgentWakeup', 'wakeupAgents', 120, array('mode' => 2, 'allowmode' => 3, 'logs_lifetime' => 30, 'comment' => 'Wake agents ups')); } /** * Add field to manage which group can be refreshed by updatedynamictasks crontask */ if (!FieldExists('glpi_plugin_fusioninventory_deploygroups_dynamicdatas', 'can_update_group')) { $migration->addField('glpi_plugin_fusioninventory_deploygroups_dynamicdatas', 'can_update_group', 'bool'); $migration->addKey('glpi_plugin_fusioninventory_deploygroups_dynamicdatas', 'can_update_group'); $migration->migrationOneTable('glpi_plugin_fusioninventory_deploygroups_dynamicdatas'); } // $pfIgnoredimportdevice = new PluginFusioninventoryIgnoredimportdevice(); // $pfIgnoredimportdevice->install(); //Change static & dynamic structure to fit the GLPI framework $migration->changeField('glpi_plugin_fusioninventory_deploygroups_dynamicdatas', 'groups_id', 'plugin_fusioninventory_deploygroups_id', 'integer'); $migration->migrationOneTable('glpi_plugin_fusioninventory_deploygroups_dynamicdatas'); $migration->changeField('glpi_plugin_fusioninventory_deploygroups_staticdatas', 'groups_id', 'plugin_fusioninventory_deploygroups_id', 'integer'); $migration->migrationOneTable('glpi_plugin_fusioninventory_deploygroups_staticdatas'); // Delete data in glpi_logs(agent problem => ticket http://forge.fusioninventory.org/issues/1546) // ** Token $query = "DELETE FROM `glpi_logs`\n WHERE `itemtype`='PluginFusioninventoryAgent'\n AND `id_search_option`='9'"; $DB->query($query); // ** Last contact $query = "DELETE FROM `glpi_logs`\n WHERE `itemtype`='PluginFusioninventoryAgent'\n AND `id_search_option`='4'"; $DB->query($query); // ** Version $query = "DELETE FROM `glpi_logs`\n WHERE `itemtype`='PluginFusioninventoryAgent'\n AND `id_search_option`='8'\n AND `old_value`=`new_value`"; $DB->query($query); /* * Manage devices with is_dynamic */ $query = "SELECT * FROM `glpi_plugin_fusioninventory_networkequipments`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $DB->query("UPDATE `glpi_networkequipments` SET `is_dynamic`='1'\n WHERE `id`='" . $data['networkequipments_id'] . "'"); } $query = "SELECT * FROM `glpi_plugin_fusioninventory_inventorycomputercomputers`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $DB->query("UPDATE `glpi_computers` SET `is_dynamic`='1'\n WHERE `id`='" . $data['computers_id'] . "'"); } $query = "SELECT * FROM `glpi_plugin_fusioninventory_printers`"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $DB->query("UPDATE `glpi_printers` SET `is_dynamic`='1'\n WHERE `id`='" . $data['printers_id'] . "'"); } // Update networkports types $pfNetworkporttype = new PluginFusioninventoryNetworkporttype(); $pfNetworkporttype->init(); if (TableExists('glpi_plugin_fusioninventory_profiles')) { //Migrate rights to the new system introduction in GLPI 0.85 PluginFusioninventoryProfile::migrateProfiles(); //Drop old table $migration->dropTable('glpi_plugin_fusioninventory_profiles'); } //Create first access to the current profile is needed if (isset($_SESSION['glpiactiveprofile'])) { PluginFusioninventoryProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']); } // Define lastup field of fusion networkports $query = "SELECT * FROM `glpi_plugin_fusioninventory_mappings`\n WHERE `name`='ifstatus'\n LIMIT 1"; $result = $DB->query($query); while ($data = $DB->fetch_array($result)) { $query_np = "SELECT * FROM `glpi_plugin_fusioninventory_networkports`"; $result_np = $DB->query($query_np); while ($data_np = $DB->fetch_array($result_np)) { $query_nplog = "SELECT * FROM `glpi_plugin_fusioninventory_networkportlogs`\n WHERE `networkports_id`='" . $data_np['networkports_id'] . "'\n AND `plugin_fusioninventory_mappings_id`='" . $data['id'] . "'\n ORDER BY `date_mod` DESC\n LIMIT 1"; $result_nplog = $DB->query($query_nplog); while ($data_nplog = $DB->fetch_array($result_nplog)) { $DB->query("UPDATE `glpi_plugin_fusioninventory_networkports`\n SET `lastup`='" . $data_nplog['date_mod'] . "'\n WHERE `id`='" . $data_np['id'] . "'"); } } } //Migrate search params for dynamic groups doDynamicDataSearchParamsMigration(); }
/** * Import the devices for a computer * * @param $devicetype integer : device type * @param $computers_id integer : glpi computer id. * @param $ocsid integer : ocs computer id (ID). * @param $ocsservers_id integer : ocs server id * @param $cfg_ocs array : ocs config * @param $import_device array : already imported devices * @param $import_ip array : already imported ip * @param $dohistory boolean : log changes ? * * @return Nothing (void). **/ static function updateDevices($devicetype, $computers_id, $ocsid, $ocsservers_id, $cfg_ocs, $import_device, $import_ip, $dohistory) { global $DBocs, $DB; $prevalue = $devicetype . self::FIELD_SEPARATOR; self::checkOCSconnection($ocsservers_id); $types = Computer_Device::getDeviceTypes(); $CompDevice = new Computer_Device($types[$devicetype]); $do_clean = false; switch ($devicetype) { case self::RAM_DEVICE: //Memoire if ($cfg_ocs["import_device_memory"]) { $do_clean = true; $query2 = "SELECT *\n FROM `memories`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $DBocs->query($query2); if ($DBocs->numrows($result2) > 0) { // Drop all memories and force no history if (!in_array(self::IMPORT_TAG_078, $import_device)) { self::addToOcsArray($computers_id, array(0 => self::IMPORT_TAG_078), "import_device"); // Clean memories for this computer if (count($import_device)) { $dohistory = false; foreach ($import_device as $key => $val) { $tmp = explode(self::FIELD_SEPARATOR, $key); if (isset($tmp[1]) && $tmp[0] == self::RAM_DEVICE) { $CompDevice->delete(array('id' => $tmp[1], '_no_history' => true, '_itemtype' => 'DeviceMemory')); self::deleteInOcsArray($computers_id, $key, "import_device"); unset($import_device[$key]); } } } } while ($line2 = $DBocs->fetch_array($result2)) { $line2 = clean_cross_side_scripting_deep(addslashes_deep($line2)); if (!empty($line2["CAPACITY"]) && $line2["CAPACITY"] != "No") { $ram["designation"] = ""; if ($line2["TYPE"] != "Empty Slot" && $line2["TYPE"] != "Unknown") { $ram["designation"] = $line2["TYPE"]; } if ($line2["DESCRIPTION"]) { if (!empty($ram["designation"])) { $ram["designation"] .= " - "; } $ram["designation"] .= $line2["DESCRIPTION"]; } if (!is_numeric($line2["CAPACITY"])) { $line2["CAPACITY"] = 0; } $ram["specif_default"] = $line2["CAPACITY"]; if (!in_array(stripslashes($prevalue . $ram["designation"]), $import_device)) { $ram["frequence"] = $line2["SPEED"]; $ram["devicememorytypes_id"] = Dropdown::importExternal('DeviceMemoryType', $line2["TYPE"]); $DeviceMemory = new DeviceMemory(); $ram_id = $DeviceMemory->import($ram); if ($ram_id) { $devID = $CompDevice->add(array('computers_id' => $computers_id, '_itemtype' => 'DeviceMemory', 'devicememories_id' => $ram_id, 'specificity' => $line2["CAPACITY"], '_no_history' => !$dohistory)); self::addToOcsArray($computers_id, array($prevalue . $devID => $prevalue . $ram["designation"]), "import_device"); } } else { $tmp = array_search(stripslashes($prevalue . $ram["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'specificity' => $line2["CAPACITY"], '_itemtype' => 'DeviceMemory')); unset($import_device[$tmp]); } } } } } break; case self::HDD_DEVICE: //Disque Dur if ($cfg_ocs["import_device_hdd"]) { $do_clean = true; $query2 = "SELECT *\n FROM `storages`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $DBocs->query($query2); if ($DBocs->numrows($result2) > 0) { while ($line2 = $DBocs->fetch_array($result2)) { $line2 = clean_cross_side_scripting_deep(addslashes_deep($line2)); if (!empty($line2["DISKSIZE"]) && preg_match("/disk|spare\\sdrive/i", $line2["TYPE"])) { if ($line2["NAME"]) { $dd["designation"] = $line2["NAME"]; } else { if ($line2["MODEL"]) { $dd["designation"] = $line2["MODEL"]; } else { $dd["designation"] = "Unknown"; } } if (!is_numeric($line2["DISKSIZE"])) { $line2["DISKSIZE"] = 0; } if (!in_array(stripslashes($prevalue . $dd["designation"]), $import_device)) { $dd["specif_default"] = $line2["DISKSIZE"]; $DeviceHardDrive = new DeviceHardDrive(); $dd_id = $DeviceHardDrive->import($dd); if ($dd_id) { $devID = $CompDevice->add(array('computers_id' => $computers_id, '_itemtype' => 'DeviceHardDrive', 'deviceharddrives_id' => $dd_id, 'specificity' => $line2["DISKSIZE"], '_no_history' => !$dohistory)); self::addToOcsArray($computers_id, array($prevalue . $devID => $prevalue . $dd["designation"]), "import_device"); } } else { $tmp = array_search(stripslashes($prevalue . $dd["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'specificity' => $line2["DISKSIZE"], '_itemtype' => 'DeviceHardDrive')); unset($import_device[$tmp]); } } } } } break; case self::DRIVE_DEVICE: //lecteurs if ($cfg_ocs["import_device_drive"]) { $do_clean = true; $query2 = "SELECT *\n FROM `storages`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $DBocs->query($query2); if ($DBocs->numrows($result2) > 0) { while ($line2 = $DBocs->fetch_array($result2)) { $line2 = clean_cross_side_scripting_deep(addslashes_deep($line2)); if (empty($line2["DISKSIZE"]) || !preg_match("/disk/i", $line2["TYPE"])) { if ($line2["NAME"]) { $stor["designation"] = $line2["NAME"]; } else { if ($line2["MODEL"]) { $stor["designation"] = $line2["MODEL"]; } else { $stor["designation"] = "Unknown"; } } if (!in_array(stripslashes($prevalue . $stor["designation"]), $import_device)) { $stor["specif_default"] = $line2["DISKSIZE"]; $DeviceDrive = new DeviceDrive(); $stor_id = $DeviceDrive->import($stor); if ($stor_id) { $devID = $CompDevice->add(array('computers_id' => $computers_id, '_itemtype' => 'DeviceDrive', 'devicedrives_id' => $stor_id, '_no_history' => !$dohistory)); self::addToOcsArray($computers_id, array($prevalue . $devID => $prevalue . $stor["designation"]), "import_device"); } } else { $tmp = array_search(stripslashes($prevalue . $stor["designation"]), $import_device); unset($import_device[$tmp]); } } } } } break; case self::PCI_DEVICE: //Modems if ($cfg_ocs["import_device_modem"]) { $do_clean = true; $query2 = "SELECT *\n FROM `modems`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $DBocs->query($query2); if ($DBocs->numrows($result2) > 0) { while ($line2 = $DBocs->fetch_array($result2)) { $line2 = clean_cross_side_scripting_deep(addslashes_deep($line2)); $mdm["designation"] = $line2["NAME"]; if (!in_array(stripslashes($prevalue . $mdm["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"])) { $mdm["comment"] = $line2["TYPE"] . "\r\n" . $line2["DESCRIPTION"]; } $DevicePci = new DevicePci(); $mdm_id = $DevicePci->import($mdm); if ($mdm_id) { $devID = $CompDevice->add(array('computers_id' => $computers_id, '_itemtype' => 'DevicePci', 'devicepcis_id' => $mdm_id, '_no_history' => !$dohistory)); self::addToOcsArray($computers_id, array($prevalue . $devID => $prevalue . $mdm["designation"]), "import_device"); } } else { $tmp = array_search(stripslashes($prevalue . $mdm["designation"]), $import_device); unset($import_device[$tmp]); } } } } //Ports if ($cfg_ocs["import_device_port"]) { $query2 = "SELECT *\n FROM `ports`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $DBocs->query($query2); if ($DBocs->numrows($result2) > 0) { while ($line2 = $DBocs->fetch_array($result2)) { $line2 = clean_cross_side_scripting_deep(addslashes_deep($line2)); $port["designation"] = ""; if ($line2["TYPE"] != "Other") { $port["designation"] .= $line2["TYPE"]; } if ($line2["NAME"] != "Not Specified") { $port["designation"] .= " " . $line2["NAME"]; } else { if ($line2["CAPTION"] != "None") { $port["designation"] .= " " . $line2["CAPTION"]; } } if (!empty($port["designation"])) { if (!in_array(stripslashes($prevalue . $port["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"]) && $line2["DESCRIPTION"] != "None") { $port["comment"] = $line2["DESCRIPTION"]; } $DevicePci = new DevicePci(); $port_id = $DevicePci->import($port); if ($port_id) { $devID = $CompDevice->add(array('computers_id' => $computers_id, '_itemtype' => 'DevicePci', 'devicepcis_id' => $port_id, '_no_history' => !$dohistory)); self::addToOcsArray($computers_id, array($prevalue . $devID => $prevalue . $port["designation"]), "import_device"); } } else { $tmp = array_search(stripslashes($prevalue . $port["designation"]), $import_device); unset($import_device[$tmp]); } } } } } break; case self::PROCESSOR_DEVICE: //Processeurs : if ($cfg_ocs["import_device_processor"]) { $do_clean = true; $query = "SELECT *\n FROM `hardware`\n WHERE `ID` = '{$ocsid}'\n ORDER BY `ID`"; $result = $DBocs->query($query); if ($DBocs->numrows($result) == 1) { $line = $DBocs->fetch_array($result); $line = clean_cross_side_scripting_deep(addslashes_deep($line)); for ($i = 0; $i < $line["PROCESSORN"]; $i++) { $processor = array(); $processor["designation"] = $line["PROCESSORT"]; if (!is_numeric($line["PROCESSORS"])) { $line["PROCESSORS"] = 0; } $processor["specif_default"] = $line["PROCESSORS"]; if (!in_array(stripslashes($prevalue . $processor["designation"]), $import_device)) { $DeviceProcessor = new DeviceProcessor(); $proc_id = $DeviceProcessor->import($processor); if ($proc_id) { $devID = $CompDevice->add(array('computers_id' => $computers_id, '_itemtype' => 'DeviceProcessor', 'deviceprocessors_id' => $proc_id, 'specificity' => $line["PROCESSORS"], '_no_history' => !$dohistory)); self::addToOcsArray($computers_id, array($prevalue . $devID => $prevalue . $processor["designation"]), "import_device"); } } else { $tmp = array_search(stripslashes($prevalue . $processor["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'specificity' => $line["PROCESSORS"], '_itemtype' => 'DeviceProcessor')); unset($import_device[$tmp]); } } } } break; case self::NETWORK_DEVICE: //Carte reseau if ($cfg_ocs["import_device_iface"] || $cfg_ocs["import_ip"]) { $do_clean = true; //If import_ip doesn't contain _VERSION_072_, then migrate it to the new architecture if (!in_array(self::IMPORT_TAG_072, $import_ip)) { $import_ip = self::migrateImportIP($computers_id, $import_ip); } $query2 = "SELECT *\n FROM `networks`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n ORDER BY `ID`"; $result2 = $DBocs->query($query2); $i = 0; $manually_link = false; //Count old ip in GLPI $count_ip = count($import_ip); // Add network device if ($DBocs->numrows($result2) > 0) { $mac_already_imported = array(); while ($line2 = $DBocs->fetch_array($result2)) { $line2 = clean_cross_side_scripting_deep(addslashes_deep($line2)); if ($cfg_ocs["import_device_iface"]) { $network["designation"] = $line2["DESCRIPTION"]; if (!in_array($line2["MACADDR"], $mac_already_imported)) { $mac_already_imported[] = $line2["MACADDR"]; if (!in_array(stripslashes($prevalue . $network["designation"]), $import_device)) { if (!empty($line2["SPEED"])) { $network["bandwidth"] = $line2["SPEED"]; } $DeviceNetworkCard = new DeviceNetworkCard(); $net_id = $DeviceNetworkCard->import($network); if ($net_id) { $devID = $CompDevice->add(array('computers_id' => $computers_id, '_itemtype' => 'DeviceNetworkCard', 'devicenetworkcards_id' => $net_id, 'specificity' => $line2["MACADDR"], '_no_history' => !$dohistory)); self::addToOcsArray($computers_id, array($prevalue . $devID > $prevalue . $network["designation"]), "import_device"); } } else { $tmp = array_search(stripslashes($prevalue . $network["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'specificity' => $line2["MACADDR"], '_itemtype' => 'DeviceNetworkCard')); unset($import_device[$tmp]); } } } if (!empty($line2["IPADDRESS"]) && $cfg_ocs["import_ip"]) { $ocs_ips = explode(",", $line2["IPADDRESS"]); $ocs_ips = array_unique($ocs_ips); sort($ocs_ips); //if never imported (only 0.72 tag in array), check if existing ones match if ($count_ip == 1) { //get old IP in DB $querySelectIDandIP = "SELECT `id`, `ip`\n FROM `glpi_networkports`\n WHERE `itemtype` = 'Computer'\n AND `items_id` = '{$computers_id}'\n AND `mac` = '" . $line2["MACADDR"] . "'\n AND `name` = '" . $line2["DESCRIPTION"] . "'"; $result = $DB->query($querySelectIDandIP); if ($DB->numrows($result) > 0) { while ($data = $DB->fetch_array($result)) { //Upate import_ip column and import_ip array self::addToOcsArray($computers_id, array($data["id"] => $data["ip"] . self::FIELD_SEPARATOR . $line2["MACADDR"]), "import_ip"); $import_ip[$data["id"]] = $data["ip"] . self::FIELD_SEPARATOR . $line2["MACADDR"]; } } } $netport = array(); $netport["mac"] = $line2["MACADDR"]; $netport["networkinterfaces_id"] = Dropdown::importExternal('NetworkInterface', $line2["TYPE"]); $netport["name"] = $line2["DESCRIPTION"]; $netport["items_id"] = $computers_id; $netport["itemtype"] = 'Computer'; $netport["netmask"] = $line2["IPMASK"]; $netport["gateway"] = $line2["IPGATEWAY"]; $netport["subnet"] = $line2["IPSUBNET"]; $np = new NetworkPort(); for ($j = 0; $j < count($ocs_ips); $j++) { //First search : look for the same port (same IP and same MAC) $id_ip = array_search($ocs_ips[$j] . self::FIELD_SEPARATOR . $line2["MACADDR"], $import_ip); //Second search : IP may have change, so look only for mac address if (!$id_ip) { //Browse the whole import_ip array foreach ($import_ip as $ID => $ip) { if ($ID > 0) { $tmp = explode(self::FIELD_SEPARATOR, $ip); //Port was found by looking at the mac address if (isset($tmp[1]) && $tmp[1] == $line2["MACADDR"]) { //Remove port in import_ip self::deleteInOcsArray($computers_id, $ID, "import_ip"); self::addToOcsArray($computers_id, array($ID => $ocs_ips[$j] . self::FIELD_SEPARATOR . $line2["MACADDR"]), "import_ip"); $import_ip[$ID] = $ocs_ips[$j] . self::FIELD_SEPARATOR . $line2["MACADDR"]; $id_ip = $ID; break; } } } } $netport['_no_history'] = !$dohistory; //Update already in DB if ($id_ip > 0) { $netport["ip"] = $ocs_ips[$j]; $netport["logical_number"] = $j; $netport["id"] = $id_ip; $np->update($netport); unset($import_ip[$id_ip]); $count_ip++; } else { //If new IP found unset($np->fields["netpoints_id"]); unset($netport["id"]); unset($np->fields["id"]); $netport["ip"] = $ocs_ips[$j]; $netport["logical_number"] = $j; $newID = $np->add($netport); //ADD to array self::addToOcsArray($computers_id, array($newID => $ocs_ips[$j] . self::FIELD_SEPARATOR . $line2["MACADDR"]), "import_ip"); $count_ip++; } } } } } } break; case self::GFX_DEVICE: //carte graphique if ($cfg_ocs["import_device_gfxcard"]) { $do_clean = true; $query2 = "SELECT DISTINCT(`NAME`) AS NAME,\n `MEMORY`\n FROM `videos`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n AND `NAME` != ''\n ORDER BY `ID`"; $result2 = $DBocs->query($query2); if ($DBocs->numrows($result2) > 0) { while ($line2 = $DBocs->fetch_array($result2)) { $line2 = clean_cross_side_scripting_deep(addslashes_deep($line2)); $video["designation"] = $line2["NAME"]; if (!is_numeric($line2["MEMORY"])) { $line2["MEMORY"] = 0; } if (!in_array(stripslashes($prevalue . $video["designation"]), $import_device)) { $video["specif_default"] = $line2["MEMORY"]; $DeviceGraphicCard = new DeviceGraphicCard(); $video_id = $DeviceGraphicCard->import($video); if ($video_id) { $devID = $CompDevice->add(array('computers_id' => $computers_id, '_itemtype' => 'DeviceGraphicCard', 'devicegraphiccards_id' => $video_id, 'specificity' => $line2["MEMORY"], '_no_history' => !$dohistory)); self::addToOcsArray($computers_id, array($prevalue . $devID => $prevalue . $video["designation"]), "import_device"); } } else { $tmp = array_search(stripslashes($prevalue . $video["designation"]), $import_device); list($type, $id) = explode(self::FIELD_SEPARATOR, $tmp); $CompDevice->update(array('id' => $id, 'specificity' => $line2["MEMORY"], '_itemtype' => 'DeviceGraphicCard')); unset($import_device[$tmp]); } } } } break; case self::SND_DEVICE: //carte son if ($cfg_ocs["import_device_sound"]) { $do_clean = true; $query2 = "SELECT DISTINCT(`NAME`) AS NAME,\n `DESCRIPTION`\n FROM `sounds`\n WHERE `HARDWARE_ID` = '{$ocsid}'\n AND `NAME` != ''\n ORDER BY `ID`"; $result2 = $DBocs->query($query2); if ($DBocs->numrows($result2) > 0) { while ($line2 = $DBocs->fetch_array($result2)) { $line2 = clean_cross_side_scripting_deep(addslashes_deep($line2)); if (!$cfg_ocs["ocs_db_utf8"] && !seems_utf8($line2["NAME"])) { $line2["NAME"] = encodeInUtf8($line2["NAME"]); } $snd["designation"] = $line2["NAME"]; if (!in_array(stripslashes($prevalue . $snd["designation"]), $import_device)) { if (!empty($line2["DESCRIPTION"])) { $snd["comment"] = $line2["DESCRIPTION"]; } $DeviceSoundCard = new DeviceSoundCard(); $snd_id = $DeviceSoundCard->import($snd); if ($snd_id) { $devID = $CompDevice->add(array('computers_id' => $computers_id, '_itemtype' => 'DeviceSoundCard', 'devicesoundcards_id' => $snd_id, '_no_history' => !$dohistory)); self::addToOcsArray($computers_id, array($prevalue . $devID => $prevalue . $snd["designation"]), "import_device"); } } else { $id = array_search(stripslashes($prevalue . $snd["designation"]), $import_device); unset($import_device[$id]); } } } } break; } // Delete Unexisting Items not found in OCS if ($do_clean && count($import_device)) { foreach ($import_device as $key => $val) { if (!(strpos($key, $devicetype . '$$') === false)) { list($type, $id) = explode(self::FIELD_SEPARATOR, $key); $CompDevice->delete(array('id' => $id, '_itemtype' => $types[$devicetype], '_no_history' => !$dohistory)); self::deleteInOcsArray($computers_id, $key, "import_device"); } } } if ($do_clean && count($import_ip) && $devicetype == self::NETWORK_DEVICE) { foreach ($import_ip as $key => $val) { if ($key > 0) { $netport = new NetworkPort(); $netport->delete(array('id' => $key)); self::deleteInOcsArray($computers_id, $key, "import_ip"); } } } //Alimentation //Carte mere }