• Модуль: 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
			}
		}
	}
}