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;
}