• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskmembers.php
  • Класс: handles
  • Вызов: handles::GetList
static function GetList($arOrder, $arFilter)
{
	global $DB;

	$arSqlSearch = array_filter(static::GetFilter($arFilter));

	$strSqlSearch = "";
	$arSqlSearchCnt = count($arSqlSearch);
	for ($i = 0; $i < $arSqlSearchCnt; $i++)
		if ($arSqlSearch[$i] <> '')
			$strSqlSearch .= " AND ".$arSqlSearch[$i]." ";

	$strSql = "
		SELECT
			TM.*
		FROM
			b_tasks_member TM
		".(sizeof($arSqlSearch) ? "WHERE ".implode(" AND ", $arSqlSearch) : "")."
	";

	if (!is_array($arOrder))
		$arOrder = Array();

	$arSqlOrder = [];
	foreach ($arOrder as $by => $order)
	{
		$by = mb_strtolower($by);
		$order = mb_strtolower($order);

		if ($order != "asc")
			$order = "desc";

		if (($by === 'task') || ($by === 'task_id'))
			$arSqlOrder[] = " TM.TASK_ID ".$order." ";
		elseif (($by === 'user') || ($by === 'user_id'))
			$arSqlOrder[] = " TM.USER_ID ".$order." ";
		elseif ($by === 'type')
			$arSqlOrder[] = " TM.TYPE ".$order." ";
		elseif ($by == "rand")
			$arSqlOrder[] = CTasksTools::getRandFunction();
	}

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

		$strSqlOrder .= $arSqlOrder[$i];
	}

	$strSql .= $strSqlOrder;

	return $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); }