• Модуль: statistic
  • Путь к файлу: ~/bitrix/modules/statistic/classes/mysql/stoplist.php
  • Класс: CStoplist
  • Вызов: CStoplist::GetList
static function GetList($by = 's_id', $order = 'desc', $arFilter = [])
{
	$err_mess = "File: ".__FILE__."
Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $arSqlSearch = Array(); if (is_array($arFilter)) { foreach ($arFilter as $key => $val) { if(is_array($val)) { if(count($val) <= 0) continue; } else { if( ((string)$val == '') || ($val === "NOT_REF") ) continue; } $match_value_set = array_key_exists($key."_EXACT_MATCH", $arFilter); $key = strtoupper($key); switch($key) { case "ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("S.ID",$val,$match); break; case "DATE_START_1": if (CheckDateTime($val)) $arSqlSearch[] = "S.DATE_START >= ".$DB->CharToDateFunction($val, "SHORT"); break; case "DATE_START_2": if (CheckDateTime($val)) $arSqlSearch[] = "S.DATE_START < ".CStatistics::DBDateAdd($DB->CharToDateFunction($val, "SHORT"), 1); break; case "DATE_END_1": if (CheckDateTime($val)) $arSqlSearch[] = "S.DATE_END >= ".$DB->CharToDateFunction($val, "SHORT"); break; case "DATE_END_2": if (CheckDateTime($val)) $arSqlSearch[] = "S.DATE_END < ".CStatistics::DBDateAdd($DB->CharToDateFunction($val, "SHORT"), 1); break; case "ACTIVE": case "SAVE_STATISTIC": $arSqlSearch[] = ($val=="Y") ? "S.".$key."='Y'" : "S.".$key."='N'"; break; case "IP_1": case "IP_2": case "IP_3": case "IP_4": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("S.".$key,$val,$match); break; case "URL_FROM": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("S.URL_FROM",$val,$match,array("/","\",".","?","#",":")); break; case "USER_AGENT": case "MESSAGE": case "COMMENTS": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("S.".$key, $val, $match); break; case "URL_TO": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("S.URL_TO",$val,$match,array("/","\",".","?","#",":")); break; case "URL_REDIRECT": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("S.URL_REDIRECT",$val,$match,array("/","\",".","?","#",":")); break; case "SITE_ID": if (is_array($val)) $val = implode(" | ", $val); $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("S.SITE_ID", $val, $match); break; } } } if ($order!="asc") $order = "desc"; if ($by == "s_id") $strSqlOrder = "ORDER BY S.ID $order"; elseif ($by == "s_date_start") $strSqlOrder = "ORDER BY S.DATE_START $order"; elseif ($by == "s_site_id") $strSqlOrder = "ORDER BY S.SITE_ID $order"; elseif ($by == "s_date_end") $strSqlOrder = "ORDER BY S.DATE_END $order"; elseif ($by == "s_active") $strSqlOrder = "ORDER BY S.ACTIVE $order"; elseif ($by == "s_save_statistic") $strSqlOrder = "ORDER BY S.SAVE_STATISTIC $order"; elseif ($by == "s_ip") $strSqlOrder = "ORDER BY S.IP_1 $order, S.IP_2 $order, S.IP_3 $order, S.IP_4 $order"; elseif ($by == "s_mask") $strSqlOrder = "ORDER BY S.MASK_1 $order, S.MASK_2 $order, S.MASK_3 $order, S.MASK_4 $order"; elseif ($by == "s_url_to") $strSqlOrder = "ORDER BY S.URL_TO $order"; elseif ($by == "s_url_from") $strSqlOrder = "ORDER BY S.URL_FROM $order"; else { $strSqlOrder = "ORDER BY S.ID $order"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSql = " SELECT S.ID, S.ACTIVE, S.SAVE_STATISTIC, S.IP_1, S.IP_2, S.IP_3, S.IP_4, S.MASK_1, S.MASK_2, S.MASK_3, S.MASK_4, S.USER_AGENT, S.USER_AGENT_IS_NULL, S.URL_TO, S.URL_FROM, S.MESSAGE, S.MESSAGE_LID, S.URL_REDIRECT, S.COMMENTS, S.TEST, S.SITE_ID, ".$DB->DateToCharFunction("S.TIMESTAMP_X")." TIMESTAMP_X, ".$DB->DateToCharFunction("S.DATE_END")." DATE_END, ".$DB->DateToCharFunction("S.DATE_START")." DATE_START, if (( (S.DATE_START<=now() or S.DATE_START is null) and (S.DATE_END>=now() or S.DATE_END is null) and S.ACTIVE='Y'), 'green', 'red') as LAMP FROM b_stop_list S WHERE $strSqlSearch $strSqlOrder LIMIT ".intval(COption::GetOptionString('statistic','RECORDS_LIMIT'))." "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; }