• Модуль: statistic
  • Путь к файлу: ~/bitrix/modules/statistic/classes/mysql/traffic.php
  • Класс: CTraffic
  • Вызов: CTraffic::GetDailyList
static function GetDailyList($by = 's_date', $order = 'desc', &$arMaxMin = [], $arFilter = [], $is_filtered = null, $get_maxmin = "Y")
{
	$err_mess = "File: ".__FILE__."
Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $arSqlSearch = Array(); $strSqlSearch = ""; $site_filtered = false; 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("D.ID",$val,$match); break; 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; case "HITS_1": $arSqlSearch[] = "D.HITS>='".intval($val)."'"; break; case "HITS_2": $arSqlSearch[] = "D.HITS<='".intval($val)."'"; break; case "SESSIONS_1": $arSqlSearch[] = "D.SESSIONS>='".intval($val)."'"; break; case "SESSIONS_2": $arSqlSearch[] = "D.SESSIONS<='".intval($val)."'"; break; case "NEW_GUESTS_1": $arSqlSearch[] = "D.NEW_GUESTS>='".intval($val)."'"; break; case "NEW_GUESTS_2": $arSqlSearch[] = "D.NEW_GUESTS<='".intval($val)."'"; break; case "FAVORITES_1": $arSqlSearch[] = "D.FAVORITES>='".intval($val)."'"; break; case "FAVORITES_2": $arSqlSearch[] = "D.FAVORITES<='".intval($val)."'"; break; case "GUESTS_1": $arSqlSearch[] = "D.GUESTS>='".intval($val)."'"; break; case "GUESTS_2": $arSqlSearch[] = "D.GUESTS<='".intval($val)."'"; break; case "HOSTS_1": $arSqlSearch[] = "D.C_HOSTS>='".intval($val)."'"; break; case "HOSTS_2": $arSqlSearch[] = "D.C_HOSTS<='".intval($val)."'"; break; case "EVENTS_1": $arSqlSearch[] = "D.C_EVENTS>='".intval($val)."'"; break; case "EVENTS_2": $arSqlSearch[] = "D.C_EVENTS<='".intval($val)."'"; break; case "SITE_ID": $site_filtered = true; if (is_array($val)) $val = implode(" | ", $val); $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("D.SITE_ID", $val, $match); break; } } } foreach($arSqlSearch as $sqlWhere) $strSqlSearch .= " and (".$sqlWhere.") "; if ($by == "s_id") $strSqlOrder = "ORDER BY D.ID"; elseif ($by == "s_date") $strSqlOrder = "ORDER BY D.DATE_STAT"; elseif ($by == "s_hits") $strSqlOrder = "ORDER BY D.HITS"; elseif ($by == "s_hosts") $strSqlOrder = "ORDER BY D.C_HOSTS"; elseif ($by == "s_sessions") $strSqlOrder = "ORDER BY D.SESSIONS"; elseif ($by == "s_events") $strSqlOrder = "ORDER BY D.C_EVENTS"; elseif ($by == "s_guests") $strSqlOrder = "ORDER BY D.GUESTS"; elseif ($by == "s_new_guests") $strSqlOrder = "ORDER BY D.NEW_GUESTS"; elseif ($by == "s_favorites") $strSqlOrder = "ORDER BY D.FAVORITES"; else { $strSqlOrder = "ORDER BY D.DATE_STAT"; } if ($order != "asc") { $strSqlOrder .= " desc "; } $table_name = ($site_filtered) ? "b_stat_day_site" : "b_stat_day"; $strSql = " SELECT D.ID, D.HITS, D.C_HOSTS, D.SESSIONS, D.C_EVENTS, D.GUESTS, D.NEW_GUESTS, D.FAVORITES, D.AM_AVERAGE_TIME, D.AM_1,D.AM_1_3, D.AM_3_6, D.AM_6_9, D.AM_9_12, D.AM_12_15, D.AM_15_18, D.AM_18_21, D.AM_21_24, D.AM_24, D.AH_AVERAGE_HITS, D.AH_1, D.AH_2_5, D.AH_6_9, D.AH_10_13, D.AH_14_17, D.AH_18_21, D.AH_22_25, D.AH_26_29, D.AH_30_33, D.AH_34, ".$DB->DateToCharFunction("D.DATE_STAT","SHORT")." DATE_STAT, DAYOFMONTH(D.DATE_STAT) DAY, MONTH(D.DATE_STAT) MONTH, YEAR(D.DATE_STAT) YEAR, WEEKDAY(D.DATE_STAT) WDAY FROM ".$table_name." D WHERE 1=1 ".$strSqlSearch." $strSqlOrder "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); if ($get_maxmin=="Y") { $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 ".$table_name." D WHERE 1=1 ".$strSqlSearch." "; $a = $DB->Query($strSql, false, $err_mess.__LINE__); $ar = $a->Fetch(); if (!is_array($arMaxMin)) $arMaxMin = array(); $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; }