• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/provider/templateprovider.php
  • Класс: BitrixTasksProviderTemplateProvider
  • Вызов: TemplateProvider::makeOrder
private function makeOrder(): self
{
	$arSqlOrder = [];
	foreach ($this->arOrder as $by => $order)
	{
		$by = strtolower($by);
		$order = strtolower($order);
		if ($order != "asc")
			$order = "desc";

		if ($by == "task")
			$arSqlOrder[] = " TT ".$order." ";
		elseif ($by == "id")
			$arSqlOrder[] = " TT.ID ".$order." ";
		elseif ($by == "group_id")
			$arSqlOrder[] = " TT.GROUP_ID ".$order." ";
		elseif ($by == "title")
			$arSqlOrder[] = " TT.TITLE ".$order." ";
		elseif ($by == "deadline")
			$arSqlOrder[] = " TT.DEADLINE_AFTER ".$order." ";
		elseif ($by == "depends_on")
			$arSqlOrder[] = " TT.DEPENDS_ON ".$order." ";
		elseif ($by == "rand")
			$arSqlOrder[] = ' RAND(' . rand(0, 1000000) . ') ';
		elseif ($by === 'creator_last_name')
			$arSqlOrder[] = " CU.LAST_NAME ".$order." ";
		elseif ($by === 'responsible_last_name')
			$arSqlOrder[] = " RU.LAST_NAME ".$order." ";
		elseif ($by === 'tparam_type')
			$arSqlOrder[] = " TT.TPARAM_TYPE ".$order." ";
		elseif ($by === 'template_children_count')
			$arSqlOrder[] = " TEMPLATE_CHILDREN_COUNT ".$order." ";
		elseif ($by === 'base_template_id')
			$arSqlOrder[] = " BASE_TEMPLATE_ID ".$order." ";
		elseif(substr($by, 0, 3) === 'uf_')
		{
			if ($s = $this->obUserFieldsSql->GetOrder($by))
			{
				$arSqlOrder[$by] = " ".$s." ".$order." ";
			}
		}
		else
		{
			$arSqlOrder[] = " TT.ID ".$order." ";
			$by = "id";
		}

		if (
			($by !== 'rand')
			&& ( ! in_array(strtoupper($by), $this->arSelect) )
		)
		{
			$this->arSelect[] = strtoupper($by);
		}
	}

	DelDuplicateSort($arSqlOrder);
	$arSqlOrderCnt = count($arSqlOrder);
	for ($i = 0; $i < $arSqlOrderCnt; $i++)
	{
		if ($i == 0)
		{
			$this->strSqlOrder = " ORDER BY ";
		}
		else
		{
			$this->strSqlOrder .= ",";
		}

		$this->strSqlOrder .= $arSqlOrder[$i];
	}

	return $this;
}