• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/grids.php
  • Класс: CGridOptions
  • Вызов: CGridOptions::GetSorting
public function GetSorting($arParams=array())
{
	if (!isset($arParams["vars"]) || !is_array($arParams["vars"]))
	{
		$arParams["vars"] = ["by" => "by", "order" => "order"];
	}
	if (!isset($arParams["sort"]) || !is_array($arParams["sort"]))
	{
		$arParams["sort"] = [];
	}

	$arResult = array(
		"sort" => $arParams["sort"],
		"vars" => $arParams["vars"],
	);

	$key = '';
	if(isset($_REQUEST[$arParams["vars"]["by"]]))
	{
		Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["sort_by"] = $_REQUEST[$arParams["vars"]["by"]];
	}
	elseif(!isset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["sort_by"]))
	{
		if(!empty($this->options["sort_by"]))
		{
			//sorting explicitly set in the view
			$key = $this->options["sort_by"];
		}
		elseif(!empty($this->options["last_sort_by"]))
		{
			//last saved user sorting
			$key = $this->options["last_sort_by"];
		}
	}
	if(isset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["sort_by"]))
		$key = Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["sort_by"];

	if($key <> '')
	{
		if(isset($_REQUEST[$arParams["vars"]["order"]]))
		{
			Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["sort_order"] = $_REQUEST[$arParams["vars"]["order"]];
		}
		elseif(!isset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["sort_order"]))
		{
			if(!empty($this->options["sort_order"]))
			{
				$arResult["sort"] = array($key => $this->options["sort_order"]);
			}
			elseif(!empty($this->options["last_sort_order"]))
			{
				$arResult["sort"] = array($key => $this->options["last_sort_order"]);
			}
			else
			{
				$arResult["sort"] = array($key => reset($arParams["sort"]));
			}
		}
		if(isset(Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["sort_order"]))
			$arResult["sort"] = array($key => Application::getInstance()->getSession()["main.interface.grid"][$this->grid_id]["sort_order"]);
	}

	return $arResult;
}