• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/scrum/service/taskservice.php
  • Класс: BitrixTasksScrumServiceTaskService
  • Вызов: TaskService::onAfterTaskAdd
static function onAfterTaskAdd(int $taskId, array &$fields)
{
	if ($fields['GROUP_ID'] && Loader::includeModule('socialnetwork'))
	{
		$currentGroupId = (int) $fields['GROUP_ID'];
		$group = Workgroup::getById($currentGroupId);
		if ($group && $group->isScrumProject())
		{
			self::createScrumItem($taskId, $fields);

			$parentTaskId = $fields['PARENT_ID'] ?? null;
			if ($parentTaskId)
			{
				$itemService = new ItemService();
				$parentItem = $itemService->getItemBySourceId($parentTaskId);
				if (!$parentItem->isEmpty())
				{
					(new CacheService($parentItem->getSourceId(), CacheService::ITEM_TASKS))->clean();

					$pushService = (Loader::includeModule('pull') ? new PushService() : null);

					$entityService = new EntityService();
					$parentEntity = $entityService->getEntityById($parentItem->getEntityId());
					if ($parentEntity->getGroupId() === $currentGroupId)
					{
						$parentItem->getInfo()->setVisibilitySubtasks('Y');
					}

					$itemService->changeItem($parentItem, $pushService);
				}
			}

			$hasLinks = (isset($fields['DEPENDS_ON']) && is_array($fields['DEPENDS_ON']));
			if ($hasLinks)
			{
				$taskService = new TaskService(UtilUser::getId());

				foreach ($fields['DEPENDS_ON'] as $linkedTaskId)
				{
					$taskService->updateTaskLinks($linkedTaskId, $taskId);
				}
			}
		}
	}
}