• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskplannermaintance.php
  • Класс: CTaskPlannerMaintance
  • Вызов: CTaskPlannerMaintance::OnPlannerInit
static function OnPlannerInit($params)
{
	global $APPLICATION, $USER, $CACHE_MANAGER;

	self::$SITE_ID = $params['SITE_ID'];
	self::$USER_ID = ($params['USER_ID']? $params['USER_ID'] : $USER->GetID());

	$tasks = array();

	if (self::$USER_ID > 0)
	{
		$CACHE_MANAGER->RegisterTag('tasks_user_'.self::$USER_ID);
		$CACHE_MANAGER->RegisterTag('tasks_user_fields');

		$taskIds = self::getCurrentTasksList();
		$tasksCount = self::getTasksCount($taskIds);
	}
	else
	{
		$taskIds  = array();
		$tasksCount = 0;
	}

	if (
		$params['FULL']
		&& self::$USER_ID > 0
		&& is_array($taskIds)
		&& !empty($taskIds)
	)
	{
		$tasks = self::getTasks($taskIds);
	}

	CJSCore::RegisterExt('tasks_planner_handler', [
		'js' => [
			'/bitrix/js/tasks/core_planner_handler.js',
			'/bitrix/js/tasks/task-iframe-popup.js',
		],
		'css' => '/bitrix/js/tasks/css/tasks.css',
		'lang' => BX_ROOT.'/modules/tasks/lang/'.LANGUAGE_ID.'/core_planner_handler.php',
		'rel' => ['ui.design-tokens', 'ui.fonts.opensans', 'popup', 'tooltip'],
	]);

	if (self::$USER_ID > 0)
	{
		$userTimer = CTaskTimerManager::getInstance(self::$USER_ID);
		$lastTimer = $userTimer->getLastTimer();

		$taskOnTimer = false;
		if ($lastTimer !== false && $lastTimer['TASK_ID'])
		{
			// Timered task can be in day plan, try to found it
			if (in_array($lastTimer['TASK_ID'], $taskIds))
			{
				foreach ($tasks as &$taskData)
				{
					if ($taskData['ID'] == $lastTimer['TASK_ID'])
					{
						$taskOnTimer = $taskData;
						break;
					}
				}
				unset($taskData);
			}

			// If task not found, select it
			if ($taskOnTimer === false)
			{
				$neededTasks = self::getTasks([$lastTimer['TASK_ID']]);
				if (!empty($neededTasks))
				{
					$neededTask = $neededTasks[0];
					if (isset($neededTask) && (int)$neededTask['RESPONSIBLE_ID'] === (int)self::$USER_ID)
					{
						$taskOnTimer = $neededTask;
					}
				}
			}
		}
	}
	else
	{
		$lastTimer = false;
		$taskOnTimer = false;
	}

	$pathTemplate = BitrixTasksIntegrationSocialnetworkUITask::getActionPath();
	$taskAddUrl = BitrixTasksUITask::makeActionUrl($pathTemplate, 0, 'edit', self::$USER_ID);
	$taskAddUrl .= '?'.http_build_query(['ADD_TO_TIMEMAN' => 'Y']);

	$arResult = [
		'DATA' => [
			'TASKS_ENABLED' => true,
			'TASKS' => $tasks,
			'TASKS_COUNT' => $tasksCount,
			'TASKS_TIMER' => $lastTimer,
			'TASK_ON_TIMER' => $taskOnTimer,
			'MANDATORY_UFS' => (CTasksRarelyTools::isMandatoryUserFieldExists() ? 'Y' : 'N'),
			'TASK_ADD_URL' => $taskAddUrl,
		],
		'STYLES' => ['/bitrix/js/tasks/css/tasks.css'],
		'SCRIPTS' => ['CJSTask', 'taskQuickPopups', 'tasks_planner_handler'],
	];

	return ($arResult);
}