• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/manager/task.php
  • Класс: BitrixTasksManagerTask
  • Вызов: Task::injectDayPlanFields
static function injectDayPlanFields($userId, array $parameters, array &$data, array &$can)
{
	if (empty($data))
	{
		return;
	}

	$extranetSite = Extranet::isExtranetSite();
	$extranetUser = ExtranetUser::isExtranet($userId);

	// no dayplan for extranet site, even if intranet user goes to extranet site
	$plan = array();
	if (!$extranetSite && !$extranetUser)
	{
		$plan = CTaskPlannerMaintance::getCurrentTasksList();

		if (is_array($plan) && !empty($plan))
		{
			$plan = array_flip($plan);
		}
	}

	foreach ($data as &$task)
	{
		$inDayPlan = false;
		$canAddToPlan = false;

		if ($task[ "RESPONSIBLE_ID" ] == $userId || (is_array($task[ 'ACCOMPLICES' ]) && in_array($userId, $task[ 'ACCOMPLICES' ])))
		{
			$canAddToPlan = true;

			// if in day plan already
			if (isset($plan[ $task[ 'ID' ] ]))
			{
				$inDayPlan = true;
				$canAddToPlan = false;
			}
		}

		$task[ 'IN_DAY_PLAN' ] = $inDayPlan;
		$task[ 'TIME_ELAPSED' ] = intval($task[ 'TIME_SPENT_IN_LOGS' ]);
		$task[ 'TIMER_IS_RUNNING_FOR_CURRENT_USER' ] = false;

		$can[ $task[ 'ID' ] ][ 'ACTION' ][ 'ADD_TO_DAY_PLAN' ] = $can[ $task[ 'ID' ] ][ 'ACTION' ][ 'DAYPLAN.ADD' ] =
			!$extranetUser && $canAddToPlan && Timeman::canUse();
	}
	unset($task);

	// current timer
	$runningTaskData = CTaskTimerManager::getInstance($userId)->getRunningTask(false);
	foreach ($data as $k => &$task)
	{
		if (
			$runningTaskData
			&& (int)$task['ID'] === (int)$runningTaskData['TASK_ID']
			&& $task['ALLOW_TIME_TRACKING'] === 'Y'
		)
		{
			$task[ 'TIME_ELAPSED' ] += (time() - $runningTaskData[ 'TIMER_STARTED_AT' ]); // elapsed time is a sum of times in task log plus time of the current timer
			$task[ 'TIME_ELAPSED' ] = (string)$task[ 'TIME_ELAPSED' ]; // for consistency
			$task[ 'TIMER_IS_RUNNING_FOR_CURRENT_USER' ] = true;
		}
	}
	unset($task);
}