• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblock.php
  • Класс: CAllIBlock
  • Вызов: CAllIBlock::_Order
static function _Order($by, $order, $default_order, $nullable = true)
{
	static $arOrder = array(
		"nulls,asc"  => array(true,  "asc" ),
		"asc,nulls"  => array(false, "asc" ),
		"nulls,desc" => array(true,  "desc"),
		"desc,nulls" => array(false, "desc"),
		"asc"        => array(true,  "asc" ),
		"desc"       => array(false, "desc"),
	);
	if (!is_string($order))
	{
		$order = 'desc,nulls';
	}
	$order = mb_strtolower(trim($order));
	$default_order = mb_strtolower(trim($default_order));
	if (isset($arOrder[$order]))
		$o = $arOrder[$order];
	elseif(isset($arOrder[$default_order]))
		$o = $arOrder[$default_order];
	else
		$o = $arOrder["desc,nulls"];

	//There is no need to "reverse" nulls order when
	//column can not contain nulls
	if(!$nullable)
	{
		$o[0] = ($o[1] == "asc");
	}

	return $o;
}