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