/** * Delete locks fields and get from lib value from last inventory * * @param $item object Computer object * * @return nothing * **/ static function deleteLock($item) { if ($item->fields['items_id'] == 0) { return; } $pfLock = new PluginFusioninventoryLock(); $itemtype = getItemTypeForTable($item->fields['tablename']); $items_id = $item->fields['items_id']; $a_fieldList = array(); if ($item->fields['tablefields'] == $item->input['tablefields']) { $a_fieldList = importArrayFromDB($item->fields['tablefields']); } else { $a_fieldListTemp = importArrayFromDB($item->fields['tablefields']); $a_inputList = importArrayFromDB($item->input['tablefields']); $a_diff = array_diff($a_fieldListTemp, $a_inputList); $a_fieldList = array(); foreach ($a_diff as $value) { if (in_array($value, $a_fieldListTemp)) { $a_fieldList[] = $value; } } } $item_device = new $itemtype(); $item_device->getFromDB($items_id); $a_serialized = $pfLock->getSerialized_InventoryArray($itemtype, $items_id); foreach ($a_serialized as $key => $value) { if (!in_array($key, $a_fieldList)) { $item_device->fields[$key] = $value; } } $exclude = $pfLock->excludeFields(); foreach ($exclude as $key) { if (isset($item_device->fields[$key]) && $key != 'id') { unset($item_device->fields[$key]); } } $_SESSION['glpi_fusionionventory_nolock'] = TRUE; $item_device->update($item_device->fields); unset($_SESSION['glpi_fusionionventory_nolock']); }