- Модуль: support
- Путь к файлу: ~/bitrix/modules/support/classes/general/holidays.php
- Класс: CSupportHolidays
- Вызов: CSupportHolidays::GetList
static function GetList($arSort, $arFilter)
{
$err_mess = (self::err_mess())."
Function: GetList
Line: ";
global $DB, $USER, $APPLICATION;
$filter_keys = array_keys($arFilter);
$table = self::table;
$table_s2h = self::table_s2h;
$arSqlSearch = Array();
if(!is_array($arFilter)) $arFilter = Array();
foreach($arFilter as $key => $val)
{
if((is_array($val) && count($val) <= 0) || (!is_array($val) && ((string) $val == '' || $val === 'NOT_REF'))) continue;
$key = mb_strtoupper($key);
if (is_array($val)) $val = implode(" | ",$val);
switch($key)
{
case "ID":
$arSqlSearch[] = GetFilterQuery("H.ID", $val, "N");
break;
case "~NAME":
$arSqlSearch[] = GetFilterQuery("H.NAME", $val, "N");
break;
case "OPEN_TIME":
$arSqlSearch[] = GetFilterQuery("H.OPEN_TIME", $val, "N");
break;
case "SLA_ID":
$arSqlSearch[] = "H.ID IN (
SELECT
S2H.HOLIDAYS_ID
FROM
$table_s2h S2H
WHERE
" . GetFilterQuery("S2H.SLA_ID", $val, "N") . ")";
break;
case "PERIOD":
if(is_array($val) && isset($val["FROM"]) && intval($val["FROM"]) > 0 && isset($val["TILL"]) && intval($val["TILL"]) > 0)
{
$arSqlSearch[] = "H.DATE_FROM <= " . $DB->CharToDateFunction(GetTime($val["TILL"], "FULL")) . " AND H.DATE_TILL >= " . $DB->CharToDateFunction(GetTime($val["FROM"], "FULL"));
}
break;
}
}
$strSqlSearch = GetFilterSqlSearch($arSqlSearch);
$arSort = is_array($arSort) ? $arSort : array();
if(count($arSort) > 0)
{
$ar1 = array_merge($DB->GetTableFieldsList($table), array());
$ar2 = array_keys($arSort);
$arDiff = array_diff($ar2, $ar1);
if(is_array($arDiff) && count($arDiff) > 0) foreach($arDiff as $value) unset($arSort[$value]);
}
if(count($arSort) <= 0) $arSort = array("ID" => "ASC");
$fs = "";
foreach($arSort as $by => $order)
{
if(mb_strtoupper($order) != "DESC") $order="ASC";
if($by === "DATE_TILL" || $by === "DATE_FROM")
{
$fs .= ",
" . $by . " " . $by . "_SORT";
$arSqlOrder[] = $by . "_SORT " . $order;
}
else
{
$arSqlOrder[] = $by . " " . $order;
}
}
if(is_array($arSqlOrder) && count($arSqlOrder) > 0) $strSqlOrder = " ORDER BY " . implode(",", $arSqlOrder);
$strSql = "
SELECT
H.ID,
H.NAME,
H.DESCRIPTION,
H.OPEN_TIME,
" . $DB->DateToCharFunction("H.DATE_FROM", "FULL") . " DATE_FROM,
" . $DB->DateToCharFunction("H.DATE_TILL", "FULL") . " DATE_TILL" . $fs . "
FROM
$table H
WHERE
$strSqlSearch
$strSqlOrder
";
$rs = $DB->Query($strSql, false, $err_mess.__LINE__);
return $rs;
}