/** * Set 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 setLockArray($p_itemtype, $p_items_id, $p_fieldsToLock, $massiveaction = '') { global $DB; $pfl = new PluginFusioninventoryLock(); $tableName = getTableForItemType($p_itemtype); $result = PluginFusioninventoryLock::getLock($tableName, $p_items_id); if ($DB->numrows($result)) { $a_lines = $pfl->find("`tablename`='" . $tableName . "' AND `items_id`='" . $p_items_id . "'"); $a_line = current($a_lines); $pfl->getFromDB($a_line['id']); if ($massiveaction == 'addLock') { $a_lockfieldsDB = importArrayFromDB($pfl->fields['tablefields']); foreach ($p_fieldsToLock as $fieldtoadd) { if (!in_array($fieldtoadd, $a_lockfieldsDB)) { $a_lockfieldsDB[] = $fieldtoadd; } } $pfl->fields['tablefields'] = exportArrayToDB($a_lockfieldsDB); $pfl->update($pfl->fields); } else { if ($massiveaction == 'deleteLock') { $a_lockfieldsDB = importArrayFromDB($pfl->fields['tablefields']); foreach ($p_fieldsToLock as $fieldtoadd) { if (in_array($fieldtoadd, $a_lockfieldsDB)) { $key = array_search($fieldtoadd, $a_lockfieldsDB); unset($a_lockfieldsDB[$key]); } } $pfl->fields['tablefields'] = exportArrayToDB($a_lockfieldsDB); $pfl->update($pfl->fields); } else { if (count($p_fieldsToLock)) { // old locks --> new locks $pfl->fields['tablefields'] = exportArrayToDB($p_fieldsToLock); $pfl->update($pfl->fields); } else { // old locks --> no locks any more $pfl->delete($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); } }