• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/admin_notify.php
  • Класс: CAdminNotify
  • Вызов: CAdminNotify::GetList
static function GetList($arSort = [], $arFilter = [])
{
	global $DB;

	$arSqlSearch = [];

	if (!is_array($arFilter))
	{
		$arFilter = [];
	}
	if (!isset($arFilter['LID']))
	{
		$arFilter['LID'] = LANGUAGE_ID;
	}
	if (!isset($arFilter['PUBLIC_SECTION']))
	{
		$arFilter['PUBLIC_SECTION'] = 'N';
	}

	$strFrom = '';
	$strSelect = "AN.*";

	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 == '' || $val == 'NOT_REF')
			{
				continue;
			}
			switch (mb_strtoupper($filter_keys[$i]))
			{
				case 'ID':
					$arSqlSearch[] = GetFilterQuery('AN.ID', $val, 'N');
					break;
				case 'MODULE_ID':
					$arSqlSearch[] = GetFilterQuery('AN.MODULE_ID', $val);
					break;
				case 'TAG':
					$arSqlSearch[] = GetFilterQuery('AN.TAG', $val);
					break;
				case 'MESSAGE':
					$arSqlSearch[] = GetFilterQuery('AN.MESSAGE', $val);
					break;
				case 'ENABLE_CLOSE':
					$arSqlSearch[] = ($val == 'Y') ? "AN.ENABLE_CLOSE='Y'" : "AN.ENABLE_CLOSE='N'";
					break;
				case 'LID':
					$strSelect .= ", ANL.MESSAGE as MESSAGE_LANG";
					$strFrom = 'LEFT JOIN b_admin_notify_lang ANL ON (AN.ID = ANL.NOTIFY_ID AND ANL.LID = '' . $DB->ForSQL($val) . '')';
					break;
				case 'PUBLIC_SECTION':
					$arSqlSearch[] = ($val == 'Y') ? "AN.PUBLIC_SECTION='Y'" : "AN.PUBLIC_SECTION='N'";
			}
		}
	}

	$sOrder = '';
	foreach ($arSort as $key => $val)
	{
		$ord = (strtoupper($val) <> 'ASC' ? 'DESC' : 'ASC');
		switch (strtoupper($key))
		{
			case 'ID':
				$sOrder .= ', AN.ID ' . $ord;
				break;
			case 'MODULE_ID':
				$sOrder .= ', AN.MODULE_ID ' . $ord;
				break;
			case 'ENABLE_CLOSE':
				$sOrder .= ', AN.ENABLE_CLOSE ' . $ord;
				break;
		}
	}

	if ($sOrder == '')
	{
		$sOrder = 'AN.ID DESC';
	}

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

	$strSql = "SELECT " . $strSelect . " FROM b_admin_notify AN " . $strFrom . " WHERE " . $strSqlSearch . " " . $strSqlOrder;
	$res = $DB->Query($strSql);

	return $res;
}