- Модуль: 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;
}