• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/update/synctaskscenario.php
  • Класс: BitrixTasksUpdateSyncTaskScenario
  • Вызов: SyncTaskScenario::run
private function run(): string
{
	if (!Loader::includeModule('tasks'))
	{
		return '';
	}

	try
	{
		// fetch tasks to sync
		$cursor = $this->getCursor();
		$tasks = $this->getList($cursor);
		$latestTaskId = 0;
		// insert default scenario
		foreach ($tasks as $task)
		{
			ScenarioTable::insertIgnore($task->getId(), [ScenarioTable::SCENARIO_DEFAULT]);
			$latestTaskId = $task->getId();
		}

		if ($latestTaskId)
		{
			$this->setCursor($latestTaskId);
		}

		if ($tasks->count() < self::LIMIT)
		{
			// sync is over, some clean up!
			Option::delete('tasks', ['name' => self::CURSOR_KEY]);
			Option::delete('tasks', ['name' => 'task_sync_in_progress']);
			return '';
		}
	}
	catch (Exception $e)
	{
		(new Log())->collect('Unable to sync task scenario. '.$e->getMessage());
		return '';
	}

	return self::getAgentName();
}