Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $strSqlSearch = ""; if ($EVENT_ID!==false) $strSqlSearch .= " and E.EVENT_ID='".intval($EVENT_ID)."' "; if ($EVENT3!==false) $strSqlSearch .= " and E.EVENT3='".$DB->ForSql($EVENT3,255)."' "; if ($SEC!==false) $strSqlSearch .= " and E.DATE_ENTER > DATE_ADD(now(),INTERVAL - ".intval($SEC)." SECOND) "; $strSql = " SELECT E.ID FROM b_stat_event_list E WHERE E.GUEST_ID = ".intval($GUEST_ID)." ".$strSqlSearch." "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; } public static function Add($EVENT_ID, $EVENT3, $DATE_ENTER, $PARAM, $MONEY="", $CURRENCY="", $CHARGEBACK="N") { $err_mess = "File: ".__FILE__."
Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $EVENT_ID = intval($EVENT_ID); $EVENT_LIST_ID = 0; $strSql = "SELECT KEEP_DAYS FROM b_stat_event WHERE ID = $EVENT_ID"; $rsEvent = $DB->Query($strSql, false, $err_mess.__LINE__); if ($arEvent = $rsEvent->Fetch()) { $MONEY = doubleval($MONEY); // если указана валюта то конвертируем if (trim($CURRENCY) <> '') { $base_currency = GetStatisticBaseCurrency(); if ($base_currency <> '') { 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); $arr = CStatEvent::DecodeGID($PARAM); $SESSION_ID = intval($arr["SESSION_ID"]); $GUEST_ID = intval($arr["GUEST_ID"]); $COUNTRY_ID = $arr["COUNTRY_ID"]; $ADV_ID = intval($arr["ADV_ID"]); $ADV_BACK = ($arr["ADV_BACK"]=="Y") ? "Y" : "N"; $CHARGEBACK = ($CHARGEBACK=="Y") ? "Y" : "N"; $SITE_ID = $arr["SITE_ID"]; $DATE_ENTER = trim($DATE_ENTER) <> '' ? $DATE_ENTER : GetTime(time(),"FULL"); $TIME_ENTER_TMSTMP = MakeTimeStamp($DATE_ENTER); if (!$TIME_ENTER_TMSTMP) { $DATE_ENTER = GetTime(time(),"FULL"); $TIME_ENTER_TMSTMP = MakeTimeStamp($DATE_ENTER); } $TIME_ENTER_SQL = "FROM_UNIXTIME('".$TIME_ENTER_TMSTMP."')"; $DAY_ENTER_TMSTMP = MakeTimeStamp($DATE_ENTER); $DAY_ENTER_SQL = "DATE(FROM_UNIXTIME('".$DAY_ENTER_TMSTMP."'))"; $DB->StartTransaction(); $arFields = array( "EVENT_ID" => $EVENT_ID, "EVENT3" => "'".$DB->ForSql($EVENT3,255)."'", "MONEY" => $MONEY, "DATE_ENTER" => $TIME_ENTER_SQL, "SESSION_ID" => (intval($SESSION_ID)>0) ? intval($SESSION_ID) : "null", "GUEST_ID" => (intval($GUEST_ID)>0) ? intval($GUEST_ID) : "null", "ADV_ID" => (intval($ADV_ID)>0) ? intval($ADV_ID) : "null", "ADV_BACK" => ($ADV_BACK=="Y") ? "'Y'" : "'N'", "COUNTRY_ID" => ($COUNTRY_ID <> '') ? "'".$DB->ForSql($COUNTRY_ID,2)."'" : "null", "KEEP_DAYS" => (intval($arEvent["KEEP_DAYS"])>0) ? intval($arEvent["KEEP_DAYS"]) : "null", "CHARGEBACK" => "'".$CHARGEBACK."'", "SITE_ID" => ($SITE_ID <> '') ? "'".$DB->ForSql($SITE_ID,2)."'" : "null" ); $EVENT_LIST_ID = $DB->Insert("b_stat_event_list",$arFields, $err_mess.__LINE__); // увеличиваем счетчик для страны if ($COUNTRY_ID <> '') CStatistics::UpdateCountry($COUNTRY_ID, Array("C_EVENTS" => 1)); // если нужно обновляем дату первого события для данного типа события $arFields = Array("DATE_ENTER" => $DB->GetNowFunction()); $DB->Update("b_stat_event",$arFields,"WHERE ID='".$EVENT_ID."' and DATE_ENTER is null",$err_mess.__LINE__); // обновляем счетчик по дням для данного типа события $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 DATE_STAT = ".$DAY_ENTER_SQL, $err_mess.__LINE__); // если обсчета по дням нет то if (intval($rows)<=0) { // добавляем его $arFields_i = Array( "DATE_STAT" => $DAY_ENTER_SQL, "DATE_LAST" => $TIME_ENTER_SQL, "EVENT_ID" => $EVENT_ID, "COUNTER" => 1, "MONEY" => $MONEY ); $DB->Insert("b_stat_event_day",$arFields_i, $err_mess.__LINE__); } elseif (intval($rows)>1) // если обновили более одного дня то { // удалим лишние $strSql = "SELECT ID FROM b_stat_event_day WHERE EVENT_ID='".$EVENT_ID."' and DATE_STAT = ".$DAY_ENTER_SQL." 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__); } } } // обновляем сессию и гостя $arFields = Array("C_EVENTS" => "C_EVENTS+1"); $DB->Update("b_stat_session",$arFields,"WHERE ID=".$SESSION_ID, $err_mess.__LINE__,false,false,false); $DB->Update("b_stat_guest",$arFields,"WHERE ID=".$GUEST_ID, $err_mess.__LINE__,false,false,false); // обновляем дневной счетчик $arFields = Array("C_EVENTS" => "C_EVENTS + 1"); $DB->Update("b_stat_day",$arFields,"WHERE DATE_STAT = ".$DAY_ENTER_SQL, $err_mess.__LINE__,false,false,false); // увеличиваем счетчик траффика CTraffic::IncParam(array("EVENT" => 1), array(), false, $DATE_ENTER); // если сайт определен то if ($SITE_ID <> '') { // обновляем дневной счетчик $arFields = Array("C_EVENTS" => "C_EVENTS+1"); $DB->Update("b_stat_day_site", $arFields, "WHERE SITE_ID='".$DB->ForSql($SITE_ID,2)."' and DATE_STAT = ".$DAY_ENTER_SQL, $err_mess.__LINE__); // увеличиваем счетчик траффика CTraffic::IncParam(array(), array("EVENT" => 1), $SITE_ID, $DATE_ENTER); } if ($ADV_ID>0) { $a = $DB->Query("SELECT 'x' FROM b_stat_adv WHERE ID='".$ADV_ID."'", false, $err_mess.__LINE__); // если есть такая рекламная кампания то if ($ar = $a->Fetch()) { // увеличиваем доход рекламной кампании if ($MONEY!=0) { $sign = ($CHARGEBACK=="Y") ? "-" : "+"; $arFields = array("REVENUE" => "REVENUE ".$sign." ".$MONEY); $DB->Update("b_stat_adv",$arFields,"WHERE ID='$ADV_ID'",$err_mess.__LINE__,false,false,false); } // обновляем счетчик связки рекламной кампании и типа события if ($ADV_BACK=="Y") { $arFields = array( "COUNTER_BACK" => "COUNTER_BACK + 1", "MONEY_BACK" => "MONEY_BACK + ".$MONEY ); } else { $arFields = array( "COUNTER" => "COUNTER + 1", "MONEY" => "MONEY + ".$MONEY ); } $rows = $DB->Update("b_stat_adv_event",$arFields,"WHERE ADV_ID='$ADV_ID' and EVENT_ID='$EVENT_ID'",$err_mess.__LINE__); // если связки нет то if (intval($rows)<=0 && intval($ADV_ID)>0 && intval($EVENT_ID)>0) { // вставляем связку $arFields = Array( "ADV_ID" => "'".intval($ADV_ID)."'", "EVENT_ID" => "'".intval($EVENT_ID)."'" ); if ($ADV_BACK=="Y") { $arFields["COUNTER_BACK"] = 1; $arFields["MONEY_BACK"] = $MONEY; } else { $arFields["COUNTER"] = 1; $arFields["MONEY"] = $MONEY; } $DB->Insert("b_stat_adv_event", $arFields, $err_mess.__LINE__); } // обновляем счетчик связки по дням if ($ADV_BACK=="Y") { $arFields = array( "COUNTER_BACK" => "COUNTER_BACK + 1", "MONEY_BACK" => "MONEY_BACK + ".$MONEY ); } else { $arFields = array( "COUNTER" => "COUNTER + 1", "MONEY" => "MONEY + ".$MONEY ); } $rows = $DB->Update("b_stat_adv_event_day",$arFields,"WHERE ADV_ID='$ADV_ID' and EVENT_ID='$EVENT_ID' and DATE_STAT = ".$DAY_ENTER_SQL, $err_mess.__LINE__,false,false,false); // если нет такой связки то if (intval($rows)<=0 && intval($ADV_ID)>0 && intval($EVENT_ID)>0) { // вставляем ее $arFields = Array( "DATE_STAT" => $DAY_ENTER_SQL, "ADV_ID" => "'".$ADV_ID."'", "EVENT_ID" => "'".$EVENT_ID."'" ); if ($ADV_BACK=="Y") { $arFields["COUNTER_BACK"] = 1; $arFields["MONEY_BACK"] = $MONEY; } else { $arFields["COUNTER"] = 1; $arFields["MONEY"] = $MONEY; } $DB->Insert("b_stat_adv_event_day", $arFields, $err_mess.__LINE__); } } } $DB->Commit(); } return intval($EVENT_LIST_ID); } public static function GetList($by = 's_id', $order = 'desc', $arFilter = []) { $err_mess = "File: ".__FILE__."
Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $arSqlSearch = Array(); $arSqlSearch_h = Array(); $strSqlSearch_h = ""; $CURRENCY = ""; if (is_array($arFilter)) { foreach ($arFilter as $key => $val) { if(is_array($val)) { if(count($val) <= 0) continue; } else { if( ((string)$val == '') || ($val === "NOT_REF") ) continue; } $match_value_set = array_key_exists($key."_EXACT_MATCH", $arFilter); $key = strtoupper($key); switch($key) { case "ID": case "EVENT_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("E.".$key,$val,$match); break; case "EVENT_NAME": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("V.NAME",$val, $match); break; case "EVENT1": case "EVENT2": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("V.".$key,$val, $match); break; case "EVENT3": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("E.EVENT3",$val, $match); break; case "DATE": if (CheckDateTime($val)) $arSqlSearch[] = "E.DATE_ENTER=".$DB->CharToDateFunction($val); break; case "DATE1": if (CheckDateTime($val)) $arSqlSearch[] = "E.DATE_ENTER>=".$DB->CharToDateFunction($val, "SHORT"); break; case "DATE2": if (CheckDateTime($val)) $arSqlSearch[] = "E.DATE_ENTER<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY"; break; case "REDIRECT_URL": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("E.REDIRECT_URL",$val,$match,array("/","\\",".","?","#",":")); break; case "MONEY": $arSqlSearch_h[] = "MONEY='".roundDB($val)."'"; break; case "MONEY1": $arSqlSearch_h[] = "MONEY>='".roundDB($val)."'"; break; case "MONEY2": $arSqlSearch_h[] = "MONEY<='".roundDB($val)."'"; break; case "SESSION_ID": case "GUEST_ID": case "ADV_ID": case "HIT_ID": case "COUNTRY_ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("E.".$key,$val,$match); break; case "ADV_BACK": $arSqlSearch[] = ($val=="Y") ? "E.ADV_BACK='Y'" : "E.ADV_BACK='N'"; break; case "REFERER_URL": case "URL": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("E.".$key,$val,$match,array("/","\\",".","?","#",":")); break; case "COUNTRY": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("C.NAME", $val, $match); break; case "SITE_ID": if (is_array($val)) $val = implode(" | ", $val); $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("E.SITE_ID", $val, $match); break; case "REFERER_SITE_ID": if (is_array($val)) $val = implode(" | ", $val); $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("E.REFERER_SITE_ID", $val, $match); break; case "CURRENCY": $CURRENCY = $val; break; } } } $rate = 1; $base_currency = GetStatisticBaseCurrency(); $view_currency = $base_currency; if ($base_currency <> '') { if (CModule::IncludeModule("currency")) { if ($CURRENCY!=$base_currency && $CURRENCY <> '') { $rate = CCurrencyRates::GetConvertFactor($base_currency, $CURRENCY); $view_currency = $CURRENCY; } } } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); foreach($arSqlSearch_h as $sqlWhere) $strSqlSearch_h .= " and (".$sqlWhere.") "; if ($by == "s_id") $strSqlOrder = "ORDER BY E.ID"; elseif ($by == "s_site_id") $strSqlOrder = "ORDER BY E.SITE_ID"; elseif ($by == "s_event_id" || $by == "s_type_id") $strSqlOrder = "ORDER BY E.EVENT_ID"; elseif ($by == "s_event3") $strSqlOrder = "ORDER BY E.EVENT3"; elseif ($by == "s_date_enter") $strSqlOrder = "ORDER BY E.DATE_ENTER"; elseif ($by == "s_adv_id") $strSqlOrder = "ORDER BY E.ADV_ID"; elseif ($by == "s_adv_back") $strSqlOrder = "ORDER BY E.ADV_BACK"; elseif ($by == "s_session_id") $strSqlOrder = "ORDER BY E.SESSION_ID"; elseif ($by == "s_guest_id") $strSqlOrder = "ORDER BY E.GUEST_ID"; elseif ($by == "s_hit_id") $strSqlOrder = "ORDER BY E.HIT_ID"; elseif ($by == "s_url") $strSqlOrder = "ORDER BY E.URL"; elseif ($by == "s_referer_url") $strSqlOrder = "ORDER BY E.REFERER_URL"; elseif ($by == "s_redirect_url") $strSqlOrder = "ORDER BY E.REDIRECT_URL"; elseif ($by == "s_country_id") $strSqlOrder = "ORDER BY E.COUNTRY_ID"; elseif ($by == "s_money") $strSqlOrder = "ORDER BY MONEY"; else { $strSqlOrder = "ORDER BY E.ID"; } if ($order!="asc") { $strSqlOrder .= " desc "; } if($arFilter["GROUP"]=="total") { $strSql = " SELECT COUNT(1) COUNTER, round(sum(if(E.CHARGEBACK='Y',-E.MONEY,E.MONEY)*$rate),2) MONEY, '".$DB->ForSql($view_currency)."' CURRENCY FROM b_stat_event_list E INNER JOIN b_stat_event V ON (V.ID=E.EVENT_ID) LEFT JOIN b_stat_country C ON (C.ID=E.COUNTRY_ID) WHERE $strSqlSearch HAVING 1=1 $strSqlSearch_h "; } else { $strSql = " SELECT E.ID, E.EVENT3, E.EVENT_ID, E.ADV_ID, E.ADV_BACK, E.COUNTRY_ID, E.SESSION_ID, E.GUEST_ID, E.HIT_ID, E.REFERER_URL, E.URL, E.REDIRECT_URL, E.CHARGEBACK, E.SITE_ID, E.REFERER_SITE_ID, round((E.MONEY*$rate),2) MONEY, '".$DB->ForSql($view_currency)."' CURRENCY, ".$DB->DateToCharFunction("E.DATE_ENTER")." DATE_ENTER, V.ID TYPE_ID, V.DESCRIPTION, V.NAME, V.EVENT1, V.EVENT2, C.NAME COUNTRY_NAME, if (length(V.NAME)>0, V.NAME, concat(ifnull(V.EVENT1,''),' / ',ifnull(V.EVENT2,''))) EVENT FROM b_stat_event_list E INNER JOIN b_stat_event V ON (V.ID=E.EVENT_ID) LEFT JOIN b_stat_country C ON (C.ID=E.COUNTRY_ID) WHERE $strSqlSearch HAVING 1=1 $strSqlSearch_h $strSqlOrder LIMIT ".intval(COption::GetOptionString('statistic','RECORDS_LIMIT'))." "; } $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; } public static function Delete($ID) { $err_mess = "File: ".__FILE__."
Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $ID = intval($ID); $strSql = " SELECT L.EVENT_ID, L.MONEY, L.SESSION_ID, L.GUEST_ID, L.ADV_ID, L.ADV_BACK, L.COUNTRY_ID, L.CHARGEBACK, L.SITE_ID, ".$DB->DateToCharFunction("L.DATE_ENTER","SHORT")." DATE_ENTER, ".$DB->DateToCharFunction("L.DATE_ENTER","FULL")." DATE_ENTER_FULL FROM b_stat_event_list L, b_stat_event E WHERE L.ID = '$ID' and E.ID = L.EVENT_ID "; $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 ($ar["SITE_ID"] <> '') { $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; } }