public static function GetAnalysisGraphArray($arFilter, &$is_filtered, $DATA_TYPE = "SESSION_SUMMA", &$arrLegend, &$summa, &$max) { $err_mess = "File: " . __FILE__ . "<br>Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $arSqlSearch = array(); $strSqlSearch = ""; 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 (strlen($val) <= 0 || $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()) { $cnt = 0; 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; } } reset($arrLegend); $summa = 0; $max = 0; $total = sizeof($arrLegend); while (list($key, $arr) = each($arrLegend)) { $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]; } } reset($arrDays); reset($arrLegend); $is_filtered = IsFiltered($strSqlSearch); return $arrDays; }