- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskplannermaintance.php
- Класс: CTaskPlannerMaintance
- Вызов: CTaskPlannerMaintance::plannerActions
static function plannerActions($arActions, $site_id = SITE_ID)
{
global $CACHE_MANAGER;
self::$SITE_ID = $site_id;
self::$USER_ID = BitrixTasksUtilUser::getId(); // todo: need to remove this, use $userId instead, to be able to manage other users planner
$lastTaskId = 0;
$arTasks = self::getCurrentTasksList();
if (!is_array($arTasks))
$arTasks = array();
if (($arActions['name'] ?? null) <> '')
{
$ID = false;
try
{
$prevOccurAsUserId = BitrixTasksUtilUser::getOccurAsId(); // null or positive integer
BitrixTasksUtilUser::setOccurAsId(self::$USER_ID);
$task = CTaskItem::add(array(
'RESPONSIBLE_ID' => self::$USER_ID,
'CREATED_BY' => self::$USER_ID,
'TITLE' => $arActions['name'],
'TAGS' => array(),
'STATUS' => 2,
'SITE_ID' => self::$SITE_ID,
'ALLOW_TIME_TRACKING' => 'Y',
), BitrixTasksUtilUser::getAdminId()); // todo: why admin?
$ID = $task->getId();
BitrixTasksUtilUser::setOccurAsId($prevOccurAsUserId);
}
catch(TasksException $e) // todo: when refactor exceptions, replace with somewhat like BitrixTasksException
{
}
if ($ID)
{
if (!is_array($arActions['add']))
{
$arActions['add'] = array($ID);
}
else
{
$arActions['add'][] = $ID;
}
}
}
if (is_array($arActions['add']))
{
$task_id = $lastTaskId;
foreach ($arActions['add'] as $task_id)
{
$arTasks[] = intval($task_id);
}
$lastTaskId = $task_id;
}
$arTasks = array_unique($arTasks);
if (is_array($arActions['remove'] ?? null))
{
$arActions['remove'] = array_unique($arActions['remove']);
foreach ($arActions['remove'] as $task_id)
{
$task_id = intval($task_id);
if (($key = array_search($task_id, $arTasks)) !== false)
{
unset($arTasks[$key]);
}
}
}
$CACHE_MANAGER->ClearByTag('tasks_user_'.self::$USER_ID);
self::setCurrentTasksList($arTasks);
return $lastTaskId;
}