- Модуль: statistic
- Путь к файлу: ~/bitrix/modules/statistic/classes/mysql/traffic.php
- Класс: CTraffic
- Вызов: CTraffic::GetPhraseList
static function GetPhraseList($s_by = 's_today', $s_order = 'desc', $arFilter = [], &$is_filtered = false, $limit = 10)
{
$err_mess = "File: ".__FILE__."
Line: ";
$DB = CDatabase::GetModuleConnection('statistic');
$strSqlSearch = "";
$site_id = $arFilter["SITE_ID"];
if ($site_id <> '' && $site_id!="NOT_REF")
{
$is_filtered = true;
$strSqlSearch = " and SITE_ID = '".$DB->ForSql($site_id, 2)."' ";
}
$date1 = $arFilter["DATE1"];
$date2 = $arFilter["DATE2"];
$date_from = MkDateTime(ConvertDateTime($date1,"D.M.Y"),"d.m.Y");
$date_to = MkDateTime(ConvertDateTime($date2,"D.M.Y")." 23:59","d.m.Y H:i");
if ($date1 <> '')
{
$date_filtered = $is_filtered = true;
if ($date2 <> '')
$strSqlPeriod = " sum(if(DATE_HITFROM_UNIXTIME('$date_to'),0,1)))";
else
$strSqlPeriod = " sum(if(DATE_HIT '')
{
$date_filtered = $is_filtered = true;
$strSqlPeriod = " sum(if(DATE_HIT>FROM_UNIXTIME('$date_to'),0,1))";
}
else
{
$date_filtered = false;
$strSqlPeriod = "";
}
if ($s_by == "s_phrase")
$strSqlOrder = " ORDER BY PHRASE ";
elseif ($s_by == "s_today")
$strSqlOrder = " ORDER BY TODAY_PHRASES ";
elseif ($s_by == "s_yesterday")
$strSqlOrder = " ORDER BY YESTERDAY_PHRASES ";
elseif ($s_by == "s_bef_yesterday")
$strSqlOrder = " ORDER BY B_YESTERDAY_PHRASES ";
elseif ($s_by == "s_total")
$strSqlOrder = " ORDER BY TOTAL_PHRASES ";
elseif($s_by == "s_period" && $date_filtered)
$strSqlOrder = " ORDER BY PERIOD_PHRASES ";
else
{
$strSqlOrder = " ORDER BY TODAY_PHRASES desc, YESTERDAY_PHRASES desc, B_YESTERDAY_PHRASES desc, TOTAL_PHRASES ";
}
if ($s_order != "asc")
{
$strSqlOrder .= " desc ";
}
$strSql = "
SELECT
PHRASE,
count('x') TOTAL_PHRASES,
sum(if(to_days(curdate())-to_days(DATE_HIT)=0,1,0)) TODAY_PHRASES,
sum(if(to_days(curdate())-to_days(DATE_HIT)=1,1,0)) YESTERDAY_PHRASES,
sum(if(to_days(curdate())-to_days(DATE_HIT)=2,1,0)) B_YESTERDAY_PHRASES
".
($date_filtered ? ','.$strSqlPeriod.' PERIOD_PHRASES ' : '')
."
FROM
b_stat_phrase_list
WHERE
1=1
".$strSqlSearch."
GROUP BY
PHRASE
".$strSqlOrder."
";
if(intval($limit)>0)
{
$strSql .= " LIMIT ".intval($limit);
}
return $DB->Query($strSql, false, $err_mess.__LINE__);
}