Beispiel #1
0
</table>
</div>
<?php 
}
?>
<h2><?php 
echo $arrParams[$graph_type][3];
?>
</h2>
<?php 
$lAdmin->EndPrologContent();
if ($graph_type == "date") {
    $rsData = CTraffic::GetDailyList($by, $order, $arMaxMin, $arFilter, $is_filtered);
} else {
    $temp_graph_type = $graph_type;
    $rs = CTraffic::GetSumList($temp_graph_type, $arFilter);
    $ar = $rs->Fetch();
    switch ($graph_type) {
        case "hour":
            $start = 0;
            $end = 23;
            break;
        case "weekday":
            $start = 0;
            $end = 6;
            break;
        case "month":
            $start = 1;
            $end = 12;
            break;
    }
Beispiel #2
0
 function DecParam($arParam, $arParamSite = false, $SITE_ID = false, $DATE = false, $DATE_FORMAT = "FULL")
 {
     return CTraffic::IncParam($arParam, $arParamSite, $SITE_ID, $DATE, $DATE_FORMAT, "-");
 }
Beispiel #3
0
    $strFilterSite = "";
}
$arComm = CTraffic::GetCommonValues($arFilter);
$arRows = array("HITS" => array("NAME" => GetMessage("GD_STAT_HITS"), "LINK" => "hit_list.php"), "HOSTS" => array("NAME" => GetMessage("GD_STAT_HOSTS")), "SESSIONS" => array("NAME" => GetMessage("GD_STAT_SESSIONS"), "LINK" => "session_list.php"), "EVENTS" => array("NAME" => GetMessage("GD_STAT_EVENTS"), "LINK" => "event_list.php"));
if (!array_key_exists("SITE_ID", $arFilter)) {
    $arRows["GUESTS"] = array("NAME" => GetMessage("GD_STAT_VISITORS"), "LINK" => "guest_list.php");
}
$date_beforeyesterday = ConvertTimeStamp(AddToTimeStamp(array("DD" => -2, "MM" => 0, "YYYY" => 0, "HH" => 0, "MI" => 0, "SS" => 0), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "SHORT");
$date_yesterday = ConvertTimeStamp(AddToTimeStamp(array("DD" => -1, "MM" => 0, "YYYY" => 0, "HH" => 0, "MI" => 0, "SS" => 0), mktime(0, 0, 0, date("n"), date("j"), date("Y"))), "SHORT");
$date_today = ConvertTimeStamp(mktime(0, 0, 0, date("n"), date("j"), date("Y")), "SHORT");
if ($arGadgetParams["HIDE_GRAPH"] != "Y") {
    $iGraphWidth = $arGadgetParams["GRAPH_WIDTH"];
    $iGraphHeight = $arGadgetParams["GRAPH_HEIGHT"];
    $dateGraph1 = ConvertTimeStamp(AddToTimeStamp(array("DD" => -$arGadgetParams["GRAPH_DAYS"], "MM" => 0, "YYYY" => 0, "HH" => 0, "MI" => 0, "SS" => 0), time()), "SHORT");
    $dateGraph2 = ConvertTimeStamp(time(), "SHORT");
    $days = CTraffic::DynamicDays($dateGraph1, $dateGraph2, $arFilter["SITE_ID"]);
    if ($days < 2) {
        ?>
<div class="bx-gadgets-content-padding-rl bx-gadgets-content-padding-t"><?php 
        echo CAdminMessage::ShowMessage(GetMessage("STAT_NOT_ENOUGH_DATA"));
        ?>
</div><?php 
    } else {
        $strGraphParams = "";
        if (in_array("HIT", $arGadgetParams["GRAPH_PARAMS"])) {
            $strGraphParams .= "find_hit=Y&";
        }
        if (in_array("HOST", $arGadgetParams["GRAPH_PARAMS"])) {
            $strGraphParams .= "find_host=Y&";
        }
        if (in_array("SESSION", $arGadgetParams["GRAPH_PARAMS"])) {
Beispiel #4
0
    $arParams["CACHE_TIME"] = 20;
}
$arParams["CACHE_FOR_ADMIN"] = $arParams["CACHE_FOR_ADMIN"] != "N";
//Check if we can not cache
if (!$arParams["CACHE_FOR_ADMIN"] && $USER->IsAdmin()) {
    $arParams["CACHE_TIME"] = 0;
} elseif ($arParams["CACHE_TYPE"] == "N" || $arParams["CACHE_TYPE"] == "A" && COption::GetOptionString("main", "component_cache_on", "Y") == "N") {
    $arParams["CACHE_TIME"] = 0;
}
$arParams["IS_ADMIN"] = $USER->IsAdmin();
$obCache = new CPHPCache();
$cache_id = LANG;
if (($tzOffset = CTimeZone::GetOffset()) != 0) {
    $cache_id .= "_" . $tzOffset;
}
if ($this->startResultCache()) {
    if (!CModule::IncludeModule("statistic")) {
        $this->abortResultCache();
        return;
    }
    $arResult["STATISTIC"] = CTraffic::GetCommonValues(array(), true);
    if (!is_array($arResult["STATISTIC"])) {
        $this->abortResultCache();
        return;
    }
    $arResult["TODAY"] = GetTime(time(), "SHORT");
    $arResult["NOW"] = GetTime(time() + $tzOffset, "FULL");
    $arResult["IS_ADMIN"] = $arParams["IS_ADMIN"];
    $this->SetResultCacheKeys(array());
    $this->IncludeComponentTemplate();
}
Beispiel #5
0
			</td>
		</tr><?php 
        $bFound = true;
    }
    if (!$bFound) {
        ?>
<tr><td align="center" colspan="5"><?php 
        echo GetMessage("GD_STAT_NO_DATA");
        ?>
</td></tr><?php 
    }
    ?>
</tbody>
	</table><?php 
} elseif ($_REQUEST["table_id"] == "phrase") {
    $rsPhrases = CTraffic::GetPhraseList($s_by, $s_order, $arFilter, $is_filtered, 10);
    ?>
<table class="bx-gadgets-table">
	<tbody>
	<tr>
		<th><?php 
    echo GetMessage("GD_STAT_PHRASE");
    ?>
</th>
		<th><a href="/bitrix/admin/phrase_list.php?lang=<?php 
    echo $_REQUEST["lang"];
    echo $strFilterSite;
    ?>
&amp;find_date1=<?php 
    echo $now_date;
    ?>
// image init
$ImageHandle = CreateImageHandle($width, $height);
$arrX = array();
// X axis points
$arrY = array();
// Y axis points
$arrayX = array();
// X axis grid points
$arrayY = array();
// Y axis grid points
/******************************************************
			Get plot data
*******************************************************/
$site_filtered = strlen($find_site_id) > 0 && $find_site_id != "NOT_REF" ? true : false;
$arFilter = array("DATE1" => $find_date1, "DATE2" => $find_date2, "SITE_ID" => $find_site_id);
$rs = CTraffic::GetDailyList($by = "s_date", $order = "asc", $arMaxMin, $arFilter, $is_filtered);
while ($arData = $rs->Fetch()) {
    $date = mktime(0, 0, 0, $arData["MONTH"], $arData["DAY"], $arData["YEAR"]);
    $date_tmp = 0;
    // arrange dates
    $next_date = AddTime($prev_date, 1, "D");
    if ($date > $next_date && intval($prev_date) > 0) {
        // fill missing
        $date_tmp = $next_date;
        while ($date_tmp < $date) {
            $arrX[] = $date_tmp;
            $arrY[] = 0;
            $date_tmp = AddTime($date_tmp, 1, "D");
        }
    }
    $arrX[] = $date;
Beispiel #7
0
 /**
  * <p>Удаляет указанное <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event">событие</a>.</p>
  *
  *
  * @param int $event_id  ID удаляемого события. </htm
  *
  * @return bool <p>Метод возвращает "true" в случае успешного удаления и "false" в случае
  * неудачи.</p>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $event_id = 1;
  * if (<b>CStatEvent::Delete</b>($event_id)) 
  *     echo "Событие #".$event_id." успешно удалено.";
  * ?&gt;
  * </pre>
  *
  *
  * <h4>See Also</h4> 
  * <ul><li> <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event">Термин "Событие"</a>
  * </li></ul> <a name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/statistic/classes/cstatevent/delete.php
  * @author Bitrix
  */
 public static function Delete($ID)
 {
     $err_mess = "File: " . __FILE__ . "<br>Line: ";
     $DB = CDatabase::GetModuleConnection('statistic');
     $ID = intval($ID);
     $strSql = "\n\t\t\tSELECT\n\t\t\t\tL.EVENT_ID,\n\t\t\t\tL.MONEY,\n\t\t\t\tL.SESSION_ID,\n\t\t\t\tL.GUEST_ID,\n\t\t\t\tL.ADV_ID,\n\t\t\t\tL.ADV_BACK,\n\t\t\t\tL.COUNTRY_ID,\n\t\t\t\tL.CHARGEBACK,\n\t\t\t\tL.SITE_ID,\n\t\t\t\t" . $DB->DateToCharFunction("L.DATE_ENTER", "SHORT") . "\tDATE_ENTER,\n\t\t\t\t" . $DB->DateToCharFunction("L.DATE_ENTER", "FULL") . "\tDATE_ENTER_FULL\n\t\t\tFROM\n\t\t\t\tb_stat_event_list L,\n\t\t\t\tb_stat_event E\n\t\t\tWHERE\n\t\t\t\tL.ID = '{$ID}'\n\t\t\tand E.ID = L.EVENT_ID\n\t\t\t";
     $a = $DB->Query($strSql, false, $err_mess . __LINE__);
     if ($ar = $a->Fetch()) {
         // уменьшаем счетчик у страны
         CStatistics::UpdateCountry($ar["COUNTRY_ID"], array("C_EVENTS" => 1), $ar["DATE_ENTER"], "SHORT", "-");
         // уменьшаем счетчик по дням
         $arFields = array("COUNTER" => "COUNTER-1", "MONEY" => "MONEY - " . doubleval($ar["MONEY"]));
         $rows = $DB->Update("b_stat_event_day", $arFields, "WHERE EVENT_ID='" . intval($ar["EVENT_ID"]) . "' and DATE_STAT = FROM_UNIXTIME('" . MkDateTime(ConvertDateTime($ar["DATE_ENTER"], "D.M.Y"), "d.m.Y") . "')", $err_mess . __LINE__);
         // если уже была свертка то
         if (intval($rows) <= 0) {
             // уменьшим счетчик на типе события
             $arFields = array("COUNTER" => "COUNTER-1", "MONEY" => "MONEY - " . doubleval($ar["MONEY"]));
             $DB->Update("b_stat_event", $arFields, "WHERE ID='" . intval($ar["EVENT_ID"]) . "'", $err_mess . __LINE__);
         }
         // если в связке есть нулевые значения то ее можно удалить
         $strSql = "DELETE FROM b_stat_event_day WHERE COUNTER=0";
         $DB->Query($strSql, false, $err_mess . __LINE__);
         // чистим сессию
         $arFields = array("C_EVENTS" => "C_EVENTS-1");
         $DB->Update("b_stat_session", $arFields, "WHERE ID='" . intval($ar["SESSION_ID"]) . "'", $err_mess . __LINE__, false, false, false);
         // чистим гостя
         $DB->Update("b_stat_guest", $arFields, "WHERE ID='" . intval($ar["GUEST_ID"]) . "'", $err_mess . __LINE__, false, false, false);
         if (intval($ar["ADV_ID"]) > 0) {
             // изменяем доход рекламной кампании
             if (doubleval($ar["MONEY"]) != 0) {
                 $sign = $ar["CHARGEBACK"] == "Y" ? "+" : "-";
                 $arFields = array("REVENUE" => "REVENUE " . $sign . " " . doubleval($ar["MONEY"]));
                 $DB->Update("b_stat_adv", $arFields, "WHERE ID='" . intval($ar["ADV_ID"]) . "'", $err_mess . __LINE__, false, false, false);
             }
             // чистим связку с рекламной кампанией
             if ($ar["ADV_BACK"] == "Y") {
                 $arFields = array("COUNTER_BACK" => "COUNTER_BACK - 1", "MONEY_BACK" => "MONEY_BACK - " . doubleval($ar["MONEY"]));
             } else {
                 $arFields = array("COUNTER" => "COUNTER - 1", "MONEY" => "MONEY - " . doubleval($ar["MONEY"]));
             }
             $DB->Update("b_stat_adv_event", $arFields, "WHERE ADV_ID='" . intval($ar["ADV_ID"]) . "' and EVENT_ID='" . $ar["EVENT_ID"] . "'", $err_mess . __LINE__);
             // чистим связку с рекламной кампанией по дням
             if ($ar["ADV_BACK"] == "Y") {
                 $arFields = array("COUNTER_BACK" => "COUNTER_BACK - 1", "MONEY_BACK" => "MONEY_BACK - " . doubleval($ar["MONEY"]));
             } else {
                 $arFields = array("COUNTER" => "COUNTER - 1", "MONEY" => "MONEY - " . doubleval($ar["MONEY"]));
             }
             $DB->Update("b_stat_adv_event_day", $arFields, "WHERE ADV_ID='" . intval($ar["ADV_ID"]) . "' and EVENT_ID='" . $ar["EVENT_ID"] . "' and DATE_STAT = FROM_UNIXTIME('" . MkDateTime(ConvertDateTime($ar["DATE_ENTER"], "D.M.Y"), "d.m.Y") . "')", $err_mess . __LINE__, false, false, false);
         }
         // если в связках остались нулевые значения то их можно удалить
         $strSql = "DELETE FROM b_stat_adv_event WHERE COUNTER<=0 and COUNTER_BACK<=0";
         $DB->Query($strSql, false, $err_mess . __LINE__);
         $strSql = "DELETE FROM b_stat_adv_event_day WHERE COUNTER<=0 and COUNTER_BACK<=0";
         $DB->Query($strSql, false, $err_mess . __LINE__);
         // уменьшаем счетчик по дням
         $arFields = array("C_EVENTS" => "C_EVENTS-1");
         $DB->Update("b_stat_day", $arFields, "WHERE DATE_STAT = FROM_UNIXTIME('" . MkDateTime(ConvertDateTime($ar["DATE_ENTER"], "D.M.Y"), "d.m.Y") . "')", $err_mess . __LINE__);
         // уменьшаем счетчик траффика
         CTraffic::DecParam(array("EVENT" => 1), array(), false, $ar["DATE_ENTER_FULL"]);
         if (strlen($ar["SITE_ID"]) > 0) {
             $arFields = array("C_EVENTS" => "C_EVENTS-1");
             $DB->Update("b_stat_day_site", $arFields, "WHERE SITE_ID = '" . $DB->ForSql($ar["SITE_ID"], 2) . "' and  DATE_STAT = FROM_UNIXTIME('" . MkDateTime(ConvertDateTime($ar["DATE_ENTER"], "D.M.Y"), "d.m.Y") . "')", $err_mess . __LINE__);
             // уменьшаем счетчик траффика
             CTraffic::DecParam(array(), array("EVENT" => 1), $ar["SITE_ID"], $ar["DATE_ENTER_FULL"]);
         }
         $strSql = "DELETE FROM b_stat_event_list WHERE ID='{$ID}'";
         $DB->Query($strSql, false, $err_mess . __LINE__);
         return true;
     }
     return false;
 }
Beispiel #8
0
 function GetLiveFeedData($site_id = "", $lang = "en")
 {
     global $MESS;
     if (($r = CStatisticWS::CheckAuth()) !== False) {
         return $r;
     }
     CComponentUtil::__IncludeLang("/bitrix/components/bitrix/webservice.statistic/", "/component_1.php", $lang);
     $arFilter = array();
     $server_name = COption::GetOptionString("main", "server_name", $GLOBALS["SERVER_NAME"]);
     $protocol = CMain::IsHTTPS() ? "https" : "http";
     if (strlen($site_id) > 0) {
         $rsSites = CSite::GetByID($arFields["SITE_ID"]);
         if ($arSite = $rsSites->Fetch()) {
             $arFilter = array("SITE_ID" => $site_id);
             if (strlen($arSite["SERVER_NAME"]) > 0) {
                 $server_name = $arSite["SERVER_NAME"];
             }
         }
     }
     $traffic = CTraffic::GetCommonValues($arFilter, true);
     $strStat = '<table border="0">' . '<tr>' . '<td> </td>' . '<td><b>' . GetMessage("BX_WS_STAT_LF_TODAY") . '</b></td>' . '<td><b>' . GetMessage("BX_WS_STAT_LF_YESTERDAY") . '</b></td>' . '<td><b>' . GetMessage("BX_WS_STAT_LF_B_YESTERDAY") . '</b></td>' . '<td><b>' . GetMessage("BX_WS_STAT_LF_TOTAL") . '</b></td>' . '</tr>' . '<tr>' . '<td><b>' . GetMessage("BX_WS_STAT_LF_HITS") . '</b></td>' . '<td align="center">' . $traffic["TODAY_HITS"] . '</td>' . '<td align="center">' . $traffic["YESTERDAY_HITS"] . '</td>' . '<td align="center">' . $traffic["B_YESTERDAY_HITS"] . '</td>' . '<td align="center">' . $traffic["TOTAL_HITS"] . '</td>' . '</tr>' . '<tr>' . '<td><b>' . GetMessage("BX_WS_STAT_LF_SESSIONS") . '</b></td>' . '<td align="center">' . $traffic["TODAY_SESSIONS"] . '</td>' . '<td align="center">' . $traffic["YESTERDAY_SESSIONS"] . '</td>' . '<td align="center">' . $traffic["B_YESTERDAY_SESSIONS"] . '</td>' . '<td align="center">' . $traffic["TOTAL_SESSIONS"] . '</td>' . '</tr>' . '<tr>' . '<td><b>' . GetMessage("BX_WS_STAT_LF_HOSTS") . '</b></td>' . '<td align="center">' . $traffic["TODAY_HOSTS"] . '</td>' . '<td align="center">' . $traffic["YESTERDAY_HOSTS"] . '</td>' . '<td align="center">' . $traffic["B_YESTERDAY_HOSTS"] . '</td>' . '<td align="center">' . $traffic["TOTAL_HOSTS"] . '</td>' . '</tr>' . '<tr>' . '<td><b>' . GetMessage("BX_WS_STAT_LF_EVENTS") . '</b></td>' . '<td align="center">' . $traffic["TODAY_EVENTS"] . '</td>' . '<td align="center">' . $traffic["YESTERDAY_EVENTS"] . '</td>' . '<td align="center">' . $traffic["B_YESTERDAY_EVENTS"] . '</td>' . '<td align="center">' . $traffic["TOTAL_EVENTS"] . '</td>' . '</tr>' . (!array_key_exists("SITE_ID", $arFilter) ? '<tr>' . '<td><b>' . GetMessage("BX_WS_STAT_LF_GUESTS") . '</b></td>' . '<td align="center">' . $traffic["TODAY_GUESTS"] . '</td>' . '<td align="center">' . $traffic["YESTERDAY_GUESTS"] . '</td>' . '<td align="center">' . $traffic["B_YESTERDAY_GUESTS"] . '</td>' . '<td align="center">' . $traffic["TOTAL_GUESTS"] . '</td>' . '</tr>' . '<tr>' . '<td><b>' . GetMessage("BX_WS_STAT_LF_NEW_GUESTS") . '</b></td>' . '<td align="center">' . $traffic["TODAY_NEW_GUESTS"] . '</td>' . '<td align="center">' . $traffic["YESTERDAY_NEW_GUESTS"] . '</td>' . '<td align="center">' . $traffic["B_YESTERDAY_NEW_GUESTS"] . '</td>' . '<td align="center"> </td>' . '</tr>' : '') . '</table>';
     $strStatText = GetMessage("BX_WS_STAT_LF_HITS") . '#BR#' . GetMessage("BX_WS_STAT_LF_TODAY") . ': ' . $traffic["TODAY_HITS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_YESTERDAY") . ': ' . $traffic["YESTERDAY_HITS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_B_YESTERDAY") . ': ' . $traffic["B_YESTERDAY_HITS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_TOTAL") . ': ' . $traffic["TOTAL_HITS"] . '#BR#' . '#BR#' . GetMessage("BX_WS_STAT_LF_SESSIONS") . '#BR#' . GetMessage("BX_WS_STAT_LF_TODAY") . ': ' . $traffic["TODAY_SESSIONS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_YESTERDAY") . ': ' . $traffic["YESTERDAY_SESSIONS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_B_YESTERDAY") . ': ' . $traffic["B_YESTERDAY_SESSIONS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_TOTAL") . ': ' . $traffic["TOTAL_SESSIONS"] . '#BR#' . '#BR#' . GetMessage("BX_WS_STAT_LF_HOSTS") . '#BR#' . GetMessage("BX_WS_STAT_LF_TODAY") . ': ' . $traffic["TODAY_HOSTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_YESTERDAY") . ': ' . $traffic["YESTERDAY_HOSTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_B_YESTERDAY") . ': ' . $traffic["B_YESTERDAY_HOSTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_TOTAL") . ': ' . $traffic["TOTAL_HOSTS"] . '#BR#' . '#BR#' . GetMessage("BX_WS_STAT_LF_EVENTS") . '#BR#' . GetMessage("BX_WS_STAT_LF_TODAY") . ': ' . $traffic["TODAY_EVENTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_YESTERDAY") . ': ' . $traffic["YESTERDAY_EVENTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_B_YESTERDAY") . ': ' . $traffic["B_YESTERDAY_EVENTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_TOTAL") . ': ' . $traffic["TOTAL_EVENTS"] . '#BR#' . (!array_key_exists("SITE_ID", $arFilter) ? '#BR#' . GetMessage("BX_WS_STAT_LF_GUESTS") . '#BR#' . GetMessage("BX_WS_STAT_LF_TODAY") . ': ' . $traffic["TODAY_GUESTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_YESTERDAY") . ': ' . $traffic["YESTERDAY_GUESTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_B_YESTERDAY") . ': ' . $traffic["B_YESTERDAY_GUESTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_TOTAL") . ': ' . $traffic["TOTAL_GUESTS"] . '#BR#' . '#BR#' . GetMessage("BX_WS_STAT_LF_NEW_GUESTS") . '#BR#' . GetMessage("BX_WS_STAT_LF_TODAY") . ': ' . $traffic["TODAY_NEW_GUESTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_YESTERDAY") . ': ' . $traffic["YESTERDAY_NEW_GUESTS"] . '#BR#' . GetMessage("BX_WS_STAT_LF_B_YESTERDAY") . ': ' . $traffic["B_YESTERDAY_NEW_GUESTS"] . '#BR#' : '');
     $arResult = array("TITLE" => htmlspecialchars(GetMessage("BX_WS_STAT_LF_TITLE")), "MESSAGE" => htmlspecialchars($strStat), "TEXT_MESSAGE" => htmlspecialchars($strStatText), "URL" => htmlspecialchars($protocol . "://" . $server_name . "/bitrix/admin/stat_list.php?lang=" . $lang));
     return $arResult;
 }
Beispiel #9
0
            $val = $M[$dtu . "_" . $i];
        }
        $arData[$val] = array("DATA" => $arRec, "COLORS" => $arColors);
        $arrX[] = $val;
    }
    $arrY = GetArrayY($arrY, $MinY, $MaxY);
    $arrTTF_FONT["type"] = "bar";
    $gridInfo = DrawCoordinatGrid($arrX, $arrY, $width, $height, $ImageHandle, "FFFFFF", "B1B1B1", "000000", 15, 2, $arrTTF_FONT);
    /******************************************************
    			data plot
    	*******************************************************/
    if (is_array($gridInfo)) {
        Bar_Diagram($ImageHandle, $arData, $MinY, $MaxY, $gridInfo);
    }
} else {
    $rsDays = CTraffic::GetDailyList($by = "s_date", $order = "asc", $v1, $arFilter, $v2);
    while ($arData = $rsDays->Fetch()) {
        $date = mktime(0, 0, 0, $arData["MONTH"], $arData["DAY"], $arData["YEAR"]);
        $date_tmp = 0;
        // when dates come not in order
        $next_date = AddTime($prev_date, 1, "D");
        if ($date > $next_date && intval($prev_date) > 0) {
            // fill date gaps
            $date_tmp = $next_date;
            while ($date_tmp < $date) {
                $arrX[] = $date_tmp;
                if ($find_hit == "Y") {
                    $arrY_hit[] = 0;
                }
                if ($find_host == "Y") {
                    $arrY_host[] = 0;
Beispiel #10
0
 /**
  * <p>Добавляет <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event">событие</a> используя текущие параметры <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#guest">посетителя</a>. Если <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event_type">типа события</a> с <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event_type_id">идентификаторами</a> <i>event1</i>, <i>event2</i> не существует, то он будет автоматически создан с указанными идентификаторами.</p>
  *
  *
  * @param string $event1  Идентификатор типа события event1.
  *
  * @param string $event2 = "" Идентификатор типа события event2.
  *
  * @param string $event3 = "" <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event3">Дополнительный параметр
  * event3</a> события.
  *
  * @param mixed $money = "" Денежная сумма.
  *
  * @param string $currency = "" Трехсимвольный идентификатор валюты. Идентификаторы валют
  * задаются в модуле "Валюты".
  *
  * @param string $goto = "" Адрес страницы куда перешел посетитель. Как правило используется
  * в скриптах вида /bitrix/redirect.php, перенаправляющих посетителей на
  * другие страницы с одновременной фиксацией события.
  *
  * @param string $chargeback = "N" Флаг отрицательной суммы. Используется когда необходимо
  * зафиксировать событие о возврате денег (chargeback). Возможные
  * значения: <ul> <li> <b>Y</b> - денежная сумма отрицательная; </li> <li> <b>N</b> -
  * денежная сумма положительная. </li> </ul>
  *
  * @param mixed $site_id = false ID сайта к которому будет привязано будущее событие.
  *
  * @return array <p>Метод возвращает массив вида: <br><br></p> <pre class="syntax">Array ( [TYPE_ID] =&gt; ID
  * типа события [EID] =&gt; ID добавленного события )</pre> <p></p>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * // зафиксируем событие типа "Просмотр спец. страницы" (view/special_page)
  * <b>CStatEvent::AddCurrent</b>("softkey", "out", $GLOBALS["APPLICATION"]-&gt;GetCurPage());
  * ?&gt;
  * 
  * &lt;?
  * // зафиксируем событие типа "Уход на оплату заказа на Софткее" (softkey/out)
  * // если такого типа не существует, то он будет автоматически создан
  * // событие будет фиксироваться по параметрам текущего посетителя сайта
  * 
  * // в данной переменной может быть задана страница на которую осуществляется переход
  * $goto = "http://www.softkey.ru/catalog/basket.php?prodid=902&amp;quantity=1&amp;referer1=ritlabs_site&amp;referer2=BITRIX_SM.OTk1LjgyLk4wLjI1Lk4ucnU%3D";
  * 
  * <b>CStatEvent::AddCurrent</b>("softkey", "out", "", "", "", $goto);
  * ?&gt;
  * 
  * &lt;?
  * // зафиксируем событие типа "Скачивание файла manual.chm" (download/manual)
  * // если такого типа не существует, то он будет автоматически создан
  * // событие будет фиксироваться по параметрам текущего посетителя сайта
  * 
  * // сначала проверим не скачивал ли уже текущий посетитель этот файл
  * // в течение последнего часа
  * 
  * // получим ID типа события
  * $rs = CStatEventType::GetByEvents($event1, $event2);
  * if ($ar = $rs-&gt;Fetch())
  * {
  *     // теперь получим все события данного типа для текущего посетителя сайта
  *     // произошедшие за последний час (3600 секунд)
  *     $rs = CStatEvent::GetListByGuest($_SESSION["SESS_GUEST_ID"], $ar["TYPE_ID"], "", 3600);
  *     
  *     // если таких событий не было то
  *     if (!($ar=$rs-&gt;Fetch()))
  *     {
  *         // добавляем данное событие
  *         <b>CStatEvent::AddCurrent</b>("download", "manual");
  *     }
  * }
  * ?&gt;
  * </pre>
  *
  *
  * <h4>See Also</h4> 
  * <ul> <li> <a href="http://dev.1c-bitrix.ru/api_help/statistic/classes/cstatevent/add.php">CStatEvent::Add</a> </li> <li>
  * <a href="http://dev.1c-bitrix.ru/api_help/statistic/classes/cstatevent/addbyevents.php">CStatEvent::AddByEvents</a>
  * </li> <li> <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event">Термин "Событие"</a> </li>
  * <li> <a href="http://dev.1c-bitrix.ru/api_help/statistic/terms.php#event3">Термин "Дополнительный
  * параметр события (event3)"</a> </li> </ul> <a name="examples"></a>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/statistic/classes/cstatevent/addcurrent.php
  * @author Bitrix
  */
 public static function AddCurrent($event1, $event2 = "", $event3 = "", $money = "", $currency = "", $goto = "", $chargeback = "N", $site_id = false)
 {
     $err_mess = "File: " . __FILE__ . "<br>Line: ";
     global $APPLICATION;
     $DB = CDatabase::GetModuleConnection('statistic');
     $event1 = trim($event1);
     $event2 = trim($event2);
     $event3 = trim($event3);
     if (strlen($event1) <= 0 && strlen($event2) <= 0) {
         return array("EVENT_ID" => 0, "TYPE_ID" => 0, "EID" => 0);
     }
     //Check if register event for searcher
     if (intval($_SESSION["SESS_SEARCHER_ID"]) > 0 && COption::GetOptionString("statistic", "SEARCHER_EVENTS") != "Y") {
         return array("EVENT_ID" => 0, "TYPE_ID" => 0, "EID" => 0);
     }
     // lookup event type ID
     $EVENT_ID = CStatEvent::SetEventType($event1, $event2, $arEventType);
     // return if it's unknown
     if ($EVENT_ID <= 0) {
         return array("EVENT_ID" => 0, "TYPE_ID" => 0, "EID" => 0);
     }
     if ($site_id === false) {
         if (defined("ADMIN_SECTION") && ADMIN_SECTION === true) {
             $sql_site = "null";
             $site_id = false;
         } elseif (defined("SITE_ID")) {
             $sql_site = "'" . $DB->ForSql(SITE_ID, 2) . "'";
             $site_id = SITE_ID;
         } else {
             $sql_site = "null";
             $site_id = false;
         }
     } else {
         if (strlen(trim($site_id)) > 0) {
             $sql_site = "'" . $DB->ForSql($site_id, 2) . "'";
         } else {
             $sql_site = "null";
             $site_id = false;
         }
     }
     $money = doubleval($money);
     // convert when currency specified
     if (strlen(trim($currency)) > 0) {
         $base_currency = GetStatisticBaseCurrency();
         if (strlen($base_currency) > 0) {
             if ($currency != $base_currency) {
                 if (CModule::IncludeModule("currency")) {
                     $rate = CCurrencyRates::GetConvertFactor($currency, $base_currency);
                     if ($rate > 0 && $rate != 1) {
                         $money = $money * $rate;
                     }
                 }
             }
         }
     }
     $money = round($money, 2);
     $chargeback = $chargeback == "Y" ? "Y" : "N";
     $goto = preg_replace("/#EVENT_GID#/i", CStatEvent::GetGID($site_id), $goto);
     $sql_KEEP_DAYS = intval($arEventType["KEEP_DAYS"]) > 0 ? intval($arEventType["KEEP_DAYS"]) : "null";
     $arr = false;
     $referer_url = strlen($_SERVER["HTTP_REFERER"]) <= 0 ? $_SESSION["SESS_HTTP_REFERER"] : $_SERVER["HTTP_REFERER"];
     if (strlen($referer_url) > 0) {
         if ($url = @parse_url($referer_url)) {
             $rs = CSite::GetList($v1 = "LENDIR", $v2 = "DESC", array("ACTIVE" => "Y", "DOMAIN" => "%" . $url["host"], "IN_DIR" => $url["path"]));
             $arr = $rs->Fetch();
         }
     }
     $sql_referer_site_id = is_array($arr) && strlen($arr["ID"]) > 0 ? "'" . $DB->ForSql($arr["ID"], 2) . "'" : "null";
     $HIT_ID = CKeepStatistics::GetCuurentHitID();
     $arFields = array("EVENT_ID" => "'" . $EVENT_ID . "'", "EVENT3" => "'" . $DB->ForSql($event3, 255) . "'", "MONEY" => $money, "DATE_ENTER" => $DB->GetNowFunction(), "REFERER_URL" => "'" . $DB->ForSql($referer_url, 2000) . "'", "URL" => "'" . $DB->ForSql(__GetFullRequestUri(), 2000) . "'", "REDIRECT_URL" => "'" . $DB->ForSql($goto, 2000) . "'", "SESSION_ID" => intval($_SESSION["SESS_SESSION_ID"]) > 0 ? intval($_SESSION["SESS_SESSION_ID"]) : "null", "GUEST_ID" => intval($_SESSION["SESS_GUEST_ID"]) > 0 ? intval($_SESSION["SESS_GUEST_ID"]) : "null", "ADV_ID" => $_SESSION["SESS_LAST_ADV_ID"] > 0 ? $_SESSION["SESS_LAST_ADV_ID"] : "null", "HIT_ID" => $HIT_ID > 0 ? $HIT_ID : "NULL", "COUNTRY_ID" => "'" . $DB->ForSql($_SESSION["SESS_COUNTRY_ID"], 2) . "'", "KEEP_DAYS" => $sql_KEEP_DAYS, "CHARGEBACK" => "'" . $chargeback . "'", "SITE_ID" => $sql_site, "REFERER_SITE_ID" => $sql_referer_site_id);
     if (intval($_SESSION["SESS_LAST_ADV_ID"]) > 0 && intval($_SESSION["SESS_ADV_ID"]) <= 0) {
         $arFields["ADV_BACK"] = "'Y'";
     }
     $eid = $DB->Insert("b_stat_event_list", $arFields, $err_mess . __LINE__);
     // in case of first occurence
     if (strlen($arEventType["DATE_ENTER"]) <= 0) {
         // set date of the first event
         $arFields = array("DATE_ENTER" => $DB->GetNowFunction());
         $DB->Update("b_stat_event", $arFields, "WHERE ID='" . $EVENT_ID . "'", $err_mess . __LINE__);
     }
     // day counter update
     $arFields = array("DATE_LAST" => $DB->GetNowFunction(), "COUNTER" => "COUNTER + 1", "MONEY" => "MONEY + " . $money);
     $rows = $DB->Update("b_stat_event_day", $arFields, "WHERE EVENT_ID='" . $EVENT_ID . "' and " . CStatistics::DBDateCompare("DATE_STAT"), $err_mess . __LINE__);
     // there was no records updated
     if (intval($rows) <= 0) {
         // so add one
         $arFields_i = array("DATE_STAT" => $DB->GetNowDate(), "DATE_LAST" => $DB->GetNowFunction(), "EVENT_ID" => $EVENT_ID, "COUNTER" => 1, "MONEY" => $money);
         $DB->Insert("b_stat_event_day", $arFields_i, $err_mess . __LINE__);
     } elseif (intval($rows) > 1) {
         // delete
         $strSql = "SELECT ID FROM b_stat_event_day WHERE EVENT_ID='" . $EVENT_ID . "' and  " . CStatistics::DBDateCompare("DATE_STAT") . " ORDER BY ID";
         $i = 0;
         $rs = $DB->Query($strSql, false, $err_mess . __LINE__);
         while ($ar = $rs->Fetch()) {
             $i++;
             if ($i > 1) {
                 $strSql = "DELETE FROM b_stat_event_day WHERE ID = " . $ar["ID"];
                 $DB->Query($strSql, false, $err_mess . __LINE__);
             }
         }
     }
     // guest counter
     $arFields = array("C_EVENTS" => "C_EVENTS+1");
     $DB->Update("b_stat_guest", $arFields, "WHERE ID=" . intval($_SESSION["SESS_GUEST_ID"]), $err_mess . __LINE__, false, false, false);
     // session counter
     $arFields = array("C_EVENTS" => "C_EVENTS+1");
     $DB->Update("b_stat_session", $arFields, "WHERE ID=" . intval($_SESSION["SESS_SESSION_ID"]), $err_mess . __LINE__, false, false, false);
     // events counter
     $arFields = array("C_EVENTS" => "C_EVENTS+1");
     $DB->Update("b_stat_day", $arFields, "WHERE " . CStatistics::DBDateCompare("DATE_STAT"), $err_mess . __LINE__, false, false, false);
     // when site defined
     if (strlen($site_id) > 0) {
         // update site
         $arFields = array("C_EVENTS" => "C_EVENTS+1");
         $DB->Update("b_stat_day_site", $arFields, "WHERE SITE_ID='" . $DB->ForSql($site_id, 2) . "' and " . CStatistics::DBDateCompare("DATE_STAT"), $err_mess . __LINE__);
     }
     // there is advertising compaign defined
     if (intval($_SESSION["SESS_ADV_ID"]) > 0 || intval($_SESSION["SESS_LAST_ADV_ID"]) > 0) {
         // increase revenue
         if ($money != 0) {
             $sign = $chargeback == "Y" ? "-" : "+";
             $arFields = array("REVENUE" => "REVENUE " . $sign . " " . $money);
             $DB->Update("b_stat_adv", $arFields, "WHERE ID='" . intval($_SESSION["SESS_LAST_ADV_ID"]) . "'", $err_mess . __LINE__, false, false, false);
         }
         if (intval($_SESSION["SESS_ADV_ID"]) > 0) {
             $arFields = array("COUNTER" => "COUNTER + 1", "MONEY" => "MONEY + " . $money);
         } else {
             $arFields = array("COUNTER_BACK" => "COUNTER_BACK + 1", "MONEY_BACK" => "MONEY_BACK + " . $money);
         }
         $rows = $DB->Update("b_stat_adv_event", $arFields, "WHERE ADV_ID='" . intval($_SESSION["SESS_LAST_ADV_ID"]) . "' and EVENT_ID='" . $EVENT_ID . "'", $err_mess . __LINE__);
         if (intval($rows) <= 0) {
             $arFields = array("ADV_ID" => "'" . $_SESSION["SESS_LAST_ADV_ID"] . "'", "EVENT_ID" => "'" . $EVENT_ID . "'");
             if (intval($_SESSION["SESS_ADV_ID"]) > 0) {
                 $arFields["COUNTER"] = "1";
                 $arFields["MONEY"] = $money;
             } else {
                 $arFields["COUNTER_BACK"] = "1";
                 $arFields["MONEY_BACK"] = $money;
             }
             $DB->Insert("b_stat_adv_event", $arFields, $err_mess . __LINE__);
         }
         if (intval($_SESSION["SESS_ADV_ID"]) > 0) {
             $arFields = array("COUNTER" => "COUNTER + 1", "MONEY" => "MONEY + " . $money);
         } else {
             $arFields = array("COUNTER_BACK" => "COUNTER_BACK + 1", "MONEY_BACK" => "MONEY_BACK + " . $money);
         }
         $rows = $DB->Update("b_stat_adv_event_day", $arFields, "WHERE ADV_ID='" . intval($_SESSION["SESS_LAST_ADV_ID"]) . "' and EVENT_ID='" . $EVENT_ID . "' and " . CStatistics::DBDateCompare("DATE_STAT"), $err_mess . __LINE__, false, false, false);
         if (intval($rows) <= 0) {
             $arFields = array("ADV_ID" => $_SESSION["SESS_LAST_ADV_ID"] > 0 ? $_SESSION["SESS_LAST_ADV_ID"] : "null", "EVENT_ID" => "'" . $EVENT_ID . "'", "DATE_STAT" => $DB->GetNowDate());
             if (intval($_SESSION["SESS_ADV_ID"]) > 0) {
                 $arFields["COUNTER"] = "1";
                 $arFields["MONEY"] = $money;
             } else {
                 $arFields["COUNTER_BACK"] = "1";
                 $arFields["MONEY_BACK"] = $money;
             }
             $DB->Insert("b_stat_adv_event_day", $arFields, $err_mess . __LINE__);
         } elseif (intval($rows) > 1) {
             $strSql = "SELECT ID FROM b_stat_adv_event_day WHERE ADV_ID='" . intval($_SESSION["SESS_LAST_ADV_ID"]) . "' and EVENT_ID='" . $EVENT_ID . "' and " . CStatistics::DBDateCompare("DATE_STAT") . " ORDER BY ID";
             $i = 0;
             $rs = $DB->Query($strSql, false, $err_mess . __LINE__);
             while ($ar = $rs->Fetch()) {
                 $i++;
                 if ($i > 1) {
                     $strSql = "DELETE FROM b_stat_adv_event_day WHERE ID = " . $ar["ID"];
                     $DB->Query($strSql, false, $err_mess . __LINE__);
                 }
             }
         }
     }
     // todays traffic counters
     CTraffic::IncParam(array("EVENT" => 1), array("EVENT" => 1));
     if (strlen($_SESSION["SESS_COUNTRY_ID"]) > 0) {
         CStatistics::UpdateCountry($_SESSION["SESS_COUNTRY_ID"], array("C_EVENTS" => 1));
     }
     if ($_SESSION["SESS_CITY_ID"] > 0) {
         CStatistics::UpdateCity($_SESSION["SESS_CITY_ID"], array("C_EVENTS" => 1));
     }
     return array("EVENT_ID" => intval($EVENT_ID), "TYPE_ID" => intval($EVENT_ID), "EID" => intval($eid));
 }
Beispiel #11
0
</tr>
</table>
<?php 
}
$lAdmin_tab4->EndCustomContent();
if ($_REQUEST["table_id"] == $sTableID_tab4) {
    $lAdmin_tab4->CheckListMode();
}
$sTableID_tab5 = "t_stat_list_tab5";
$oSort_tab5 = new CAdminSorting($sTableID_tab5);
$lAdmin_tab5 = new CAdminList($sTableID_tab5, $oSort_tab5);
$lAdmin_tab5->BeginCustomContent();
if (strlen($strError) > 0) {
    CAdminMessage::ShowMessage($strError);
} elseif ($_REQUEST["table_id"] == $sTableID_tab5) {
    $phrases = CTraffic::GetPhraseList($s_by, $s_order, $arFilter, $is_filtered, false);
    ?>
<table border="0" cellspacing="0" cellpadding="0" width="100%" class="list-table">
<tr class="heading" valign="top">
	<td><?php 
    echo GetMessage("STAT_PHRASE");
    ?>
</td>
	<td><a href="<?php 
    echo hrefHtml("phrase_list.php", "lang", LANGUAGE_ID, "find_date1", $now_date, "find_date2", $now_date, "set_filter", "Y", "group_by", "none", "menu_item_id", "1");
    ?>
"><?php 
    echo GetMessage("STAT_TODAY");
    ?>
</a><br><?php 
    echo $now_date;
Beispiel #12
0
function SendDailyStatistics()
{
    __SetNoKeepStatistics();
    if ($_SESSION["SESS_NO_AGENT_STATISTIC"] != "Y" && !defined("NO_AGENT_STATISTIC")) {
        global $MESS;
        $rsSite = CSite::GetDefList();
        $arSite = $rsSite->Fetch();
        $charset = $arSite["CHARSET"];
        $now_full_date = GetTime(time(), "FULL", $arSite["ID"], true);
        $now_date = GetTime(time(), "SHORT", $arSite["ID"], true);
        $yesterday_date = GetTime(time() - 86400, "SHORT", $arSite["ID"], true);
        $bef_yesterday_date = GetTime(time() - 172800, "SHORT", $arSite["ID"], true);
        $arComm = CTraffic::GetCommonValues();
        $adv = CAdv::GetList($a_by, $a_order, array(), $is_filtered, "", $arrGROUP_DAYS, $v);
        $events = CStatEventType::GetList($e_by = "s_stat", $e_order = "desc", array(), $is_filtered);
        $referers = CTraffic::GetRefererList($by, $order, array(), $is_filtered);
        $phrases = CTraffic::GetPhraseList($s_by, $s_order, array(), $is_filtered);
        $searchers = CSearcher::GetList($f_by = "s_stat", $f_order = "desc", array(), $is_filtered);
        $OLD_MESS = $MESS;
        $MESS = array();
        IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/statistic/include.php", $arSite["LANGUAGE_ID"]);
        IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/statistic/admin/stat_list.php", $arSite["LANGUAGE_ID"]);
        $HTML_HEADER = '
			<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
			<html>
			<head>
			<meta http-equiv="Content-Type" content="text/html; charset=' . $charset . '">
			<style>
			.tablehead1 {background-color:#C2DBED; padding:2px; border-top: 1px solid #A8C2D7; border-bottom: 1px solid #A8C2D7; border-left: 1px solid #A8C2D7;}
			.tablehead2 {background-color:#C2DBED; padding:2px; border-top: 1px solid #A8C2D7; border-bottom: 1px solid #A8C2D7;}
			.tablehead3 {background-color:#C2DBED; padding:2px; border-top: 1px solid #A8C2D7; border-bottom: 1px solid #A8C2D7; border-right: 1px solid #A8C2D7;}
			.tablebody1 {background-color:#F0F1F2; padding:2px; border-left:#B9D3E6 solid 1px; border-bottom:#B9D3E6 solid 1px;}
			.tablebody2 {background-color:#F0F1F2; padding:2px; border-bottom:#B9D3E6 solid 1px;}
			.tablebody3 {background-color:#F0F1F2; padding:2px; border-right:#B9D3E6 solid 1px; border-bottom:#B9D3E6 solid 1px;}
			.tablebodytext {font-family: Arial, Helvetica, sans-serif; font-size:12px; color:#000000;}
			.tableheadtext {font-family: Arial, Helvetica, sans-serif; font-size:12px; color:#000000;}
			.tablelinebottom {border-bottom:1pt solid #D1D1D1}
			.notesmall {font-family: Arial, Helvetica, sans-serif; font-size:11px; color:#008400; font-weight:normal;}
			.tablebody1_sel {background-color:#E0EBF1; padding:2px; border-left:#B9D3E6 solid 1px; border-bottom:#B9D3E6 solid 1px;}
			.tablebody2_sel {background-color:#E0EBF1; padding:2px; border-bottom:#B9D3E6 solid 1px;}
			.tablebody3_sel {background-color:#E0EBF1; padding:2px; border-right:#B9D3E6 solid 1px; border-bottom:#B9D3E6 solid 1px;}
			</style>
			</head>
			<body bgcolor="FFFFFF" leftmargin="2" topmargin="2" marginwidth="2" marginheight="2">
			';
        $HTML_COMMON = '
					<table border="0" cellspacing="1" cellpadding="3" width="100%">
						<tr>
							<td valign="top" align="center" class="tablehead1" width="48%" nowrap><font class="tableheadtext">' . GetMessage("STAT_VISIT") . '</font></td>
							<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tableheadtext">' . GetMessage("STAT_TODAY") . '</font><br><font class="notesmall">' . $now_date . '</font></td>
							<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tableheadtext">' . GetMessage("STAT_YESTERDAY") . '</font><br><font class="notesmall">' . $yesterday_date . '</font></td>
							<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tableheadtext">' . GetMessage("STAT_BEFORE_YESTERDAY") . '</font><br><font class="notesmall">' . $bef_yesterday_date . '</font></td>
							<td valign="top" align="center" class="tablehead3" width="13%" nowrap><font class="tableheadtext">' . GetMessage("STAT_TOTAL_1") . '</font></td>
						</tr>
						<tr valign="top">
							<td valign="top" class="tablebody1" width="48%" nowrap><font class="tablebodytext">' . GetMessage("STAT_HITS") . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["TODAY_HITS"] . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["YESTERDAY_HITS"] . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["B_YESTERDAY_HITS"] . '</font></td>
							<td valign="top" align="right" class="tablebody3" width="13%" nowrap><font class="tablebodytext">' . $arComm["TOTAL_HITS"] . '&nbsp;&nbsp;</font></td>
						</tr>
						<tr valign="top">
							<td valign="top" class="tablebody1" width="48%" nowrap><font class="tablebodytext">' . GetMessage("STAT_HOSTS") . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["TODAY_HOSTS"] . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["YESTERDAY_HOSTS"] . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["B_YESTERDAY_HOSTS"] . '</font></td>
							<td valign="top" align="right" class="tablebody3" width="13%" nowrap><font class="tablebodytext">' . $arComm["TOTAL_HOSTS"] . '&nbsp;&nbsp;</font></td>
						</tr>
						<tr valign="top">
							<td valign="top" class="tablebody1" width="48%" nowrap><font class="tablebodytext">' . GetMessage("STAT_SESSIONS") . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["TODAY_SESSIONS"] . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["YESTERDAY_SESSIONS"] . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["B_YESTERDAY_SESSIONS"] . '</font></td>
							<td valign="top" align="right" class="tablebody3" width="13%" nowrap><font class="tablebodytext">' . $arComm["TOTAL_SESSIONS"] . '&nbsp;&nbsp;</font></td>
						</tr>
						<tr valign="top">
							<td valign="top" class="tablebody1" width="48%" nowrap><font class="tablebodytext">' . GetMessage("STAT_C_EVENTS") . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["TODAY_EVENTS"] . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["YESTERDAY_EVENTS"] . '</font></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap><font class="tablebodytext">' . $arComm["B_YESTERDAY_EVENTS"] . '</font></td>
							<td valign="top" align="right" class="tablebody3" width="13%" nowrap><font class="tablebodytext">' . $arComm["TOTAL_EVENTS"] . '&nbsp;&nbsp;</font></td>
						</tr>
						<tr valign="top">
							<td valign="top" class="tablebody1" width="48%" nowrap>
								<table border="0" cellspacing="0" cellpadding="0" width="100%">
									<tr>
										<td width="100%"><font class="tablebodytext">' . GetMessage("STAT_GUESTS") . '</font></td>
										<td width="0%" align="right" class="tablelinebottom" nowrap><font class="tablebodytext">' . GetMessage("STAT_TOTAL") . '</font></td>
									</tr>
									<tr>
										<td></td>
										<td class="tablelinebottom" align="right" nowrap><font class="tablebodytext">' . GetMessage("STAT_NEW") . '</font></td>
									</tr>
									<tr>
										<td></td>
										<td align="right" nowrap><font class="tablebodytext">' . GetMessage("STAT_ONLINE") . '</font></td>
									</tr>
								</table></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap>
								<table cellspacing=0 cellpadding=0 width="100%">
									<tr><td class="tablelinebottom" align="right" width="100%"><font class="tablebodytext">' . $arComm["TODAY_GUESTS"] . '</font></td></tr>
									<tr><td class="tablelinebottom" align="right"><font class="tablebodytext">' . $arComm["TODAY_NEW_GUESTS"] . '</font></td></tr>
									<tr><td align="right"><font class="tablebodytext">' . $arComm["ONLINE_GUESTS"] . '</font></td></tr>
								</table></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap>
								<table cellspacing=0 cellpadding=0 width="100%">
									<tr><td class="tablelinebottom" align="right" width="100%"><font class="tablebodytext">' . $arComm["YESTERDAY_GUESTS"] . '</font></td></tr>
									<tr><td class="tablelinebottom" align="right"><font class="tablebodytext">' . $arComm["YESTERDAY_NEW_GUESTS"] . '</font></td></tr>
								</table></td>
							<td valign="top" align="right" class="tablebody2" width="13%" nowrap>
								<table cellspacing=0 cellpadding=0 width="100%">
									<tr><td align="right" class="tablelinebottom" width="100%"><font class="tablebodytext">' . $arComm["B_YESTERDAY_GUESTS"] . '</font></td></tr>
									<tr><td class="tablelinebottom" align="right"><font class="tablebodytext">' . $arComm["B_YESTERDAY_NEW_GUESTS"] . '</font></td></tr>
								</table></td>
							<td valign="top" align="right" class="tablebody3" width="13%" nowrap>
								<table cellspacing=0 cellpadding=0 width="100%">
									<tr><td class="tablelinebottom" align="right" width="100%"><font class="tablebodytext">' . $arComm["TOTAL_GUESTS"] . '&nbsp;&nbsp;</font></td></tr>
									<tr><td class="tablelinebottom" align="right"><font class="tablebodytext">&nbsp;</font></td></tr>
								</table></td>
						</tr>
					</table>
				</td>
			</tr>
			</table>
			';
        $HTML_ADV = '
			<font class="tablebodytext">' . GetMessage("STAT_ADV") . ' (' . GetMessage("STAT_DIRECT_SESSIONS") . ') (Top 10):</font><br>
			<table border="0" cellspacing="1" cellpadding="3" width="100%">
				<tr>
					<td valign="top" align="center" class="tablehead1" width="48%" nowrap><font class="tableheadtext">' . GetMessage("STAT_ADV_NAME") . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tableheadtext">' . GetMessage("STAT_TODAY") . '</font><br><font class="notesmall">' . $now_date . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tableheadtext">' . GetMessage("STAT_YESTERDAY") . '</font><br><font class="notesmall">' . $yesterday_date . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tableheadtext">' . GetMessage("STAT_BEFORE_YESTERDAY") . '</font><br><font class="notesmall">' . $bef_yesterday_date . '</font></td>
					<td valign="top" align="center" class="tablehead3" width="13%" nowrap><font class="tableheadtext">' . GetMessage("STAT_TOTAL_1") . '</font></td>
				</tr>
			';
        $i = 0;
        $total_SESSIONS_TODAY = 0;
        $total_SESSIONS_YESTERDAY = 0;
        $total_SESSIONS_BEF_YESTERDAY = 0;
        $total_SESSIONS = 0;
        while ($ar = $adv->Fetch()) {
            $i++;
            $total_SESSIONS_TODAY += $ar["SESSIONS_TODAY"];
            $total_SESSIONS_YESTERDAY += $ar["SESSIONS_YESTERDAY"];
            $total_SESSIONS_BEF_YESTERDAY += $ar["SESSIONS_BEF_YESTERDAY"];
            $total_SESSIONS += $ar["SESSIONS"];
            if ($i <= 10) {
                $HTML_ADV .= '
				<tr>
					<td valign="top" class="tablebody1"><font class="tablebodytext">[' . $ar["ID"] . ']&nbsp;' . $ar["REFERER1"] . '&nbsp;/&nbsp;' . $ar["REFERER2"] . '</font></td>
					<td valign="top" align="right" class="tablebody2"><font class="tablebodytext">&nbsp;' . ($ar["SESSIONS_TODAY"] > 0 ? $ar["SESSIONS_TODAY"] : "&nbsp;") . '</font></td>
					<td valign="top" align="right" class="tablebody2"><font class="tablebodytext">&nbsp;' . ($ar["SESSIONS_YESTERDAY"] > 0 ? $ar["SESSIONS_YESTERDAY"] : "&nbsp;") . '</font></td>
					<td valign="top" align="right" class="tablebody2"><font class="tablebodytext">&nbsp;' . ($ar["SESSIONS_BEF_YESTERDAY"] > 0 ? $ar["SESSIONS_BEF_YESTERDAY"] : "&nbsp;") . '</font></td>
					<td valign="top" align="right" class="tablebody3"><font class="tablebodytext">&nbsp;' . ($ar["SESSIONS"] > 0 ? $ar["SESSIONS"] : "&nbsp;") . '</font></td>
				</tr>
				';
            }
        }
        $HTML_ADV .= '
				<tr>
					<td valign="top" align="right" class="tablebody1_sel" style="padding:3px"><font class="tablebodytext">' . GetMessage("STAT_TOTAL") . '</font></td>
					<td valign="top" align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">&nbsp;' . ($total_SESSIONS_TODAY > 0 ? $total_SESSIONS_TODAY : "&nbsp;") . '</font></td>
					<td valign="top" align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">&nbsp;' . ($total_SESSIONS_YESTERDAY > 0 ? $total_SESSIONS_YESTERDAY : "&nbsp;") . '</font></td>
					<td valign="top" align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">&nbsp;' . ($total_SESSIONS_BEF_YESTERDAY > 0 ? $total_SESSIONS_BEF_YESTERDAY : "&nbsp;") . '</font></td>
					<td valign="top" align="right" class="tablebody3_sel" style="padding:3px"><font class="tablebodytext">&nbsp;' . ($total_SESSIONS > 0 ? $total_SESSIONS : "&nbsp;") . '</font></td>
			</table>
			';
        $HTML_EVENTS = '
			<font class="tablebodytext">' . GetMessage("STAT_EVENTS_2") . ' (Top 10):</font><br>
			<table border="0" cellspacing="1" cellpadding="3" width="100%">
				<tr>
					<td valign="top" align="center" class="tablehead1" width="48%" nowrap><font class="tableheadtext">' . GetMessage("STAT_EVENT") . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap>
						<font class="tablebodytext">' . GetMessage("STAT_TODAY") . '</font><br><font class="notesmall">' . $now_date . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap>
						<font class="tablebodytext">' . GetMessage("STAT_YESTERDAY") . '</font><br><font class="notesmall">' . $yesterday_date . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap>
						<font class="tablebodytext">' . GetMessage("STAT_BEFORE_YESTERDAY") . '</font><br><font class="notesmall">' . $bef_yesterday_date . '</font></td>
					<td valign="top" align="center" class="tablehead3" width="13%" nowrap>
						<font class="tablebodytext">' . GetMessage("STAT_TOTAL_1") . '</font></td>
				</tr>
			';
        $i = 0;
        $total_TODAY_COUNTER = 0;
        $total_YESTERDAY_COUNTER = 0;
        $total_B_YESTERDAY_COUNTER = 0;
        $total_TOTAL_COUNTER = 0;
        while ($er = $events->Fetch()) {
            $i++;
            $total_TODAY_COUNTER += intval($er["TODAY_COUNTER"]);
            $total_YESTERDAY_COUNTER += intval($er["YESTERDAY_COUNTER"]);
            $total_B_YESTERDAY_COUNTER += intval($er["B_YESTERDAY_COUNTER"]);
            $total_TOTAL_COUNTER += intval($er["TOTAL_COUNTER"]);
            if ($i <= 10) {
                $HTML_EVENTS .= '
				<tr valign="top">
					<td valign="top" class="tablebody1" width="0%" nowrap><font class="tablebodytext">' . $er["EVENT"] . '</font></td>
					<td valign="top" align="right" class="tablebody2" width="0%" nowrap><font class="tablebodytext">' . ($er["TODAY_COUNTER"] > 0 ? $er["TODAY_COUNTER"] : "&nbsp;") . '</font></td>
					<td valign="top" align="right" class="tablebody2" width="0%" nowrap><font class="tablebodytext">' . ($er["YESTERDAY_COUNTER"] > 0 ? $er["YESTERDAY_COUNTER"] : "&nbsp;") . '</font></td>
					<td valign="top" align="right" class="tablebody2" width="0%" nowrap><font class="tablebodytext">' . ($er["B_YESTERDAY_COUNTER"] > 0 ? $er["B_YESTERDAY_COUNTER"] : "&nbsp;") . '</font></td>
					<td valign="top" align="right" class="tablebody3" width="0%" nowrap><font class="tablebodytext">' . ($er["TOTAL_COUNTER"] > 0 ? $er["TOTAL_COUNTER"] : "&nbsp;") . '</font></td>
				</tr>
				';
            }
        }
        $HTML_EVENTS .= '
				<tr valign="top">
					<td align="right" class="tablebody1_sel" style="padding:3px"><font class="tablebodytext">' . GetMessage("STAT_TOTAL") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_TODAY_COUNTER > 0 ? $total_TODAY_COUNTER : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_YESTERDAY_COUNTER > 0 ? $total_YESTERDAY_COUNTER : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_B_YESTERDAY_COUNTER > 0 ? $total_B_YESTERDAY_COUNTER : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody3_sel" style="padding:3px"><font class="tablebodytext">' . ($total_TOTAL_COUNTER > 0 ? $total_TOTAL_COUNTER : "&nbsp;") . '</font></td>
			</table>
			';
        $HTML_REFERERS = '
			<font class="tablebodytext">' . GetMessage("STAT_REFERERS") . ' (Top 10):</font><br>
			<table border="0" cellspacing="1" cellpadding="3" width="100%">
				<tr>
					<td valign="top" align="center" class="tablehead1" width="48%" nowrap><font class="tableheadtext">' . GetMessage("STAT_SERVER") . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_TODAY") . '</font><br><font class="notesmall">' . $now_date . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_YESTERDAY") . '</font><br><font class="notesmall">' . $yesterday_date . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_BEFORE_YESTERDAY") . '</font><br><font class="notesmall">' . $bef_yesterday_date . '</font></td>
					<td valign="top" align="center" class="tablehead3" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_TOTAL_1") . '</font></td>
				</tr>
			';
        $i = 0;
        $total_TODAY_REFERERS = 0;
        $total_YESTERDAY_REFERERS = 0;
        $total_B_YESTERDAY_REFERERS = 0;
        $total_TOTAL_REFERERS = 0;
        while ($rr = $referers->Fetch()) {
            $i++;
            $total_TODAY_REFERERS += $rr["TODAY_REFERERS"];
            $total_YESTERDAY_REFERERS += $rr["YESTERDAY_REFERERS"];
            $total_B_YESTERDAY_REFERERS += $rr["B_YESTERDAY_REFERERS"];
            $total_TOTAL_REFERERS += $rr["TOTAL_REFERERS"];
            if ($i <= 10) {
                $HTML_REFERERS .= '
				<tr>
					<td valign="top" class="tablebody1" nowrap><font class="tablebodytext">' . $rr["SITE_NAME"] . '</font></td>
					<td align="right" class="tablebody2"><font class="tablebodytext">' . ($rr["TODAY_REFERERS"] > 0 ? $rr["TODAY_REFERERS"] : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2"><font class="tablebodytext">' . ($rr["YESTERDAY_REFERERS"] > 0 ? $rr["YESTERDAY_REFERERS"] : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2"><font class="tablebodytext">' . ($rr["B_YESTERDAY_REFERERS"] > 0 ? $rr["B_YESTERDAY_REFERERS"] : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody3"><font class="tablebodytext">' . ($rr["TOTAL_REFERERS"] > 0 ? $rr["TOTAL_REFERERS"] : "&nbsp;") . '</font></td>
				</tr>
				';
            }
        }
        $HTML_REFERERS .= '
				<tr valign="top">
					<td align="right" class="tablebody1_sel" style="padding:3px"><font class="tablebodytext">' . GetMessage("STAT_TOTAL") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_TODAY_REFERERS > 0 ? $total_TODAY_REFERERS : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_YESTERDAY_REFERERS > 0 ? $total_YESTERDAY_REFERERS : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_B_YESTERDAY_REFERERS > 0 ? $total_B_YESTERDAY_REFERERS : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody3_sel" style="padding:3px"><font class="tablebodytext">' . ($total_TOTAL_REFERERS > 0 ? $total_TOTAL_REFERERS : "&nbsp;") . '</font></td>
			</table>
			';
        $HTML_PHRASES = '
			<font class="tablebodytext">' . GetMessage("STAT_PHRASES") . ' (Top 10):</font><br>
			<table border="0" cellspacing="1" cellpadding="3" width="100%">
				<tr>
					<td valign="top" align="center" class="tablehead1" width="48%" nowrap><font class="tableheadtext">' . GetMessage("STAT_PHRASE") . '</td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_TODAY") . '</font><br><font class="notesmall">' . $now_date . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_YESTERDAY") . '</font><br><font class="notesmall">' . $yesterday_date . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_BEFORE_YESTERDAY") . '</font><br><font class="notesmall">' . $bef_yesterday_date . '</font></td>
					<td valign="top" align="center" class="tablehead3" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_TOTAL_1") . '</font></td>
				</tr>
			';
        $i = 0;
        $total_TODAY_PHRASES = 0;
        $total_YESTERDAY_PHRASES = 0;
        $total_B_YESTERDAY_PHRASES = 0;
        $total_TOTAL_PHRASES = 0;
        while ($pr = $phrases->GetNext()) {
            $i++;
            $total_TODAY_PHRASES += $pr["TODAY_PHRASES"];
            $total_YESTERDAY_PHRASES += $pr["YESTERDAY_PHRASES"];
            $total_B_YESTERDAY_PHRASES += $pr["B_YESTERDAY_PHRASES"];
            $total_TOTAL_PHRASES += $pr["TOTAL_PHRASES"];
            if ($i <= 10) {
                $HTML_PHRASES .= '
				<tr valign="top">
					<td valign="top" class="tablebody1" width="0%" nowrap><font class="tablebodytext">' . TruncateText($pr["PHRASE"], 50) . '</font></td>
					<td align="right" class="tablebody2"><font class="tablebodytext">' . ($pr["TODAY_PHRASES"] > 0 ? $pr["TODAY_PHRASES"] : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2"><font class="tablebodytext">' . ($pr["YESTERDAY_PHRASES"] > 0 ? $pr["YESTERDAY_PHRASES"] : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2"><font class="tablebodytext">' . ($pr["B_YESTERDAY_PHRASES"] > 0 ? $pr["B_YESTERDAY_PHRASES"] : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody3"><font class="tablebodytext">' . ($pr["TOTAL_PHRASES"] > 0 ? $pr["TOTAL_PHRASES"] : "&nbsp;") . '</font></td>
				</tr>
				';
            }
        }
        $HTML_PHRASES .= '
				<tr valign="top">
					<td align="right" class="tablebody1_sel" style="padding:3px"><font class="tablebodytext">' . GetMessage("STAT_TOTAL") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_TODAY_PHRASES > 0 ? $total_TODAY_PHRASES : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_YESTERDAY_PHRASES > 0 ? $total_YESTERDAY_PHRASES : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_B_YESTERDAY_PHRASES > 0 ? $total_B_YESTERDAY_PHRASES : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody3_sel" style="padding:3px"><font class="tablebodytext">' . ($total_TOTAL_PHRASES > 0 ? $total_TOTAL_PHRASES : "&nbsp;") . '</font></td>
			</table>
			';
        $HTML_SEARCHERS = '
			<font class="tablebodytext">' . GetMessage("STAT_SITE_INDEXING") . ' (Top 10):</font><br>
			<table border="0" cellspacing="1" cellpadding="3" width="100%">
				<tr>
					<td valign="top" align="center" class="tablehead1" width="48%" nowrap><font class="tableheadtext">' . GetMessage("STAT_SEARCHER") . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_TODAY") . '</font><br><font class="notesmall">' . $now_date . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_YESTERDAY") . '</font><br><font class="notesmall">' . $yesterday_date . '</font></td>
					<td valign="top" align="center" class="tablehead2" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_BEFORE_YESTERDAY") . '</font><br><font class="notesmall">' . $bef_yesterday_date . '</font></td>
					<td valign="top" align="center" class="tablehead3" width="13%" nowrap><font class="tablebodytext">' . GetMessage("STAT_TOTAL_1") . '</font></td>
				</tr>
			';
        $i = 0;
        $total_TODAY_HITS = 0;
        $total_YESTERDAY_HITS = 0;
        $total_B_YESTERDAY_HITS = 0;
        $total_TOTAL_HITS = 0;
        while ($fr = $searchers->Fetch()) {
            $i++;
            $total_TODAY_HITS += $fr["TODAY_HITS"];
            $total_YESTERDAY_HITS += $fr["YESTERDAY_HITS"];
            $total_B_YESTERDAY_HITS += $fr["B_YESTERDAY_HITS"];
            $total_TOTAL_HITS += $fr["TOTAL_HITS"];
            if ($i <= 10) {
                $HTML_SEARCHERS .= '
				<tr valign="top">
					<td valign="top" class="tablebody1" width="0%" nowrap><font class="tablebodytext">' . $fr["NAME"] . '</font></td>
					<td align="right" class="tablebody2"><font class="tablebodytext">' . ($fr["TODAY_HITS"] > 0 ? $fr["TODAY_HITS"] : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2"><font class="tablebodytext">' . ($fr["YESTERDAY_HITS"] > 0 ? $fr["YESTERDAY_HITS"] : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2"><font class="tablebodytext">' . ($fr["B_YESTERDAY_HITS"] > 0 ? $fr["B_YESTERDAY_HITS"] : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody3"><font class="tablebodytext">' . ($fr["TOTAL_HITS"] > 0 ? $fr["TOTAL_HITS"] : "&nbsp;") . '</font></td>
				</tr>
				';
            }
        }
        $HTML_SEARCHERS .= '
				<tr valign="top">
					<td align="right" class="tablebody1_sel" style="padding:3px"><font class="tablebodytext">' . GetMessage("STAT_TOTAL") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_TODAY_HITS > 0 ? $total_TODAY_HITS : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_YESTERDAY_HITS > 0 ? $total_YESTERDAY_HITS : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody2_sel" style="padding:3px"><font class="tablebodytext">' . ($total_B_YESTERDAY_HITS > 0 ? $total_B_YESTERDAY_HITS : "&nbsp;") . '</font></td>
					<td align="right" class="tablebody3_sel" style="padding:3px"><font class="tablebodytext">' . ($total_TOTAL_HITS > 0 ? $total_TOTAL_HITS : "&nbsp;") . '</font></td>
			</table>
			';
        $HTML_FOOTER = '
			</body>
			</html>
			';
        $arEventFields = array("SERVER_TIME" => $now_full_date, "HTML_HEADER" => $HTML_HEADER, "HTML_FOOTER" => $HTML_FOOTER, "HTML_COMMON" => $HTML_COMMON, "HTML_ADV" => $HTML_ADV, "HTML_EVENTS" => $HTML_EVENTS, "HTML_REFERERS" => $HTML_REFERERS, "HTML_PHRASES" => $HTML_PHRASES, "HTML_SEARCHERS" => $HTML_SEARCHERS, "EMAIL_TO" => COption::GetOptionString("main", "email_from", ""));
        /*
        echo $HTML_HEADER."<br>";
        echo $HTML_FOOTER."<br>";
        echo $HTML_COMMON."<br>";
        echo $HTML_ADV."<br>";
        echo $HTML_EVENTS."<br>";
        echo $HTML_REFERERS."<br>";
        echo $HTML_PHRASES."<br>";
        echo $HTML_SEARCHERS."<br>";
        die();
        */
        CEvent::Send("STATISTIC_DAILY_REPORT", $arSite["ID"], $arEventFields);
        $MESS = $OLD_MESS;
    }
    return "SendDailyStatistics();";
}
Beispiel #13
0
    function ReallyKeep()
    {
        global $USER, $APPLICATION, $STOP_SAVE_STATISTIC, $STOP_MESSAGE, $STOP_REDIRECT_URL, $STOP, $STOP_LIST_ID, $STOP_MESSAGE_LID;
        $DB = CDatabase::GetModuleConnection('statistic');
        $SITE_ID = "";
        if (defined("ADMIN_SECTION") && ADMIN_SECTION === true) {
            $sql_site = "null";
        } elseif (defined("SITE_ID")) {
            $sql_site = "'" . $DB->ForSql(SITE_ID, 2) . "'";
            $SITE_ID = SITE_ID;
        } else {
            $sql_site = "null";
        }
        $ADV_NA = COption::GetOptionString("statistic", "ADV_NA");
        __SetReferer("referer1", "REFERER1_SYN");
        __SetReferer("referer2", "REFERER2_SYN");
        __SetReferer("referer3", "REFERER3_SYN");
        $SAVE_HITS = COption::GetOptionString("statistic", "SAVE_HITS") == "N" ? "N" : "Y";
        $SAVE_VISITS = COption::GetOptionString("statistic", "SAVE_VISITS") == "N" ? "N" : "Y";
        $SAVE_REFERERS = COption::GetOptionString("statistic", "SAVE_REFERERS") == "N" ? "N" : "Y";
        $SAVE_PATH_DATA = COption::GetOptionString("statistic", "SAVE_PATH_DATA") == "N" ? "N" : "Y";
        $stmp = time();
        $hour = date("G", $stmp);
        // 0..23
        $weekday = date("w", $stmp);
        // 0..6
        if ($weekday == 0) {
            $weekday = 7;
        }
        $month = date("n", $stmp);
        // 1..12
        if ($STOP_SAVE_STATISTIC != "N" or $STOP != "Y") {
            if (isset($_SESSION["SESS_ADD_TO_FAVORITES"]) && $_SESSION["SESS_ADD_TO_FAVORITES"] == "Y") {
                $FAVORITES = "Y";
                $_SESSION["SESS_ADD_TO_FAVORITES"] = "";
            } else {
                $FAVORITES = "N";
            }
            $ERROR_404 = defined("ERROR_404") && ERROR_404 == "Y" ? "Y" : "N";
            $DB_now = $DB->GetNowFunction();
            // save function for use in sql
            $DB_now_date = $DB->GetNowDate();
            // save function for use in sql
            $STOP_LIST_ID = intval($STOP_LIST_ID);
            if ($ERROR_404 == "Y") {
                init_get_params($APPLICATION->GetCurUri());
            }
            $IS_USER_AUTHORIZED = intval($_SESSION["SESS_LAST_USER_ID"]) > 0 && is_object($USER) && $USER->IsAuthorized() ? "Y" : "N";
            stat_session_register("SESS_SEARCHER_ID");
            stat_session_register("SESS_SEARCHER_NAME");
            stat_session_register("SESS_SEARCHER_CHECK_ACTIVITY");
            stat_session_register("SESS_SEARCHER_SAVE_STATISTIC");
            stat_session_register("SESS_SEARCHER_HIT_KEEP_DAYS");
            stat_session_register("SESS_LAST_PROTOCOL");
            stat_session_register("SESS_LAST_URI");
            stat_session_register("SESS_LAST_HOST");
            stat_session_register("SESS_LAST_PAGE");
            stat_session_register("SESS_LAST_DIR");
            stat_session_register("SESS_HTTP_REFERER");
            stat_session_register("SESS_COUNTRY_ID");
            stat_session_register("SESS_CITY_ID");
            stat_session_register("SESS_SESSION_ID");
            stat_session_register("SESS_REFERER_ID");
            stat_session_register("FROM_SEARCHER_ID");
            stat_session_register("SESS_FROM_SEARCHERS");
            stat_session_register("SESS_REQUEST_URI_CHANGE");
            stat_session_register("SESS_LAST_DIR_ID");
            stat_session_register("SESS_LAST_PAGE_ID");
            stat_session_register("SESS_GRABBER_STOP_TIME");
            stat_session_register("SESS_GRABBER_DEFENCE_STACK");
            stat_session_register("ACTIVITY_EXCEEDING_NOTIFIED");
            // SESSION_DATA_ID will be false when there is no sessions stored
            // true when session was not found in database
            // and an integer when was found and populated to $SESSION array
            $SESSION_DATA_ID = CKeepStatistics::RestoreSession();
            // Let's check activity limit
            $BLOCK_ACTIVITY = CStatistics::BlockVisitorActivity();
            // Activity under the limit
            if (!$BLOCK_ACTIVITY) {
                //Check if searcher was not deleted from searchers list
                if (intval($_SESSION["SESS_SEARCHER_ID"]) > 0) {
                    $strSql = "\n\t\t\t\t\t\tSELECT ID\n\t\t\t\t\t\tFROM b_stat_searcher\n\t\t\t\t\t\tWHERE ID = '" . intval($_SESSION["SESS_SEARCHER_ID"]) . "'\n\t\t\t\t\t";
                    $z = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                    if (!$z->Fetch()) {
                        unset($_SESSION["SESS_SEARCHER_ID"]);
                    }
                }
                // We did not check for searcher
                if (strlen($_SESSION["SESS_SEARCHER_ID"]) <= 0) {
                    // is it searcher hit?
                    $strSql = "\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\tID, NAME, SAVE_STATISTIC, HIT_KEEP_DAYS, CHECK_ACTIVITY\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\tb_stat_searcher\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tACTIVE = 'Y'\n\t\t\t\t\t\tand " . $DB->Length("USER_AGENT") . ">0\n\t\t\t\t\t\tand upper('" . $DB->ForSql($_SERVER["HTTP_USER_AGENT"], 500) . "') like " . $DB->Concat("'%'", "upper(USER_AGENT)", "'%'") . "\n\t\t\t\t\t\tORDER BY " . $DB->Length("USER_AGENT") . " desc, ID\n\t\t\t\t\t\t";
                    $z = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                    if ($zr = $z->Fetch()) {
                        $_SESSION["SESS_SEARCHER_ID"] = intval($zr["ID"]);
                        $_SESSION["SESS_SEARCHER_NAME"] = $zr["NAME"];
                        $_SESSION["SESS_SEARCHER_CHECK_ACTIVITY"] = $zr["CHECK_ACTIVITY"];
                        $_SESSION["SESS_SEARCHER_SAVE_STATISTIC"] = $zr["SAVE_STATISTIC"];
                        $_SESSION["SESS_SEARCHER_HIT_KEEP_DAYS"] = $zr["HIT_KEEP_DAYS"];
                        //Here was warning "A session is active. You cannot change the session module's ini settings at this time."
                        //@ini_set("url_rewriter.tags", "");
                    }
                    $_SESSION["SESS_SEARCHER_ID"] = intval($_SESSION["SESS_SEARCHER_ID"]);
                }
                /************************************************
                					Searcher section
                			************************************************/
                // searcher detected
                if (intval($_SESSION["SESS_SEARCHER_ID"]) > 0) {
                    $_SESSION["SESS_SEARCHER_ID"] = intval($_SESSION["SESS_SEARCHER_ID"]);
                    // let's update day counter
                    $arFields = array("DATE_LAST" => $DB_now, "TOTAL_HITS" => "TOTAL_HITS + 1");
                    $rows = $DB->Update("b_stat_searcher_day", $arFields, "WHERE SEARCHER_ID='" . $_SESSION["SESS_SEARCHER_ID"] . "' and DATE_STAT=" . $DB_now_date, "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                    // there is no stat for the day yet
                    if (intval($rows) <= 0) {
                        // add it
                        $arFields_i = array("DATE_STAT" => $DB_now_date, "DATE_LAST" => $DB_now, "SEARCHER_ID" => $_SESSION["SESS_SEARCHER_ID"], "TOTAL_HITS" => 1);
                        $DB->Insert("b_stat_searcher_day", $arFields_i, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                    } elseif (intval($rows) > 1) {
                        $strSql = "SELECT ID FROM b_stat_searcher_day WHERE SEARCHER_ID='" . $_SESSION["SESS_SEARCHER_ID"] . "' and DATE_STAT=" . $DB_now_date . " ORDER BY ID";
                        $i = 0;
                        $rs = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                        while ($ar = $rs->Fetch()) {
                            $i++;
                            if ($i > 1) {
                                $strSql = "DELETE FROM b_stat_searcher_day WHERE ID = " . $ar["ID"];
                                $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                            }
                        }
                    }
                    // save indexed page if neccessary
                    if ($_SESSION["SESS_SEARCHER_SAVE_STATISTIC"] == "Y") {
                        $sql_HIT_KEEP_DAYS = strlen($_SESSION["SESS_SEARCHER_HIT_KEEP_DAYS"]) > 0 ? intval($_SESSION["SESS_SEARCHER_HIT_KEEP_DAYS"]) : "null";
                        $arFields = array("DATE_HIT" => $DB_now, "SEARCHER_ID" => intval($_SESSION["SESS_SEARCHER_ID"]), "URL" => "'" . $DB->ForSql(__GetFullRequestUri(), 2000) . "'", "URL_404" => "'" . $ERROR_404 . "'", "IP" => "'" . $DB->ForSql($_SERVER["REMOTE_ADDR"], 15) . "'", "USER_AGENT" => "'" . $DB->ForSql($_SERVER["HTTP_USER_AGENT"], 500) . "'", "HIT_KEEP_DAYS" => $sql_HIT_KEEP_DAYS, "SITE_ID" => $sql_site);
                        $id = $DB->Insert("b_stat_searcher_hit", $arFields, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                        if ($ERROR_404 == "N") {
                            CStatistics::Set404("b_stat_searcher_hit", "ID = " . intval($id), array("URL_404" => "Y"));
                        }
                    }
                } else {
                    /************************************************
                    					Visitor section
                    			************************************************/
                    /************************************************
                    				Variables which describe current page
                    			************************************************/
                    $CURRENT_DIR = __GetCurrentDir();
                    $CURRENT_PAGE = __GetCurrentPage();
                    $CURRENT_PROTOCOL = CMain::IsHTTPS() ? "https://" : "http://";
                    // protocol
                    $CURRENT_PORT = $_SERVER["SERVER_PORT"];
                    // port
                    $CURRENT_HOST = $_SERVER["HTTP_HOST"];
                    // domain
                    $CURRENT_PAGE = __GetFullRequestUri($CURRENT_PAGE);
                    // w/o parameters
                    $CURRENT_URI = __GetFullRequestUri();
                    // with params
                    $CURRENT_DIR = __GetFullRequestUri($CURRENT_DIR);
                    // catalog
                    /************************************************
                    					Country detection
                    			************************************************/
                    if (strlen($_SESSION["SESS_COUNTRY_ID"]) <= 0) {
                        $obCity = new CCity();
                        $_SESSION["SESS_COUNTRY_ID"] = $obCity->GetCountryCode();
                        $_SESSION["SESS_CITY_ID"] = $obCity->GetCityID();
                    }
                    /************************************************
                    					IP => number
                    			************************************************/
                    $REMOTE_ADDR_NUMBER = ip2number($_SERVER["REMOTE_ADDR"]);
                    /************************************************
                    					Advertising campaign
                    			************************************************/
                    CStatistics::Set_Adv();
                    /************************************************
                    					Guest ID detection
                    			************************************************/
                    $arGuest = CStatistics::Set_Guest();
                    // Setup default advertising campaign
                    if ($ADV_NA == "Y" && intval($_SESSION["SESS_ADV_ID"]) <= 0 && intval($_SESSION["SESS_LAST_ADV_ID"]) <= 0) {
                        $_SESSION["referer1"] = COption::GetOptionString("statistic", "AVD_NA_REFERER1");
                        $_SESSION["referer2"] = COption::GetOptionString("statistic", "AVD_NA_REFERER2");
                        CStatistics::Set_Adv();
                        $arGuest = CStatistics::Set_Guest();
                    }
                    /************************************************
                    					Session section
                    			************************************************/
                    $_SESSION["SESS_SESSION_ID"] = intval($_SESSION["SESS_SESSION_ID"]);
                    //session already exists
                    if ($_SESSION["SESS_SESSION_ID"] > 0) {
                        $SESSION_NEW = "N";
                        // update
                        $arFields = array("USER_ID" => intval($_SESSION["SESS_LAST_USER_ID"]), "USER_AUTH" => "'" . $IS_USER_AUTHORIZED . "'", "USER_AGENT" => "'" . $DB->ForSql($_SERVER["HTTP_USER_AGENT"], 500) . "'", "DATE_LAST" => $DB_now, "IP_LAST" => "'" . $DB->ForSql($_SERVER["REMOTE_ADDR"], 15) . "'", "IP_LAST_NUMBER" => $REMOTE_ADDR_NUMBER, "HITS" => "HITS + 1");
                        $rows = $DB->Update("b_stat_session", $arFields, "WHERE ID='" . $_SESSION["SESS_SESSION_ID"] . "'", "File: " . __FILE__ . "<br>Line: " . __LINE__);
                        // was cleaned up
                        if (intval($rows) <= 0) {
                            // store as new
                            $_SESSION["SESS_SESSION_ID"] = 0;
                            if ($ADV_NA == "Y" && intval($_SESSION["SESS_ADV_ID"]) <= 0 && intval($_SESSION["SESS_LAST_ADV_ID"]) <= 0) {
                                $_SESSION["referer1"] = COption::GetOptionString("statistic", "AVD_NA_REFERER1");
                                $_SESSION["referer2"] = COption::GetOptionString("statistic", "AVD_NA_REFERER2");
                            }
                            CStatistics::Set_Adv();
                            $arGuest = CStatistics::Set_Guest();
                        }
                    }
                    // it is new session
                    if ($_SESSION["SESS_SESSION_ID"] <= 0) {
                        $SESSION_NEW = "Y";
                        // save session data
                        $arFields = array("GUEST_ID" => intval($_SESSION["SESS_GUEST_ID"]), "NEW_GUEST" => "'" . $DB->ForSql($_SESSION["SESS_GUEST_NEW"]) . "'", "USER_ID" => intval($_SESSION["SESS_LAST_USER_ID"]), "USER_AUTH" => "'" . $DB->ForSql($IS_USER_AUTHORIZED) . "'", "URL_FROM" => "'" . $DB->ForSql($_SERVER["HTTP_REFERER"], 2000) . "'", "URL_TO" => "'" . $DB->ForSql($CURRENT_URI, 2000) . "'", "URL_TO_404" => "'" . $DB->ForSql($ERROR_404) . "'", "URL_LAST" => "'" . $DB->ForSql($CURRENT_URI, 2000) . "'", "URL_LAST_404" => "'" . $DB->ForSql($ERROR_404) . "'", "USER_AGENT" => "'" . $DB->ForSql($_SERVER["HTTP_USER_AGENT"], 500) . "'", "DATE_STAT" => $DB_now_date, "DATE_FIRST" => $DB_now, "DATE_LAST" => $DB_now, "IP_FIRST" => "'" . $DB->ForSql($_SERVER["REMOTE_ADDR"], 15) . "'", "IP_FIRST_NUMBER" => "'" . $DB->ForSql($REMOTE_ADDR_NUMBER) . "'", "IP_LAST" => "'" . $DB->ForSql($_SERVER["REMOTE_ADDR"], 15) . "'", "IP_LAST_NUMBER" => "'" . $DB->ForSql($REMOTE_ADDR_NUMBER) . "'", "PHPSESSID" => "'" . $DB->ForSql(session_id(), 255) . "'", "STOP_LIST_ID" => "'" . $DB->ForSql($STOP_LIST_ID) . "'", "COUNTRY_ID" => "'" . $DB->ForSql($_SESSION["SESS_COUNTRY_ID"], 2) . "'", "CITY_ID" => $_SESSION["SESS_CITY_ID"] > 0 ? intval($_SESSION["SESS_CITY_ID"]) : "null", "ADV_BACK" => "null", "FIRST_SITE_ID" => $sql_site, "LAST_SITE_ID" => $sql_site, "HITS" => 1);
                        // campaign?
                        if (intval($_SESSION["SESS_ADV_ID"]) > 0) {
                            $arFields["ADV_ID"] = intval($_SESSION["SESS_ADV_ID"]);
                            $arFields["ADV_BACK"] = "'N'";
                            $arFields["REFERER1"] = "'" . $DB->ForSql($_SESSION["referer1"], 255) . "'";
                            $arFields["REFERER2"] = "'" . $DB->ForSql($_SESSION["referer2"], 255) . "'";
                            $arFields["REFERER3"] = "'" . $DB->ForSql($_SESSION["referer3"], 255) . "'";
                        } elseif (intval($_SESSION["SESS_LAST_ADV_ID"]) > 0) {
                            $arFields["ADV_ID"] = intval($_SESSION["SESS_LAST_ADV_ID"]);
                            $arFields["ADV_BACK"] = "'Y'";
                            $arFields["REFERER1"] = "'" . $DB->ForSql($arGuest["last_referer1"], 255) . "'";
                            $arFields["REFERER2"] = "'" . $DB->ForSql($arGuest["last_referer2"], 255) . "'";
                        }
                        // look for the same IP?
                        $day_host_counter = 1;
                        $day_host_counter_site = strlen($SITE_ID) > 0 ? 1 : 0;
                        $strSql = "\n\t\t\t\t\t\t\tSELECT S.FIRST_SITE_ID\n\t\t\t\t\t\t\tFROM b_stat_session S\n\t\t\t\t\t\t\tWHERE S.IP_FIRST_NUMBER = " . $REMOTE_ADDR_NUMBER . "\n\t\t\t\t\t\t\t\tAND S.DATE_STAT=" . $DB_now_date . "\n\t\t\t\t\t\t";
                        $e = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                        while ($er = $e->Fetch()) {
                            $day_host_counter = 0;
                            if ($SITE_ID == $er["FIRST_SITE_ID"]) {
                                $day_host_counter_site = 0;
                                break;
                            }
                        }
                        $_SESSION["SESS_SESSION_ID"] = intval($DB->Insert("b_stat_session", $arFields, "File: " . __FILE__ . "<br>Line: " . __LINE__));
                        if ($ERROR_404 == "N") {
                            CStatistics::Set404("b_stat_session", "ID = " . $_SESSION["SESS_SESSION_ID"], array("URL_TO_404" => "Y", "URL_LAST_404" => "Y"));
                        }
                        $day_guest_counter = 0;
                        $new_guest_counter = 0;
                        // new guest
                        if ($_SESSION["SESS_GUEST_NEW"] == "Y") {
                            // update day statistic
                            $day_guest_counter = 1;
                            $new_guest_counter = 1;
                        } else {
                            // first hit for today
                            if ($_SESSION["SESS_LAST"] != "Y") {
                                // update day statistic
                                $day_guest_counter = 1;
                                $_SESSION["SESS_LAST"] = "Y";
                            }
                        }
                        // update day counter
                        $arFields = array("SESSIONS" => 1, "C_HOSTS" => intval($day_host_counter), "GUESTS" => intval($day_guest_counter), "NEW_GUESTS" => intval($new_guest_counter), "SESSION" => 1, "HOST" => intval($day_host_counter), "GUEST" => intval($day_guest_counter), "NEW_GUEST" => intval($new_guest_counter));
                        // when current day is already exists
                        // we have to update it
                        $rows = CTraffic::IncParam($arFields);
                        if ($rows !== false && $rows <= 0) {
                            // add new one
                            CStatistics::SetNewDay(1, 0, 1, 0, intval($new_guest_counter), 1);
                            // and update it
                            CTraffic::IncParam(array("SESSION" => 1, "HOST" => 1, "GUEST" => 1, "NEW_GUEST" => intval($new_guest_counter)));
                        }
                        // site is not defined
                        if (strlen($SITE_ID) > 0) {
                            // обновляем счетчик "по дням" для текущего сайта
                            $arFields = array("SESSIONS" => 1, "C_HOSTS" => intval($day_host_counter_site), "SESSION" => 1, "HOST" => intval($day_host_counter_site));
                            // обновим счетчики траффика для текущего дня
                            $rows = CTraffic::IncParam(array(), $arFields, $SITE_ID);
                            // если текущего дня для сайта в базе еще нет то
                            if ($rows !== false && intval($rows) <= 0) {
                                // добавляем его
                                CStatistics::SetNewDayForSite($SITE_ID, 1, 0, 1);
                                // обновим счетчики траффика для текущего дня
                                CTraffic::IncParam(array(), array("SESSION" => 1, "HOST" => 1), $SITE_ID);
                            }
                        }
                        // если страна определена то
                        if (strlen($_SESSION["SESS_COUNTRY_ID"]) > 0) {
                            $arFields = array("SESSIONS" => 1, "NEW_GUESTS" => $new_guest_counter);
                            CStatistics::UpdateCountry($_SESSION["SESS_COUNTRY_ID"], $arFields);
                        }
                        if ($_SESSION["SESS_CITY_ID"] > 0) {
                            $arFields = array("SESSIONS" => 1, "NEW_GUESTS" => $new_guest_counter);
                            CStatistics::UpdateCity($_SESSION["SESS_CITY_ID"], $arFields);
                        }
                        // обновляем гостя
                        $arFields = array("SESSIONS" => "SESSIONS + 1", "LAST_SESSION_ID" => $_SESSION["SESS_SESSION_ID"], "LAST_USER_AGENT" => "'" . $DB->ForSql($_SERVER["HTTP_USER_AGENT"], 500) . "'", "LAST_COUNTRY_ID" => "'" . $DB->ForSql($_SESSION["SESS_COUNTRY_ID"], 2) . "'", "LAST_CITY_ID" => $_SESSION["SESS_CITY_ID"] > 0 ? intval($_SESSION["SESS_CITY_ID"]) : "null");
                        //
                        if ($obCity) {
                            $arFields["LAST_CITY_INFO"] = "'" . $obCity->ForSQL() . "'";
                        }
                        // если это прямой заход по рекламной кампании то
                        if (intval($_SESSION["SESS_ADV_ID"]) > 0) {
                            // обновляем рекламную кампанию последнего захода гостя
                            $arFields["LAST_ADV_ID"] = intval($_SESSION["SESS_ADV_ID"]);
                            $arFields["LAST_ADV_BACK"] = "'N'";
                            $arFields["LAST_REFERER1"] = "'" . $DB->ForSql($_SESSION["referer1"], 255) . "'";
                            $arFields["LAST_REFERER2"] = "'" . $DB->ForSql($_SESSION["referer2"], 255) . "'";
                            $arFields["LAST_REFERER3"] = "'" . $DB->ForSql($_SESSION["referer3"], 255) . "'";
                        } elseif (intval($_SESSION["SESS_LAST_ADV_ID"]) > 0) {
                            // взводим флаг возврата на последнем заходе гостя
                            $arFields["LAST_ADV_BACK"] = "'Y'";
                            $arFields["LAST_REFERER1"] = "'" . $DB->ForSql($arGuest["last_referer1"], 255) . "'";
                            $arFields["LAST_REFERER2"] = "'" . $DB->ForSql($arGuest["last_referer2"], 255) . "'";
                        }
                        if ($_SESSION["SESS_GUEST_NEW"] == "Y") {
                            $arFields["FIRST_SESSION_ID"] = $_SESSION["SESS_SESSION_ID"];
                        }
                        $rows = $DB->Update("b_stat_guest", $arFields, "WHERE ID=" . intval($_SESSION["SESS_GUEST_ID"]), "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                        // обновляем рекламные кампании
                        if (intval($_SESSION["SESS_ADV_ID"]) > 0 || intval($_SESSION["SESS_LAST_ADV_ID"]) > 0) {
                            CStatistics::Update_Adv();
                        }
                        /************************************************
                        					Referring sites
                        			************************************************/
                        if ($SAVE_REFERERS != "N" && __GetReferringSite($PROT, $SN, $SN_WithoutPort, $PAGE_FROM) && strlen($SN) > 0 && $SN != $_SERVER["HTTP_HOST"]) {
                            $REFERER_LIST_ID = CStatistics::GetRefererListID($PROT, $SN, $PAGE_FROM, $CURRENT_URI, $ERROR_404, $sql_site);
                            /************************************************
                            					Search phrases
                            			************************************************/
                            if (substr($SN, 0, 4) == "www.") {
                                $sql = "('" . $DB->ForSql(substr($SN, 4), 255) . "' like P.DOMAIN or '" . $DB->ForSql($SN, 255) . "' like P.DOMAIN)";
                            } else {
                                $sql = "'" . $DB->ForSql($SN, 255) . "' like P.DOMAIN";
                            }
                            $strSql = "\n\t\t\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\t\t\tS.ID,\n\t\t\t\t\t\t\t\t\tS.NAME,\n\t\t\t\t\t\t\t\t\tP.DOMAIN,\n\t\t\t\t\t\t\t\t\tP.VARIABLE,\n\t\t\t\t\t\t\t\t\tP.CHAR_SET\n\t\t\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\t\t\tb_stat_searcher S,\n\t\t\t\t\t\t\t\t\tb_stat_searcher_params P\n\t\t\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\t\t\tS.ACTIVE='Y'\n\t\t\t\t\t\t\t\tand\tP.SEARCHER_ID = S.ID\n\t\t\t\t\t\t\t\tand\t" . $sql . "\n\t\t\t\t\t\t\t";
                            $q = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                            if ($qr = $q->Fetch()) {
                                $_SESSION["FROM_SEARCHER_ID"] = $qr["ID"];
                                $FROM_SEARCHER_NAME = $qr["NAME"];
                                $FROM_SEARCHER_PHRASE = "";
                                if (strlen($qr["VARIABLE"]) > 0) {
                                    $page = substr($PAGE_FROM, strpos($PAGE_FROM, "?") + 1);
                                    $bIsUTF8 = is_utf8_url($page);
                                    parse_str($page, $arr);
                                    $arrVar = explode(",", $qr["VARIABLE"]);
                                    foreach ($arrVar as $var) {
                                        $var = trim($var);
                                        $phrase = $arr[$var];
                                        if (get_magic_quotes_gpc()) {
                                            $phrase = stripslashes($phrase);
                                        }
                                        if ($bIsUTF8) {
                                            $phrase_temp = trim($APPLICATION->ConvertCharset($phrase, "utf-8", LANG_CHARSET));
                                            if (strlen($phrase_temp)) {
                                                $phrase = $phrase_temp;
                                            }
                                        } elseif (strlen($qr["CHAR_SET"]) > 0) {
                                            $phrase_temp = trim($APPLICATION->ConvertCharset($phrase, $qr["CHAR_SET"], LANG_CHARSET));
                                            if (strlen($phrase_temp)) {
                                                $phrase = $phrase_temp;
                                            }
                                        }
                                        $phrase = trim($phrase);
                                        if (strlen($phrase)) {
                                            $FROM_SEARCHER_PHRASE .= strlen($FROM_SEARCHER_PHRASE) > 0 ? " / " . $phrase : $phrase;
                                        }
                                    }
                                }
                                //echo "FROM_SEARCHER_PHRASE = ".$FROM_SEARCHER_PHRASE."<br>\n";
                                // если извлекли поисковую фразу, то занесем ее в базу
                                if (strlen($FROM_SEARCHER_PHRASE) > 0) {
                                    $arFields = array("DATE_HIT" => $DB_now, "SEARCHER_ID" => intval($_SESSION["FROM_SEARCHER_ID"]), "REFERER_ID" => $REFERER_LIST_ID, "PHRASE" => "'" . $DB->ForSql($FROM_SEARCHER_PHRASE, 255) . "'", "URL_FROM" => "'" . $DB->ForSql($PROT . $SN . $PAGE_FROM, 2000) . "'", "URL_TO" => "'" . $DB->ForSql($CURRENT_URI, 2000) . "'", "URL_TO_404" => "'" . $ERROR_404 . "'", "SESSION_ID" => $_SESSION["SESS_SESSION_ID"], "SITE_ID" => $sql_site);
                                    $id = $DB->Insert("b_stat_phrase_list", $arFields, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                                    if ($ERROR_404 == "N") {
                                        CStatistics::Set404("b_stat_phrase_list", "ID = " . intval($id), array("URL_TO_404" => "Y"));
                                    }
                                    // запомним поисковую фразу в сессии
                                    $_SESSION["SESS_SEARCH_PHRASE"] = $FROM_SEARCHER_PHRASE;
                                    // увеличим счетчик фраз у поисковой системы
                                    $_SESSION["SESS_FROM_SEARCHERS"][] = $_SESSION["FROM_SEARCHER_ID"];
                                    $arFields = array("PHRASES" => "PHRASES + 1");
                                    $rows = $DB->Update("b_stat_searcher", $arFields, "WHERE ID=" . intval($_SESSION["FROM_SEARCHER_ID"]), "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                                }
                            }
                        }
                    }
                    /************************************************
                    						Hits
                    			************************************************/
                    if ($_SESSION["SESS_SESSION_ID"] > 0) {
                        if ($SAVE_HITS != "N") {
                            // добавляем хит
                            $arFields = array("SESSION_ID" => $_SESSION["SESS_SESSION_ID"], "DATE_HIT" => $DB_now, "GUEST_ID" => intval($_SESSION["SESS_GUEST_ID"]), "NEW_GUEST" => "'" . $DB->ForSql($_SESSION["SESS_GUEST_NEW"]) . "'", "USER_ID" => intval($_SESSION["SESS_LAST_USER_ID"]), "USER_AUTH" => "'" . $IS_USER_AUTHORIZED . "'", "URL" => "'" . $DB->ForSql($CURRENT_URI, 2000) . "'", "URL_404" => "'" . $ERROR_404 . "'", "URL_FROM" => "'" . $DB->ForSql(isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "", 2000) . "'", "IP" => "'" . $DB->ForSql($_SERVER["REMOTE_ADDR"], 15) . "'", "METHOD" => "'" . $DB->ForSql($_SERVER["REQUEST_METHOD"], 10) . "'", "COOKIES" => "'" . $DB->ForSql(GetCookieString(), 2000) . "'", "USER_AGENT" => "'" . $DB->ForSql($_SERVER["HTTP_USER_AGENT"], 500) . "'", "STOP_LIST_ID" => "'" . $STOP_LIST_ID . "'", "COUNTRY_ID" => "'" . $DB->ForSql($_SESSION["SESS_COUNTRY_ID"], 2) . "'", "CITY_ID" => $_SESSION["SESS_CITY_ID"] > 0 ? intval($_SESSION["SESS_CITY_ID"]) : "null", "SITE_ID" => $sql_site);
                            self::$HIT_ID = intval($DB->Insert("b_stat_hit", $arFields, "File: " . __FILE__ . "<br>Line: " . __LINE__));
                            if ($ERROR_404 == "N") {
                                CStatistics::Set404("b_stat_hit", "ID = " . self::$HIT_ID, array("URL_404" => "Y"));
                            }
                        }
                        // если гость на данном хите добавил в фавориты и до этого еще не добавлял то
                        $favorites_counter = 0;
                        if ($FAVORITES == "Y" && $_SESSION["SESS_GUEST_FAVORITES"] == "N") {
                            $ALLOW_ADV_FAVORITES = "Y";
                            $_SESSION["SESS_GUEST_FAVORITES"] = "Y";
                            $favorites_counter = 1;
                        }
                        // обновляем счетчик "по дням"
                        $arFields = array("HITS" => 1, "FAVORITES" => $favorites_counter, "HIT" => 1, "FAVORITE" => $favorites_counter);
                        // если текущий день есть в базе то
                        // обновим счетчики траффика для текущего дня
                        $rows = CTraffic::IncParam($arFields);
                        if ($rows !== false && intval($rows) <= 0) {
                            // если текущий день не определен в базе то
                            // добавляем его
                            $new_guest_counter = $_SESSION["SESS_GUEST_NEW"] == "Y" ? 1 : 0;
                            CStatistics::SetNewDay(1, 0, 1, 1, $new_guest_counter, 1, $favorites_counter);
                            // обновим счетчики траффика для текущего дня
                            CTraffic::IncParam(array("SESSION" => 1, "HIT" => 1, "HOST" => 1, "GUEST" => 1, "NEW_GUEST" => $new_guest_counter, "FAVORITE" => $favorites_counter));
                        }
                        // если сайт определен то
                        if (strlen($SITE_ID) > 0) {
                            // обновляем счетчик "по дням"
                            $arFields = array("HITS" => 1, "HIT" => 1);
                            // если текущий день сайта определен в базе то
                            // обновим счетчики траффика для текущего дня
                            $rows = CTraffic::IncParam(array(), $arFields, $SITE_ID);
                            if ($rows !== false && intval($rows) <= 0) {
                                // если текущий день сайта не определен в базе то
                                // добавляем его
                                CStatistics::SetNewDayForSite($SITE_ID, 1, 0, 1, 1);
                                // обновим счетчики траффика для текущего дня
                                CTraffic::IncParam(array(), array("SESSION" => 1, "HIT" => 1, "HOST" => 1), $SITE_ID);
                            }
                        }
                        /************************************************
                        							Пути по сайту
                        			************************************************/
                        if ($SAVE_PATH_DATA != "N") {
                            CStatistics::SavePathData($SITE_ID, $CURRENT_PAGE, $ERROR_404);
                        }
                        /************************************************
                        						Посещение разделов и страниц
                        			************************************************/
                        if ($SAVE_VISITS != "N") {
                            CStatistics::SaveVisits($sql_site, $SESSION_NEW, $CURRENT_DIR, $CURRENT_PAGE, $ERROR_404);
                        }
                        // обновляем сессию
                        $arFields = array("LAST_HIT_ID" => self::$HIT_ID, "URL_LAST" => "'" . $DB->ForSql($CURRENT_URI, 2000) . "'", "URL_LAST_404" => "'" . $ERROR_404 . "'", "DATE_LAST" => $DB_now, "LAST_SITE_ID" => $sql_site);
                        if ($SESSION_NEW == "Y") {
                            $arFields["FIRST_HIT_ID"] = self::$HIT_ID;
                        }
                        if ($FAVORITES == "Y") {
                            $arFields["FAVORITES"] = "'Y'";
                        }
                        $DB->Update("b_stat_session", $arFields, "WHERE ID=" . $_SESSION["SESS_SESSION_ID"], "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                        if ($ERROR_404 == "N") {
                            CStatistics::Set404("b_stat_session", "ID = " . $_SESSION["SESS_SESSION_ID"], array("URL_LAST_404" => "Y"));
                        }
                        // обновляем гостя
                        $arFields = array("HITS" => "HITS + 1", "LAST_SESSION_ID" => $_SESSION["SESS_SESSION_ID"], "LAST_DATE" => $DB_now, "LAST_USER_ID" => intval($_SESSION["SESS_LAST_USER_ID"]), "LAST_USER_AUTH" => "'" . $IS_USER_AUTHORIZED . "'", "LAST_URL_LAST" => "'" . $DB->ForSql($CURRENT_URI, 2000) . "'", "LAST_URL_LAST_404" => "'" . $ERROR_404 . "'", "LAST_USER_AGENT" => "'" . $DB->ForSql($_SERVER["HTTP_USER_AGENT"], 500) . "'", "LAST_IP" => "'" . $DB->ForSql($_SERVER["REMOTE_ADDR"], 15) . "'", "LAST_COOKIE" => "'" . $DB->ForSql(GetCookieString(), 2000) . "'", "LAST_LANGUAGE" => "'" . $DB->ForSql($_SERVER["HTTP_ACCEPT_LANGUAGE"], 255) . "'", "LAST_SITE_ID" => $sql_site);
                        if ($FAVORITES == "Y") {
                            $arFields["FAVORITES"] = "'Y'";
                        }
                        $DB->Update("b_stat_guest", $arFields, "WHERE ID=" . intval($_SESSION["SESS_GUEST_ID"]), "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                        if ($ERROR_404 == "N") {
                            CStatistics::Set404("b_stat_guest", "ID = " . intval($_SESSION["SESS_GUEST_ID"]), array("LAST_URL_LAST_404" => "Y"));
                        }
                        // обновляем прямые рекламные кампании
                        if (intval($_SESSION["SESS_ADV_ID"]) > 0) {
                            // увеличиваем счетчик хитов на прямом заходе
                            $arFields = array("DATE_LAST" => $DB_now, "HITS" => "HITS+1");
                            if ($FAVORITES == "Y" && $ALLOW_ADV_FAVORITES == "Y") {
                                // увеличиваем счетчик посетителей добавивших в избранное на прямом заходе
                                $arFields["FAVORITES"] = "FAVORITES + 1";
                                $favorite = 1;
                            }
                            $DB->Update("b_stat_adv", $arFields, "WHERE ID=" . intval($_SESSION["SESS_ADV_ID"]), "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                            // обновляем счетчик хитов по дням
                            $arFields = array("HITS" => "HITS+1", "FAVORITES" => "FAVORITES + " . intval($favorite));
                            $rows = $DB->Update("b_stat_adv_day", $arFields, "WHERE ADV_ID=" . intval($_SESSION["SESS_ADV_ID"]) . " and DATE_STAT=" . $DB_now_date, "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                            // если его нет то
                            if (intval($rows) <= 0) {
                                // добавляем его
                                $arFields = array("ADV_ID" => intval($_SESSION["SESS_ADV_ID"]), "DATE_STAT" => $DB_now_date, "HITS" => 1, "FAVORITES" => intval($favorite));
                                $DB->Insert("b_stat_adv_day", $arFields, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                            }
                        } elseif (intval($_SESSION["SESS_LAST_ADV_ID"]) > 0) {
                            // увеличиваем счетчик хитов на возврате
                            $arFields = array("DATE_LAST" => $DB_now, "HITS_BACK" => "HITS_BACK+1");
                            if ($FAVORITES == "Y" && $ALLOW_ADV_FAVORITES == "Y") {
                                // увеличиваем счетчик посетителей добавивших в избранное на возврате
                                $arFields["FAVORITES_BACK"] = "FAVORITES_BACK + 1";
                                $favorite = 1;
                            }
                            $DB->Update("b_stat_adv", $arFields, "WHERE ID=" . intval($_SESSION["SESS_LAST_ADV_ID"]), "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                            $arFields = array("HITS_BACK" => "HITS_BACK+1", "FAVORITES_BACK" => "FAVORITES_BACK + " . intval($favorite));
                            // обновляем счетчик хитов по дням
                            $rows = $DB->Update("b_stat_adv_day", $arFields, "WHERE ADV_ID=" . intval($_SESSION["SESS_LAST_ADV_ID"]) . " and DATE_STAT=" . $DB_now_date, "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                            // если его нет то
                            if (intval($rows) <= 0) {
                                // добавляем его
                                $arFields = array("ADV_ID" => intval($_SESSION["SESS_LAST_ADV_ID"]), "DATE_STAT" => $DB_now_date, "HITS_BACK" => 1, "FAVORITES_BACK" => intval($favorite));
                                $DB->Insert("b_stat_adv_day", $arFields, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                            }
                        }
                        // обрабатываем событие
                        if (defined("GENERATE_EVENT") && GENERATE_EVENT == "Y") {
                            global $event1, $event2, $event3, $goto, $money, $currency, $site_id;
                            if (strlen($site_id) <= 0) {
                                $site_id = false;
                            }
                            CStatistics::Set_Event($event1, $event2, $event3, $goto, $money, $currency, $site_id);
                        }
                        // увеличиваем счетчик хитов у страны
                        if (strlen($_SESSION["SESS_COUNTRY_ID"]) > 0) {
                            CStatistics::UpdateCountry($_SESSION["SESS_COUNTRY_ID"], array("HITS" => 1));
                        }
                        if ($_SESSION["SESS_CITY_ID"] > 0) {
                            CStatistics::UpdateCity($_SESSION["SESS_CITY_ID"], array("HITS" => 1));
                        }
                        if (isset($_SESSION["SESS_FROM_SEARCHERS"]) && is_array($_SESSION["SESS_FROM_SEARCHERS"]) && !empty($_SESSION["SESS_FROM_SEARCHERS"])) {
                            // обновляем счетчик хитов у поисковых фраз для поисковиков
                            $arFields = array("PHRASES_HITS" => "PHRASES_HITS+1");
                            $_SESSION["SESS_FROM_SEARCHERS"] = array_unique($_SESSION["SESS_FROM_SEARCHERS"]);
                            if (count($_SESSION["SESS_FROM_SEARCHERS"]) > 0) {
                                $str = "0";
                                foreach ($_SESSION["SESS_FROM_SEARCHERS"] as $value) {
                                    $str .= ", " . intval($value);
                                }
                                $DB->Update("b_stat_searcher", $arFields, "WHERE ID in ({$str})", "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                            }
                        }
                        if (isset($_SESSION["SESS_REFERER_ID"]) && intval($_SESSION["SESS_REFERER_ID"]) > 0) {
                            // обновляем ссылающиеся
                            $arFields = array("HITS" => "HITS+1");
                            $DB->Update("b_stat_referer", $arFields, "WHERE ID=" . intval($_SESSION["SESS_REFERER_ID"]), "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                        }
                    }
                    /*******************************************************
                    				Переменные хранящие параметры предыдущей страницы
                    			*******************************************************/
                    $_SESSION["SESS_HTTP_REFERER"] = $_SESSION["SESS_LAST_URI"];
                    $_SESSION["SESS_LAST_PROTOCOL"] = $CURRENT_PROTOCOL;
                    $_SESSION["SESS_LAST_PORT"] = $CURRENT_PORT;
                    $_SESSION["SESS_LAST_HOST"] = $CURRENT_HOST;
                    $_SESSION["SESS_LAST_URI"] = $CURRENT_URI;
                    $_SESSION["SESS_LAST_PAGE"] = $CURRENT_PAGE;
                    $_SESSION["SESS_LAST_DIR"] = $CURRENT_DIR;
                }
            } else {
                /************************************************
                				Обработка превышения лимита активности
                			*************************************************/
                $fname = $_SERVER["DOCUMENT_ROOT"] . BX_PERSONAL_ROOT . "/activity_limit.php";
                if (file_exists($fname)) {
                    include $fname;
                } else {
                    CHTTP::SetStatus("503 Service Unavailable");
                    die;
                }
            }
            /************************************************************
            				Обрабатываем ситуацию когда не поддерживаются
            				сессии и/или не сохраняются куки
            			*************************************************************/
            // если мы делали select из таблицы b_stat_session_data то
            if ($SESSION_DATA_ID) {
                $arrSTAT_SESSION = stat_session_register(true);
                $sess_data_for_db = strtolower($DB->type) == "oracle" ? "'" . $DB->ForSql(serialize($arrSTAT_SESSION), 2000) . "'" : "'" . $DB->ForSql(serialize($arrSTAT_SESSION)) . "'";
                // если в результате этого select'а были выбраны данные то
                if (intval($SESSION_DATA_ID) > 0 && $SESSION_DATA_ID !== true) {
                    // обновляем их
                    $arFields = array("DATE_LAST" => $DB_now, "GUEST_MD5" => "'" . get_guest_md5() . "'", "SESS_SESSION_ID" => intval($_SESSION["SESS_SESSION_ID"]), "SESSION_DATA" => $sess_data_for_db);
                    $DB->Update("b_stat_session_data", $arFields, "WHERE ID = " . intval($SESSION_DATA_ID), "File: " . __FILE__ . "<br>Line: " . __LINE__, false, false, false);
                } else {
                    // иначе вставляем эти данные
                    $arFields = array("DATE_FIRST" => $DB_now, "DATE_LAST" => $DB_now, "GUEST_MD5" => "'" . get_guest_md5() . "'", "SESS_SESSION_ID" => intval($_SESSION["SESS_SESSION_ID"]), "SESSION_DATA" => $sess_data_for_db);
                    $DB->Insert("b_stat_session_data", $arFields, "File: " . __FILE__ . "<br>Line: " . __LINE__);
                }
            }
        }
        // if ($STOP_SAVE_STATISTIC!="N" or $STOP!="Y")
        if ($STOP == "Y") {
            $z = CLanguage::GetByID($STOP_MESSAGE_LID);
            $zr = $z->Fetch();
            $charset = strlen($zr["CHARSET"]) > 0 ? $zr["CHARSET"] : "windows-1251";
            //We have URL with no MESSAGE
            if (strlen($STOP_REDIRECT_URL) > 0 && strlen($STOP_MESSAGE) <= 0) {
                //So just do redirect
                LocalRedirect($STOP_REDIRECT_URL, true);
            } elseif (strlen($STOP_MESSAGE) > 0) {
                $STOP_MESSAGE .= " [" . $STOP_LIST_ID . "]";
                echo '<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=' . $charset . '">
		' . (strlen($STOP_REDIRECT_URL) > 0 ? '<meta http-equiv="Refresh" content="3;URL=' . htmlspecialcharsbx($STOP_REDIRECT_URL) . '">' : '') . '
	</head>
	<body>
		<div align="center"><h3>' . $STOP_MESSAGE . '</h3></div>
	</body>
</html>';
            }
            die;
        }
    }