- Модуль: statistic
- Путь к файлу: ~/bitrix/modules/statistic/classes/general/adv.php
- Класс: CAllAdv
- Вызов: CAllAdv::GetAnalysisGraphArray
static function GetAnalysisGraphArray($arFilter, &$is_filtered, $DATA_TYPE="SESSION_SUMMA", &$arrLegend, &$summa, &$max)
{
$err_mess = "File: ".__FILE__."
Line: ";
$DB = CDatabase::GetModuleConnection('statistic');
$arSqlSearch = Array();
switch ($DATA_TYPE)
{
case "SESSION_SUMMA":
case "SESSION":
case "SESSION_BACK":
case "VISITOR_SUMMA":
case "VISITOR":
case "VISITOR_BACK":
case "NEW_VISITOR":
case "FAV_SUMMA":
case "FAV":
case "FAV_BACK":
case "HOST_SUMMA":
case "HOST":
case "HOST_BACK":
case "HIT_SUMMA":
case "HIT":
case "HIT_BACK":
unset($arFilter["EVENT_TYPE_ID"]);
unset($arFilter["EVENT_TYPE"]);
unset($arFilter["EVENT1"]);
unset($arFilter["EVENT2"]);
break;
}
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 "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." 23:59:59", "FULL");
break;
case "EVENT_TYPE_ID":
case "EVENT_TYPE":
if (is_array($val)) $val = implode(" | ", $val);
$match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
$arSqlSearch[] = GetFilterQuery("D.EVENT_ID",$val,$match);
break;
case "ADV_ID":
case "ADV":
if (is_array($val)) $val = implode(" | ", $val);
$match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
$arSqlSearch[] = GetFilterQuery("D.ADV_ID",$val,$match);
break;
case "REFERER1":
case "REFERER2":
$match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
$arSqlSearch[] = GetFilterQuery("A.".$key, $val, $match);
break;
case "EVENT1":
case "EVENT2":
$match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
$arSqlSearch[] = GetFilterQuery("E.".$key, $val, $match);
break;
}
}
}
$arrDays = array();
$arrLegend = array();
$arrSum = array();
$strSqlSearch = GetFilterSqlSearch($arSqlSearch);
$strSql = CAdv::GetAnalysisGraphArray_SQL($strSqlSearch, $DATA_TYPE);
$rsD = $DB->Query($strSql, false, $err_mess.__LINE__);
while ($arD = $rsD->Fetch())
{
switch($DATA_TYPE)
{
default: $cnt = intval($arD["SESSIONS"])+intval($arD["SESSIONS_BACK"]); break;
case "SESSION": $cnt = intval($arD["SESSIONS"]); break;
case "SESSION_BACK": $cnt = intval($arD["SESSIONS_BACK"]); break;
case "VISITOR_SUMMA": $cnt = intval($arD["GUESTS"])+intval($arD["GUESTS_BACK"]); break;
case "VISITOR": $cnt = intval($arD["GUESTS"]); break;
case "VISITOR_BACK": $cnt = intval($arD["GUESTS_BACK"]); break;
case "NEW_VISITOR": $cnt = intval($arD["NEW_GUESTS"]); break;
case "FAV_SUMMA": $cnt = intval($arD["FAVORITES"])+intval($arD["FAVORITES_BACK"]); break;
case "FAV": $cnt = intval($arD["FAVORITES"]); break;
case "FAV_BACK": $cnt = intval($arD["FAVORITES_BACK"]); break;
case "HOST_SUMMA": $cnt = intval($arD["C_HOSTS"])+intval($arD["HOSTS_BACK"]); break;
case "HOST": $cnt = intval($arD["C_HOSTS"]); break;
case "HOST_BACK": $cnt = intval($arD["HOSTS_BACK"]); break;
case "HIT_SUMMA": $cnt = intval($arD["HITS"])+intval($arD["HITS_BACK"]); break;
case "HIT": $cnt = intval($arD["HITS"]); break;
case "HIT_BACK": $cnt = intval($arD["HITS_BACK"]); break;
case "EVENT_SUMMA": $cnt = intval($arD["EVENTS"])+intval($arD["EVENTS_BACK"]); break;
case "EVENT": $cnt = intval($arD["EVENTS"]); break;
case "EVENT_BACK": $cnt = intval($arD["EVENTS_BACK"]); break;
case "MONEY_SUMMA": $cnt = doubleval($arD["MONEY"])+doubleval($arD["MONEY_BACK"]); break;
case "MONEY": $cnt = doubleval($arD["MONEY"]); break;
case "MONEY_BACK": $cnt = doubleval($arD["MONEY_BACK"]); break;
}
if ($cnt>0)
{
$arrDays[$arD["DATE_STAT"]]["D"] = $arD["DAY"];
$arrDays[$arD["DATE_STAT"]]["M"] = $arD["MONTH"];
$arrDays[$arD["DATE_STAT"]]["Y"] = $arD["YEAR"];
$arrDays[$arD["DATE_STAT"]][$arD["ADV_ID"]] = $cnt;
$arrLegend[$arD["ADV_ID"]]["ID"] = $arD["ADV_ID"];
$arrLegend[$arD["ADV_ID"]]["R1"] = $arD["REFERER1"];
$arrLegend[$arD["ADV_ID"]]["R2"] = $arD["REFERER2"];
$arrSum[$arD["ADV_ID"]] += $cnt;
}
}
$color = "";
$summa = 0;
$max = 0;
$total = sizeof($arrLegend);
foreach ($arrLegend as $key => $arr)
{
$color = GetNextRGB($color, $total);
$arr["CLR"] = $color;
$arrLegend[$key] = $arr;
$arrLegend[$key]["SM"] = $arrSum[$key];
$summa += $arrSum[$key];
if ($arrSum[$key]>$max) $max = $arrSum[$key];
}
$is_filtered = (IsFiltered($strSqlSearch));
return $arrDays;
}