• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_status.php
  • Класс: \CCrmStatus
  • Вызов: CCrmStatus::GetList
static function GetList($arSort=array(), $arFilter=Array())
{
	$sqlHelper = \Bitrix\Main\Application::getConnection()->getSqlHelper();

	global $DB;
	$arSqlSearch = Array();
	if (is_array($arFilter))
	{
		$filter_keys = array_keys($arFilter);
		for ($i=0, $ic=count($filter_keys); $i<$ic; $i++)
		{
			$val = $arFilter[$filter_keys[$i]];
			if ((string)$val == '' || (string)$val=='NOT_REF') continue;
			switch(strtoupper($filter_keys[$i]))
			{
				case 'ID':
					$arSqlSearch[] = "CS.ID = '".$DB->ForSql($val)."'";
					break;
				case 'ENTITY_ID':
					$arSqlSearch[] = "CS.ENTITY_ID = '".$DB->ForSql($val)."'";
					break;
				case 'STATUS_ID':
					$arSqlSearch[] = "CS.STATUS_ID = '".$DB->ForSql($val)."'";
					break;
				case 'NAME':
					$arSqlSearch[] = GetFilterQuery('CS.NAME', $val);
					break;
				case 'SORT':
					$arSqlSearch[] = "CS.SORT = '".$DB->ForSql($val)."'";
					break;
				case 'SYSTEM':
					$arSqlSearch[] = "CS.".$sqlHelper->quote('SYSTEM')."='".(($val == 'Y')? 'Y' : 'N')."'";
					break;
				case 'CATEGORY_ID':
					$arSqlSearch[] = "CS.CATEGORY_ID = '".((int) $val)."'";
					break;
				case 'SEMANTICS':
					$arSqlSearch[] = "CS.SEMANTICS = '".$DB->ForSql($val)."'";
					break;
			}
		}
	}

	$sOrder = '';
	foreach($arSort as $key=>$val)
	{
		$ord = (mb_strtoupper($val) <> 'ASC'? 'DESC':'ASC');
		switch(mb_strtoupper($key))
		{
			case 'ID':
				$sOrder .= ', CS.ID '.$ord;
				break;
			case 'ENTITY_ID':
				$sOrder .= ', CS.ENTITY_ID '.$ord;
				break;
			case 'STATUS_ID':
				$sOrder .= ', CS.STATUS_ID '.$ord;
				break;
			case 'NAME':
				$sOrder .= ', CS.NAME '.$ord;
				break;
			case 'SORT':
				$sOrder .= ', CS.SORT '.$ord;
				break;
			case 'SYSTEM':
				$sOrder .= ", CS.".$sqlHelper->quote('SYSTEM')." ".$ord;
				break;
			case 'CATEGORY_ID':
				$sOrder .= ', CS.CATEGORY_ID '.$ord;
				break;
			case 'SEMANTICS':
				$sOrder .= ', CS.SEMANTICS '.$ord;
				break;
		}
	}

	if ($sOrder == '')
		$sOrder = 'CS.ID DESC';

	$strSqlOrder = ' ORDER BY '.TrimEx($sOrder,',');
	$strSqlSearch = GetFilterSqlSearch($arSqlSearch);

	$strSql = "SELECT CS.* FROM b_crm_status CS WHERE {$strSqlSearch} {$strSqlOrder}";
	$res = $DB->Query($strSql, false, 'FILE: '.__FILE__.'
LINE: '.__LINE__); return $res; }