2require_once(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/statistic/classes/general/statevent.php");
6 public static function GetListByGuest($GUEST_ID, $EVENT_ID=
false, $EVENT3=
false, $SEC=
false)
8 $DB = CDatabase::GetModuleConnection(
'statistic');
11 if ($EVENT_ID!==
false)
12 $strSqlSearch .=
" and E.EVENT_ID='".intval($EVENT_ID).
"' ";
14 $strSqlSearch .=
" and E.EVENT3='".$DB->ForSql($EVENT3,255).
"' ";
16 $strSqlSearch .=
" and E.DATE_ENTER > DATE_ADD(now(),INTERVAL - ".intval($SEC).
" SECOND) ";
24 E.GUEST_ID = ".intval($GUEST_ID).
"
32 public static function Add($EVENT_ID, $EVENT3, $DATE_ENTER, $PARAM, $MONEY=
"",
$CURRENCY=
"", $CHARGEBACK=
"N")
34 $DB = CDatabase::GetModuleConnection(
'statistic');
36 $EVENT_ID = intval($EVENT_ID);
38 $strSql =
"SELECT KEEP_DAYS FROM b_stat_event WHERE ID = $EVENT_ID";
39 $rsEvent =
$DB->Query($strSql);
40 if ($arEvent = $rsEvent->Fetch())
42 $MONEY = doubleval($MONEY);
52 if (CModule::IncludeModule(
"currency"))
55 if ($rate>0 && $rate!=1) $MONEY = $MONEY * $rate;
60 $MONEY = round($MONEY,2);
63 $SESSION_ID = intval(
$arr[
"SESSION_ID"]);
64 $GUEST_ID = intval(
$arr[
"GUEST_ID"]);
65 $COUNTRY_ID =
$arr[
"COUNTRY_ID"];
66 $ADV_ID = intval(
$arr[
"ADV_ID"]);
67 $ADV_BACK = (
$arr[
"ADV_BACK"]==
"Y") ?
"Y" :
"N";
68 $CHARGEBACK = ($CHARGEBACK==
"Y") ?
"Y" :
"N";
71 $DATE_ENTER = trim($DATE_ENTER) <>
'' ? $DATE_ENTER :
GetTime(time(),
"FULL");
73 if (!$TIME_ENTER_TMSTMP)
75 $DATE_ENTER =
GetTime(time(),
"FULL");
78 $TIME_ENTER_SQL =
"FROM_UNIXTIME('".$TIME_ENTER_TMSTMP.
"')";
80 $DAY_ENTER_SQL =
"DATE(FROM_UNIXTIME('".$DAY_ENTER_TMSTMP.
"'))";
82 $DB->StartTransaction();
85 "EVENT_ID" => $EVENT_ID,
86 "EVENT3" =>
"'".
$DB->ForSql($EVENT3,255).
"'",
88 "DATE_ENTER" => $TIME_ENTER_SQL,
89 "SESSION_ID" => (intval($SESSION_ID)>0) ? intval($SESSION_ID) :
"null",
90 "GUEST_ID" => (intval($GUEST_ID)>0) ? intval($GUEST_ID) :
"null",
91 "ADV_ID" => (intval($ADV_ID)>0) ? intval($ADV_ID) :
"null",
92 "ADV_BACK" => ($ADV_BACK==
"Y") ?
"'Y'" :
"'N'",
93 "COUNTRY_ID" => ($COUNTRY_ID <>
'') ?
"'".
$DB->ForSql($COUNTRY_ID,2).
"'" :
"null",
94 "KEEP_DAYS" => (intval($arEvent[
"KEEP_DAYS"])>0) ? intval($arEvent[
"KEEP_DAYS"]) :
"null",
95 "CHARGEBACK" =>
"'".$CHARGEBACK.
"'",
98 $EVENT_LIST_ID =
$DB->Insert(
"b_stat_event_list",
$arFields);
101 if ($COUNTRY_ID <>
'')
102 CStatistics::UpdateCountry($COUNTRY_ID, Array(
"C_EVENTS" => 1));
105 $arFields = Array(
"DATE_ENTER" =>
$DB->GetNowFunction());
106 $DB->Update(
"b_stat_event",
$arFields,
"WHERE ID='".$EVENT_ID.
"' and DATE_ENTER is null");
109 "DATE_LAST" =>
$DB->GetNowFunction(),
110 "COUNTER" =>
"COUNTER + 1",
111 "MONEY" =>
"MONEY + ".$MONEY
113 $rows =
$DB->Update(
"b_stat_event_day",
$arFields,
"WHERE EVENT_ID='".$EVENT_ID.
"' and DATE_STAT = ".$DAY_ENTER_SQL);
115 if (intval(
$rows)<=0)
119 "DATE_STAT" => $DAY_ENTER_SQL,
120 "DATE_LAST" => $TIME_ENTER_SQL,
121 "EVENT_ID" => $EVENT_ID,
125 $DB->Insert(
"b_stat_event_day",$arFields_i);
130 $strSql =
"SELECT ID FROM b_stat_event_day WHERE EVENT_ID='".$EVENT_ID.
"' and DATE_STAT = ".$DAY_ENTER_SQL.
" ORDER BY ID";
132 $rs =
$DB->Query($strSql);
133 while (
$ar =
$rs->Fetch())
138 $strSql =
"DELETE FROM b_stat_event_day WHERE ID = ".$ar[
"ID"];
145 $arFields = Array(
"C_EVENTS" =>
"C_EVENTS+1");
146 $DB->Update(
"b_stat_session",
$arFields,
"WHERE ID=".$SESSION_ID,
'',
false,
false,
false);
147 $DB->Update(
"b_stat_guest",
$arFields,
"WHERE ID=".$GUEST_ID,
'',
false,
false,
false);
150 $arFields = Array(
"C_EVENTS" =>
"C_EVENTS + 1");
151 $DB->Update(
"b_stat_day",
$arFields,
"WHERE DATE_STAT = ".$DAY_ENTER_SQL,
'',
false,
false,
false);
160 $arFields = Array(
"C_EVENTS" =>
"C_EVENTS+1");
161 $DB->Update(
"b_stat_day_site",
$arFields,
"WHERE SITE_ID='".
$DB->ForSql(
$SITE_ID,2).
"' and DATE_STAT = ".$DAY_ENTER_SQL);
169 $a =
$DB->Query(
"SELECT 'x' FROM b_stat_adv WHERE ID='".$ADV_ID.
"'");
171 if (
$ar =
$a->Fetch())
176 $sign = ($CHARGEBACK==
"Y") ?
"-" :
"+";
178 $DB->Update(
"b_stat_adv",
$arFields,
"WHERE ID='$ADV_ID'",
'',
false,
false,
false);
184 "COUNTER_BACK" =>
"COUNTER_BACK + 1",
185 "MONEY_BACK" =>
"MONEY_BACK + ".$MONEY
191 "COUNTER" =>
"COUNTER + 1",
192 "MONEY" =>
"MONEY + ".$MONEY
195 $rows =
$DB->Update(
"b_stat_adv_event",
$arFields,
"WHERE ADV_ID='$ADV_ID' and EVENT_ID='$EVENT_ID'");
197 if (intval(
$rows)<=0 && intval($ADV_ID)>0 && intval($EVENT_ID)>0)
201 "ADV_ID" =>
"'".intval($ADV_ID).
"'",
202 "EVENT_ID" =>
"'".intval($EVENT_ID).
"'"
221 "COUNTER_BACK" =>
"COUNTER_BACK + 1",
222 "MONEY_BACK" =>
"MONEY_BACK + ".$MONEY
228 "COUNTER" =>
"COUNTER + 1",
229 "MONEY" =>
"MONEY + ".$MONEY
232 $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,
'',
false,
false,
false);
234 if (intval(
$rows)<=0 && intval($ADV_ID)>0 && intval($EVENT_ID)>0)
238 "DATE_STAT" => $DAY_ENTER_SQL,
239 "ADV_ID" =>
"'".$ADV_ID.
"'",
240 "EVENT_ID" =>
"'".$EVENT_ID.
"'"
258 return intval($EVENT_LIST_ID);
263 $DB = CDatabase::GetModuleConnection(
'statistic');
264 $arSqlSearch = Array();
265 $arSqlSearch_h = Array();
266 $strSqlSearch_h =
"";
279 if( ((
string)
$val ==
'') || (
$val ===
"NOT_REF") )
282 $match_value_set = array_key_exists(
$key.
"_EXACT_MATCH",
$arFilter);
288 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
292 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
297 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
301 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
306 $arSqlSearch[] =
"E.DATE_ENTER=".$DB->CharToDateFunction(
$val);
310 $arSqlSearch[] =
"E.DATE_ENTER>=".$DB->CharToDateFunction(
$val,
"SHORT");
314 $arSqlSearch[] =
"E.DATE_ENTER<".$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
317 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
321 $arSqlSearch_h[] =
"MONEY='".roundDB(
$val).
"'";
324 $arSqlSearch_h[] =
"MONEY>='".roundDB(
$val).
"'";
327 $arSqlSearch_h[] =
"MONEY<='".roundDB(
$val).
"'";
334 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
338 $arSqlSearch[] = (
$val==
"Y") ?
"E.ADV_BACK='Y'" :
"E.ADV_BACK='N'";
342 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
346 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
351 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
354 case "REFERER_SITE_ID":
356 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
371 if (CModule::IncludeModule(
"currency"))
382 foreach($arSqlSearch_h as $sqlWhere)
383 $strSqlSearch_h .=
" and (".$sqlWhere.
") ";
385 if ($by ==
"s_id") $strSqlOrder =
"ORDER BY E.ID";
386 elseif ($by ==
"s_site_id") $strSqlOrder =
"ORDER BY E.SITE_ID";
387 elseif ($by ==
"s_event_id" || $by ==
"s_type_id") $strSqlOrder =
"ORDER BY E.EVENT_ID";
388 elseif ($by ==
"s_event3") $strSqlOrder =
"ORDER BY E.EVENT3";
389 elseif ($by ==
"s_date_enter") $strSqlOrder =
"ORDER BY E.DATE_ENTER";
390 elseif ($by ==
"s_adv_id") $strSqlOrder =
"ORDER BY E.ADV_ID";
391 elseif ($by ==
"s_adv_back") $strSqlOrder =
"ORDER BY E.ADV_BACK";
392 elseif ($by ==
"s_session_id") $strSqlOrder =
"ORDER BY E.SESSION_ID";
393 elseif ($by ==
"s_guest_id") $strSqlOrder =
"ORDER BY E.GUEST_ID";
394 elseif ($by ==
"s_hit_id") $strSqlOrder =
"ORDER BY E.HIT_ID";
395 elseif ($by ==
"s_url") $strSqlOrder =
"ORDER BY E.URL";
396 elseif ($by ==
"s_referer_url") $strSqlOrder =
"ORDER BY E.REFERER_URL";
397 elseif ($by ==
"s_redirect_url") $strSqlOrder =
"ORDER BY E.REDIRECT_URL";
398 elseif ($by ==
"s_country_id") $strSqlOrder =
"ORDER BY E.COUNTRY_ID";
399 elseif ($by ==
"s_money") $strSqlOrder =
"ORDER BY MONEY";
402 $strSqlOrder =
"ORDER BY E.ID";
407 $strSqlOrder .=
" desc ";
415 round(sum(if(E.CHARGEBACK='Y',-E.MONEY,E.MONEY)*$rate),2) MONEY,
416 '".$DB->ForSql($view_currency).
"' CURRENCY
419 INNER JOIN b_stat_event V ON (V.ID=E.EVENT_ID)
420 LEFT JOIN b_stat_country C ON (C.ID=E.COUNTRY_ID)
432 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,
433 round((E.MONEY*$rate),2) MONEY,
434 '".$DB->ForSql($view_currency).
"' CURRENCY,
435 ".
$DB->DateToCharFunction(
"E.DATE_ENTER").
" DATE_ENTER,
437 V.DESCRIPTION, V.NAME, V.EVENT1, V.EVENT2,
439 if (length(V.NAME)>0, V.NAME,
440 concat(ifnull(V.EVENT1,''),' / ',ifnull(V.EVENT2,''))) EVENT
443 INNER JOIN b_stat_event V ON (V.ID=E.EVENT_ID)
444 LEFT JOIN b_stat_country C ON (C.ID=E.COUNTRY_ID)
451 LIMIT ".intval(COption::GetOptionString(
'statistic',
'RECORDS_LIMIT')).
"
462 $DB = CDatabase::GetModuleConnection(
'statistic');
475 ".$DB->DateToCharFunction(
"L.DATE_ENTER",
"SHORT").
" DATE_ENTER,
476 ".
$DB->DateToCharFunction(
"L.DATE_ENTER",
"FULL").
" DATE_ENTER_FULL
482 and E.ID = L.EVENT_ID
484 $a =
$DB->Query($strSql);
485 if (
$ar =
$a->Fetch())
488 CStatistics::UpdateCountry(
$ar[
"COUNTRY_ID"], Array(
"C_EVENTS" => 1),
$ar[
"DATE_ENTER"],
"SHORT",
"-");
492 "COUNTER" =>
"COUNTER-1",
493 "MONEY" =>
"MONEY - ".doubleval(
$ar[
"MONEY"])
497 if (intval(
$rows)<=0)
501 "COUNTER" =>
"COUNTER-1",
502 "MONEY" =>
"MONEY - ".doubleval(
$ar[
"MONEY"])
504 $DB->Update(
"b_stat_event",
$arFields,
"WHERE ID='".intval(
$ar[
"EVENT_ID"]).
"'");
507 $strSql =
"DELETE FROM b_stat_event_day WHERE COUNTER=0";
511 $arFields = Array(
"C_EVENTS" =>
"C_EVENTS-1");
512 $DB->Update(
"b_stat_session",
$arFields,
"WHERE ID='".intval(
$ar[
"SESSION_ID"]).
"'",
'',
false,
false,
false);
515 $DB->Update(
"b_stat_guest",
$arFields,
"WHERE ID='".intval(
$ar[
"GUEST_ID"]).
"'",
'',
false,
false,
false);
517 if (intval(
$ar[
"ADV_ID"])>0)
520 if (doubleval(
$ar[
"MONEY"])!=0)
522 $sign = (
$ar[
"CHARGEBACK"]==
"Y") ?
"+" :
"-";
524 $DB->Update(
"b_stat_adv",
$arFields,
"WHERE ID='".intval(
$ar[
"ADV_ID"]).
"'",
'',
false,
false,
false);
528 if (
$ar[
"ADV_BACK"]==
"Y")
531 "COUNTER_BACK" =>
"COUNTER_BACK - 1",
532 "MONEY_BACK" =>
"MONEY_BACK - ".doubleval(
$ar[
"MONEY"]),
538 "COUNTER" =>
"COUNTER - 1",
539 "MONEY" =>
"MONEY - ".doubleval(
$ar[
"MONEY"]),
542 $DB->Update(
"b_stat_adv_event",
$arFields,
"WHERE ADV_ID='".intval(
$ar[
"ADV_ID"]).
"' and EVENT_ID='".
$ar[
"EVENT_ID"].
"'");
545 if (
$ar[
"ADV_BACK"]==
"Y")
548 "COUNTER_BACK" =>
"COUNTER_BACK - 1",
549 "MONEY_BACK" =>
"MONEY_BACK - ".doubleval(
$ar[
"MONEY"]),
555 "COUNTER" =>
"COUNTER - 1",
556 "MONEY" =>
"MONEY - ".doubleval(
$ar[
"MONEY"]),
559 $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").
"')",
'',
false,
false,
false);
562 $strSql =
"DELETE FROM b_stat_adv_event WHERE COUNTER<=0 and COUNTER_BACK<=0";
564 $strSql =
"DELETE FROM b_stat_adv_event_day WHERE COUNTER<=0 and COUNTER_BACK<=0";
568 $arFields = Array(
"C_EVENTS" =>
"C_EVENTS-1");
574 if (
$ar[
"SITE_ID"] <>
'')
576 $arFields = Array(
"C_EVENTS" =>
"C_EVENTS-1");
583 $strSql =
"DELETE FROM b_stat_event_list WHERE ID='$ID'";
static GetConvertFactor($curFrom, $curTo, $valDate="")
static DecodeGID($EVENT_GID)
static IncParam($arParam, $arParamSite=false, $SITE_ID=false, $DATE=false, $DATE_FORMAT="FULL", $SIGN="+")
static DecParam($arParam, $arParamSite=false, $SITE_ID=false, $DATE=false, $DATE_FORMAT="FULL")
static Add($EVENT_ID, $EVENT3, $DATE_ENTER, $PARAM, $MONEY="", $CURRENCY="", $CHARGEBACK="N")
static GetListByGuest($GUEST_ID, $EVENT_ID=false, $EVENT3=false, $SEC=false)
static GetList($by='s_id', $order='desc', $arFilter=[])
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
ConvertDateTime($datetime, $to_format=false, $from_site=false, $bSearchInSitesOnly=false)
GetTime($timestamp, $type="SHORT", $site=false, $bSearchInSitesOnly=false)
CheckDateTime($datetime, $format=false)
MkDateTime($strDT, $format="d.m.Y H:i:s")
MakeTimeStamp($datetime, $format=false)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"