• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskitem.php
  • Класс: CTaskItem
  • Вызов: CTaskItem::add
static function add($arNewTaskData, $executiveUserId, array $parameters = array())
{
	CTaskAssert::assertLaxIntegers($executiveUserId);
	CTaskAssert::assert($executiveUserId > 0);

	// Use of BB code by default, HTML is deprecated,
	// but supported for backward compatibility when tasks created
	// from template or as copy of old task with HTML-description.
	if (
		isset($arNewTaskData['DESCRIPTION_IN_BBCODE'])
		&& ($arNewTaskData['DESCRIPTION_IN_BBCODE'] === 'N')	// HTML mode requested
		&& isset($arNewTaskData['DESCRIPTION'])
		&& ($arNewTaskData['DESCRIPTION'] !== '')		// allow HTML mode if there is description
		&& (mb_strpos($arNewTaskData['DESCRIPTION'], '<') !== false)	// with HTML tags
	)
	{
		$arNewTaskData['DESCRIPTION_IN_BBCODE'] = 'N';			// Set HTML mode
	}
	else
		$arNewTaskData['DESCRIPTION_IN_BBCODE'] = 'Y';

	if ( ! isset($arNewTaskData['CREATED_BY']) )
		$arNewTaskData['CREATED_BY'] = $executiveUserId;

	// Check some conditions for non-admins
	if (
		( ! CTasksTools::IsAdmin($executiveUserId) )
		&& ( ! CTasksTools::IsPortalB24Admin($executiveUserId) )
	)
	{
		if (isset($arNewTaskData['GROUP_ID']) && ($arNewTaskData['GROUP_ID'] > 0) && BitrixTasksIntegrationSocialnetwork::includeModule())
		{

			if (
				! CSocNetFeaturesPerms::CanPerformOperation(
					$executiveUserId, SONET_ENTITY_GROUP,
					$arNewTaskData['GROUP_ID'], 'tasks', 'create_tasks'
				)
			)
			{
				throw new TasksException(
					serialize(array(array('text' => GetMessage('TASKS_TASK_CREATE_ACCESS_DENIED'), 'id' => 'ERROR_TASK_CREATE_ACCESS_DENIED'))),
					TasksException::TE_ACCESS_DENIED
				);
			}
		}
	}

	if (!BitrixTasksAccessTaskAccessController::can($executiveUserId, ActionDictionary::ACTION_TASK_SAVE, null, BitrixTasksAccessModelTaskModel::createFromArray($arNewTaskData)))
	{
		throw new TasksException(
			serialize(array(array('text' => GetMessage('TASKS_TASK_CREATE_ACCESS_DENIED'), 'id' => 'ERROR_TASK_CREATE_ACCESS_DENIED'))),
			TasksException::TE_ACCESS_DENIED
		);
	}

	if ( ! array_key_exists('GUID', $arNewTaskData) )
		$arNewTaskData['GUID'] = CTasksTools::genUuid();

	$arParams = array_merge($parameters, array(
		'USER_ID'			   => $executiveUserId,
		'CHECK_RIGHTS_ON_FILES' => true
	));

	$o = new CTasks();
	/** @noinspection PhpDeprecationInspection */
	$rc = $o->Add($arNewTaskData, $arParams);
	if ( ! ($rc > 0) )
	{
		static::throwExceptionVerbose($o->GetErrors());
	}

	self::pinInStage($rc);

	try
	{
		$newTaskItem = new CTaskItem( (int) $rc, $executiveUserId);
		if (!isset($parameters['DISABLE_BIZPROC_RUN']))
		{
			BizprocListener::onTaskAdd($rc, $newTaskItem->getData());
		}
	}
	catch (TasksException | CTaskAssertException $e)
	{
		static::throwExceptionVerbose();
	}

	return $newTaskItem;
}