• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/useroption.php
  • Класс: BitrixTasksInternalsUserOption
  • Вызов: UserOption::add
static function add(int $taskId, int $userId, int $option): Result
{
	static::onBeforeOptionChanged($taskId, $userId, $option);

	$addResult = new Result();

	if ($taskId <= 0 || $userId <= 0 || !static::isOption($option))
	{
		$addResult->addError(0, 'Some parameter is wrong.');
		return $addResult;
	}

	$data = [
		'TASK_ID' => $taskId,
		'USER_ID' => $userId,
		'OPTION_CODE' => $option,
	];

	$item = UserOptionTable::getList([
		'select' => ['ID'],
		'filter' => $data,
	])->fetch();

	if (!$item)
	{
		$tableAddResult = UserOptionTable::add($data);
		if (!$tableAddResult->isSuccess())
		{
			$addResult->addError(2, 'Adding to table failed.');
			return $addResult;
		}

		static::onOptionChanged($taskId, $userId, $option, true);

		return $addResult;
	}

	$addResult->addError(1, 'This option for task and user is already exist.');

	return $addResult;
}