- Модуль: statistic
- Путь к файлу: ~/bitrix/modules/statistic/classes/mysql/traffic.php
- Класс: CTraffic
- Вызов: CTraffic::GetRefererList
static function GetRefererList($by = 'ref_today', $order = 'desc', $arFilter = [], &$is_filtered = false, $limit = 10)
{
$err_mess = "File: ".__FILE__."
Line: ";
$DB = CDatabase::GetModuleConnection('statistic');
$site_id = $arFilter["SITE_ID"];
if ($site_id <> '' && $site_id!="NOT_REF")
{
$is_filtered = true;
$strSqlSearch = " and SITE_ID = '".$DB->ForSql($site_id, 2)."' ";
}
else
{
$is_filtered = false;
$strSqlSearch = "";
}
$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 ($by == "ref_server")
$strSqlOrder = " ORDER BY SITE_NAME ";
elseif($by == "ref_today")
$strSqlOrder = " ORDER BY TODAY_REFERERS ";
elseif($by == "ref_yesterday")
$strSqlOrder = " ORDER BY YESTERDAY_REFERERS ";
elseif($by == "ref_bef_yesterday")
$strSqlOrder = " ORDER BY B_YESTERDAY_REFERERS ";
elseif($by == "ref_total")
$strSqlOrder = " ORDER BY TOTAL_REFERERS ";
elseif($by == "ref_period" && $date_filtered)
$strSqlOrder = " ORDER BY PERIOD_REFERERS";
else
{
$strSqlOrder = "ORDER BY TODAY_REFERERS desc, YESTERDAY_REFERERS desc, B_YESTERDAY_REFERERS desc, TOTAL_REFERERS ";
}
if ($order!="asc")
{
$strSqlOrder .= " desc ";
}
$strSql = "
SELECT
SITE_NAME,
count('x') TOTAL_REFERERS,
sum(if(to_days(curdate())-to_days(DATE_HIT)=0,1,0)) TODAY_REFERERS,
sum(if(to_days(curdate())-to_days(DATE_HIT)=1,1,0)) YESTERDAY_REFERERS,
sum(if(to_days(curdate())-to_days(DATE_HIT)=2,1,0)) B_YESTERDAY_REFERERS
".
($date_filtered ? ','.$strSqlPeriod.' as PERIOD_REFERERS ' : '')
."
FROM
b_stat_referer_list
WHERE
1=1
".$strSqlSearch."
GROUP BY
SITE_NAME
".$strSqlOrder."
";
if(intval($limit)>0)
{
$strSql .= " LIMIT ".intval($limit);
}
return $DB->Query($strSql, false, $err_mess.__LINE__);
}