- Модуль: statistic
- Путь к файлу: ~/bitrix/modules/statistic/classes/mysql/searcher.php
- Класс: CSearcher
- Вызов: CSearcher::GetDynamicList
static function GetDynamicList($SEARCHER_ID, $by = 's_date', $order = 'desc', &$arMaxMin = [], $arFilter = [])
{
$err_mess = "File: ".__FILE__."
Line: ";
$DB = CDatabase::GetModuleConnection('statistic');
$SEARCHER_ID = intval($SEARCHER_ID);
$arSqlSearch = Array();
$strSqlSearch = "";
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;
}
$key = strtoupper($key);
switch($key)
{
case "DATE1":
if (CheckDateTime($val))
$arSqlSearch[] = "D.DATE_STAT>=".$DB->CharToDateFunction($val, "SHORT");
break;
case "DATE2":
if (CheckDateTime($val))
$arSqlSearch[] = "D.DATE_STAT<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
break;
}
}
}
foreach($arSqlSearch as $sqlWhere)
$strSqlSearch .= " and (".$sqlWhere.") ";
if ($by == "s_date") $strSqlOrder = "ORDER BY D.DATE_STAT";
else
{
$strSqlOrder = "ORDER BY D.DATE_STAT";
}
if ($order!="asc")
{
$strSqlOrder .= " desc ";
}
$strSql = "
SELECT
".$DB->DateToCharFunction("D.DATE_STAT","SHORT")." DATE_STAT,
DAYOFMONTH(D.DATE_STAT) DAY,
MONTH(D.DATE_STAT) MONTH,
YEAR(D.DATE_STAT) YEAR,
D.TOTAL_HITS
FROM
b_stat_searcher_day D
WHERE
D.SEARCHER_ID = $SEARCHER_ID
$strSqlSearch
$strSqlOrder
";
$res = $DB->Query($strSql, false, $err_mess.__LINE__);
$strSql = "
SELECT
max(D.DATE_STAT) DATE_LAST,
min(D.DATE_STAT) DATE_FIRST,
DAYOFMONTH(max(D.DATE_STAT)) MAX_DAY,
MONTH(max(D.DATE_STAT)) MAX_MONTH,
YEAR(max(D.DATE_STAT)) MAX_YEAR,
DAYOFMONTH(min(D.DATE_STAT)) MIN_DAY,
MONTH(min(D.DATE_STAT)) MIN_MONTH,
YEAR(min(D.DATE_STAT)) MIN_YEAR
FROM
b_stat_searcher_day D
WHERE
D.SEARCHER_ID = $SEARCHER_ID
$strSqlSearch
";
$a = $DB->Query($strSql, false, $err_mess.__LINE__);
$ar = $a->Fetch();
$arMaxMin["MAX_DAY"] = $ar["MAX_DAY"];
$arMaxMin["MAX_MONTH"] = $ar["MAX_MONTH"];
$arMaxMin["MAX_YEAR"] = $ar["MAX_YEAR"];
$arMaxMin["MIN_DAY"] = $ar["MIN_DAY"];
$arMaxMin["MIN_MONTH"] = $ar["MIN_MONTH"];
$arMaxMin["MIN_YEAR"] = $ar["MIN_YEAR"];
return $res;
}