• Модуль: 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; }