• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskliststate.php
  • Класс: CTaskListState
  • Вызов: CTaskListState::getState
public function getState()
{
	$arRoles = self::getKnownRoles();
	$arViews = $this->getAllowedViewModes();
	$arSubmodes = self::getKnownSubmodes();
	$arTaskCategories = $this->getAllowedTaskCategories();

	$selectedSectionId = $this->getSection();
	$selectedRoleId = $this->getUserRole();
	$selectedViewId = $this->getViewMode();
	$taskCategoryId = $this->getTaskCategory();

	$filterCtrl = CTaskFilterCtrl::getInstance($this->userId);

	$arViewState = array(
		'SECTION_SELECTED' => array(
			'ID'       => $selectedSectionId,
			'CODENAME' => self::resolveConstantCodename($selectedSectionId)
		),
		'ROLES'         => array(),
		'ROLE_SELECTED' => array(
			'ID'       => $selectedRoleId,
			'CODENAME' => self::resolveConstantCodename($selectedRoleId)
		),
		'VIEWS'         => array(),
		'VIEW_SELECTED' => array(
			'ID'       => $selectedViewId,
			'CODENAME' => self::resolveConstantCodename($selectedViewId, self::VIEW_MODE_LIST)
		),
		'VIEW_PARAMETERS' => $this->getViewParameters(),
		'TASK_CATEGORIES' => array(),
		'TASK_CATEGORY_SELECTED' => array(
			'ID'       => $taskCategoryId,
			'CODENAME' => self::resolveConstantCodename($taskCategoryId)
		),
		'SPECIAL_PRESETS' => array(),
		'PRESET_SELECTED' => array(
			'ID'       => $filterCtrl->getSelectedFilterPresetId()
		),
		'SPECIAL_PRESET_SELECTED' => array(
		),
		'SUBMODES'      => array()
	);

	foreach ($arRoles as $roleId)
	{
		$codeName = self::resolveConstantCodename($roleId);
		$arViewState['ROLES'][$codeName] = array(
			'ID'       => $roleId,
			'SELECTED' => (($selectedRoleId === $roleId) ? 'Y' : 'N'),
			'TITLE'    => self::resolveRoleName($roleId),
			'TITLE_ALT' => self::resolveRoleName($roleId, $bAltName = true)
		);
	}

	foreach ($arViews as $viewId)
	{
		$codeName = self::resolveConstantCodename($viewId);
		$arViewState['VIEWS'][$codeName] = array(
			'ID'       => $viewId,
			'SELECTED' => (($selectedViewId === $viewId) ? 'Y' : 'N'),
			'TITLE'    => self::resolveViewName($viewId),
			'SHORT_TITLE' => self::resolveViewName($viewId, $shortName = true)
		);
	}

	foreach ($arTaskCategories as $categoryId)
	{
		$codeName = self::resolveConstantCodename($categoryId);
		$arViewState['TASK_CATEGORIES'][$codeName] = array(
			'ID'       => $categoryId,
			'SELECTED' => (($taskCategoryId === $categoryId) ? 'Y' : 'N'),
			'TITLE'    => self::resolveTaskCategoryName($categoryId)
		);
	}

	foreach ($arSubmodes as $submodeId)
	{
		$codeName = self::resolveConstantCodename($submodeId);
		$isSubmodeSelected = $this->isSubmode($submodeId);

		$arViewState['SUBMODES'][$codeName] = array(
			'ID'       => $submodeId,
			'SELECTED' => ($isSubmodeSelected ? 'Y' : 'N'),
			'TITLE'    => self::resolveSubmodeName($submodeId)
		);
	}

	$selectedPreset = $filterCtrl->getSelectedFilterPresetId();

	foreach($filterCtrl->listFilterSpecialPresets() as $id => $preset)
	{
		$preset['ID'] = $id;
		$arViewState['SPECIAL_PRESETS'][$id] = array(
			'ID' => $id,
			'TITLE' => $preset['Name'],
			'SELECTED' => $selectedPreset == $id ? 'Y' : 'N',
			'CODE' => $preset['Code']
		);

		if($selectedPreset == $id)
		{
			$arViewState['SPECIAL_PRESET_SELECTED'] = array(
				'ID' => $id,
				'CODENAME' => $preset['Code']
			);
		}
	}

	return ($arViewState);
}