示例#1
0
文件: adv.php 项目: rasuldev/torino
 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;
 }