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