• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/provider/taskquery.php
  • Класс: BitrixTasksProviderTaskQuery
  • Вызов: TaskQuery::prepareOrder
private function prepareOrder($order): array
{
	if (is_null($order))
	{
		return [];
	}
	if (
		is_string($order)
	)
	{
		$result = [
			$order => self::SORT_ASC,
		];

		return $result;
	}

	if (!is_array($order))
	{
		throw new InvalidOrderException();
	}

	$result = [];
	foreach ($order as $column => $sort)
	{
		if (is_integer($column))
		{
			$result[$sort] = self::SORT_ASC;
			continue;
		}

		if (is_array($sort))
		{
			$result = array_merge($result, $this->prepareOrder($sort));
			continue;
		}

		$sort = strtoupper($sort);
		if ($sort === 'ASC,NULLS')
		{
			$sort = self::SORT_ASC;
		}
		if ($sort === 'DESC,NULLS')
		{
			$sort = self::SORT_DESC;
		}
		if (!in_array($sort, [self::SORT_ASC, self::SORT_DESC]))
		{
			$sort = self::SORT_DESC;
		}

		$result[$column] = $sort;
	}

	return $result;
}