/** * Add lock fields for a record. * * @param $p_itemtype Table id. * @param $p_items_id Line id. * @param $p_fieldsToLock Array of fields to lock. *TODO: check rights and entity * * @return nothing **/ static function addLocks($p_itemtype, $p_items_id, $p_fieldsToLock) { global $DB; $tableName = getTableForItemType($p_itemtype); $pfl = new PluginFusioninventoryLock(); $a_exclude = $pfl->excludeFields(); $p_fieldsToLock = array_diff($p_fieldsToLock, $a_exclude); $result = PluginFusioninventoryLock::getLock($tableName, $p_items_id); if ($DB->numrows($result)) { $row = $DB->fetch_assoc($result); $lockedFields = importArrayFromDB($row['tablefields']); if (count(array_diff($p_fieldsToLock, $lockedFields))) { // old locks --> new locks $p_fieldsToLock = array_merge($p_fieldsToLock, $lockedFields); $a_lines = $pfl->find("`tablename`='" . $tableName . "' AND `items_id`='" . $p_items_id . "'"); $a_line = current($a_lines); $pfl->getFromDB($a_line['id']); $pfl->fields['tablefields'] = exportArrayToDB($p_fieldsToLock); $pfl->update($pfl->fields); } } elseif (count($p_fieldsToLock)) { // no locks --> new locks $input = array(); $input['tablename'] = $tableName; $input['items_id'] = $p_items_id; $input['tablefields'] = exportArrayToDB($p_fieldsToLock); $pfl->add($input); } }