• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/tasklog.php
  • Класс: CTaskLog
  • Вызов: CTaskLog::getStageChanges
static function getStageChanges(int $oldStageId, int $newStageId, int $oldGroupId, int $newGroupId): array
{
	if ($newGroupId !== $oldGroupId)
	{
		return [];
	}

	$isScrum = false;
	if (BitrixMainLoader::includeModule('socialnetwork'))
	{
		$group = BitrixSocialnetworkItemWorkgroup::getById($newGroupId);
		$isScrum = ($group && $group->isScrumProject());
	}

	if ($isScrum)
	{
		$kanbanService = new KanbanService();

		if (!$oldStageId && $oldGroupId)
		{
			$sprintService = new SprintService();

			$sprint = $sprintService->getActiveSprintByGroupId($newGroupId);

			$oldStageId = (int) $kanbanService->getDefaultStageId($sprint->getId());
		}

		$stageTitles = $kanbanService->getStageTitles([$newStageId, $oldStageId]);

		return [
			'FROM_VALUE' => $stageTitles[$oldStageId],
			'TO_VALUE' => $stageTitles[$newStageId],
		];
	}

	if (!$oldStageId && $oldGroupId)
	{
		$oldStageId = (int)StagesTable::getDefaultStageId($oldGroupId);
	}

	$stageFrom = false;
	$stageTo = false;

	$res = StagesTable::getList([
		'select' => ['ID', 'TITLE'],
		'filter' => ['@ID' => [$oldStageId, $newStageId]],
	]);
	while ($stage = $res->fetch())
	{
		if ((int)$stage['ID'] === $oldStageId)
		{
			$stageFrom = $stage['TITLE'];
		}
		elseif ((int)$stage['ID'] === $newStageId)
		{
			$stageTo = $stage['TITLE'];
		}
	}

	return [
		'FROM_VALUE' => $stageFrom,
		'TO_VALUE' => $stageTo,
	];
}