- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/manager/task/parameter.php
- Класс: BitrixTasksManagerTaskParameter
- Вызов: Parameter::manageSet
static function manageSet($userId, $taskId, array $items = array(), array $parameters = array('PUBLIC_MODE' => false, 'MODE' => self::MODE_ADD))
{
if($parameters['MODE'] == self::MODE_UPDATE)
{
// must try to update existing
$res = ParameterTable::getList(array('filter' => array('=TASK_ID' => $taskId)));
$currentItems = array();
while($item = $res->fetch())
{
$currentItems[] = $item;
}
$items = static::indexItemSets($items);
$currentItems = static::indexItemSets($currentItems);
list($toAdd, $toUpdate, $toDelete) = static::makeDeltaSets($items, $currentItems);
foreach($toDelete as $k => $v)
{
ParameterTable::delete($v);
}
$toAdd = array_flip($toAdd);
$toUpdate = array_flip($toUpdate);
foreach($items as $k => $v)
{
if(isset($toAdd[$k]))
{
ParameterTable::add(array(
'TASK_ID' => $taskId,
'CODE' => $v['CODE'],
'VALUE' => $v['VALUE'],
));
}
elseif(isset($toUpdate[$k]))
{
ParameterTable::update($v['ID'], array(
'TASK_ID' => $taskId,
'CODE' => $v['CODE'],
'VALUE' => $v['VALUE'],
));
}
}
}
else
{
foreach($items as $k => $v)
{
try
{
ParameterTable::add(
array(
'TASK_ID' => $taskId,
'CODE' => $v['CODE'],
'VALUE' => $v['VALUE'],
)
);
}
catch (Exception $e)
{
//do nothing
}
}
}
}