1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
statevent.php
См. документацию.
1<?
2require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/classes/general/statevent.php");
3
5{
6 public static function GetListByGuest($GUEST_ID, $EVENT_ID=false, $EVENT3=false, $SEC=false)
7 {
8 $DB = CDatabase::GetModuleConnection('statistic');
9
10 $strSqlSearch = "";
11 if ($EVENT_ID!==false)
12 $strSqlSearch .= " and E.EVENT_ID='".intval($EVENT_ID)."' ";
13 if ($EVENT3!==false)
14 $strSqlSearch .= " and E.EVENT3='".$DB->ForSql($EVENT3,255)."' ";
15 if ($SEC!==false)
16 $strSqlSearch .= " and E.DATE_ENTER > DATE_ADD(now(),INTERVAL - ".intval($SEC)." SECOND) ";
17
18 $strSql = "
19 SELECT
20 E.ID
21 FROM
22 b_stat_event_list E
23 WHERE
24 E.GUEST_ID = ".intval($GUEST_ID)."
25 ".$strSqlSearch."
26 ";
27 $res = $DB->Query($strSql);
28
29 return $res;
30 }
31
32 public static function Add($EVENT_ID, $EVENT3, $DATE_ENTER, $PARAM, $MONEY="", $CURRENCY="", $CHARGEBACK="N")
33 {
34 $DB = CDatabase::GetModuleConnection('statistic');
35
36 $EVENT_ID = intval($EVENT_ID);
37 $EVENT_LIST_ID = 0;
38 $strSql = "SELECT KEEP_DAYS FROM b_stat_event WHERE ID = $EVENT_ID";
39 $rsEvent = $DB->Query($strSql);
40 if ($arEvent = $rsEvent->Fetch())
41 {
42 $MONEY = doubleval($MONEY);
43
44 // если указана валюта то конвертируем
45 if (trim($CURRENCY) <> '')
46 {
48 if ($base_currency <> '')
49 {
51 {
52 if (CModule::IncludeModule("currency"))
53 {
55 if ($rate>0 && $rate!=1) $MONEY = $MONEY * $rate;
56 }
57 }
58 }
59 }
60 $MONEY = round($MONEY,2);
61
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";
69 $SITE_ID = $arr["SITE_ID"];
70
71 $DATE_ENTER = trim($DATE_ENTER) <> '' ? $DATE_ENTER : GetTime(time(),"FULL");
72 $TIME_ENTER_TMSTMP = MakeTimeStamp($DATE_ENTER);
73 if (!$TIME_ENTER_TMSTMP)
74 {
75 $DATE_ENTER = GetTime(time(),"FULL");
76 $TIME_ENTER_TMSTMP = MakeTimeStamp($DATE_ENTER);
77 }
78 $TIME_ENTER_SQL = "FROM_UNIXTIME('".$TIME_ENTER_TMSTMP."')";
79 $DAY_ENTER_TMSTMP = MakeTimeStamp($DATE_ENTER);
80 $DAY_ENTER_SQL = "DATE(FROM_UNIXTIME('".$DAY_ENTER_TMSTMP."'))";
81
82 $DB->StartTransaction();
83
85 "EVENT_ID" => $EVENT_ID,
86 "EVENT3" => "'".$DB->ForSql($EVENT3,255)."'",
87 "MONEY" => $MONEY,
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."'",
96 "SITE_ID" => ($SITE_ID <> '') ? "'".$DB->ForSql($SITE_ID,2)."'" : "null"
97 );
98 $EVENT_LIST_ID = $DB->Insert("b_stat_event_list",$arFields);
99
100 // увеличиваем счетчик для страны
101 if ($COUNTRY_ID <> '')
102 CStatistics::UpdateCountry($COUNTRY_ID, Array("C_EVENTS" => 1));
103
104 // если нужно обновляем дату первого события для данного типа события
105 $arFields = Array("DATE_ENTER" => $DB->GetNowFunction());
106 $DB->Update("b_stat_event",$arFields,"WHERE ID='".$EVENT_ID."' and DATE_ENTER is null");
107 // обновляем счетчик по дням для данного типа события
108 $arFields = Array(
109 "DATE_LAST" => $DB->GetNowFunction(),
110 "COUNTER" => "COUNTER + 1",
111 "MONEY" => "MONEY + ".$MONEY
112 );
113 $rows = $DB->Update("b_stat_event_day",$arFields,"WHERE EVENT_ID='".$EVENT_ID."' and DATE_STAT = ".$DAY_ENTER_SQL);
114 // если обсчета по дням нет то
115 if (intval($rows)<=0)
116 {
117 // добавляем его
118 $arFields_i = Array(
119 "DATE_STAT" => $DAY_ENTER_SQL,
120 "DATE_LAST" => $TIME_ENTER_SQL,
121 "EVENT_ID" => $EVENT_ID,
122 "COUNTER" => 1,
123 "MONEY" => $MONEY
124 );
125 $DB->Insert("b_stat_event_day",$arFields_i);
126 }
127 elseif (intval($rows)>1) // если обновили более одного дня то
128 {
129 // удалим лишние
130 $strSql = "SELECT ID FROM b_stat_event_day WHERE EVENT_ID='".$EVENT_ID."' and DATE_STAT = ".$DAY_ENTER_SQL." ORDER BY ID";
131 $i=0;
132 $rs = $DB->Query($strSql);
133 while ($ar = $rs->Fetch())
134 {
135 $i++;
136 if ($i>1)
137 {
138 $strSql = "DELETE FROM b_stat_event_day WHERE ID = ".$ar["ID"];
139 $DB->Query($strSql);
140 }
141 }
142 }
143
144 // обновляем сессию и гостя
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);
148
149 // обновляем дневной счетчик
150 $arFields = Array("C_EVENTS" => "C_EVENTS + 1");
151 $DB->Update("b_stat_day",$arFields,"WHERE DATE_STAT = ".$DAY_ENTER_SQL, '',false,false,false);
152
153 // увеличиваем счетчик траффика
154 CTraffic::IncParam(array("EVENT" => 1), array(), false, $DATE_ENTER);
155
156 // если сайт определен то
157 if ($SITE_ID <> '')
158 {
159 // обновляем дневной счетчик
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);
162
163 // увеличиваем счетчик траффика
164 CTraffic::IncParam(array(), array("EVENT" => 1), $SITE_ID, $DATE_ENTER);
165 }
166
167 if ($ADV_ID>0)
168 {
169 $a = $DB->Query("SELECT 'x' FROM b_stat_adv WHERE ID='".$ADV_ID."'");
170 // если есть такая рекламная кампания то
171 if ($ar = $a->Fetch())
172 {
173 // увеличиваем доход рекламной кампании
174 if ($MONEY!=0)
175 {
176 $sign = ($CHARGEBACK=="Y") ? "-" : "+";
177 $arFields = array("REVENUE" => "REVENUE ".$sign." ".$MONEY);
178 $DB->Update("b_stat_adv",$arFields,"WHERE ID='$ADV_ID'",'',false,false,false);
179 }
180 // обновляем счетчик связки рекламной кампании и типа события
181 if ($ADV_BACK=="Y")
182 {
184 "COUNTER_BACK" => "COUNTER_BACK + 1",
185 "MONEY_BACK" => "MONEY_BACK + ".$MONEY
186 );
187 }
188 else
189 {
191 "COUNTER" => "COUNTER + 1",
192 "MONEY" => "MONEY + ".$MONEY
193 );
194 }
195 $rows = $DB->Update("b_stat_adv_event",$arFields,"WHERE ADV_ID='$ADV_ID' and EVENT_ID='$EVENT_ID'");
196 // если связки нет то
197 if (intval($rows)<=0 && intval($ADV_ID)>0 && intval($EVENT_ID)>0)
198 {
199 // вставляем связку
200 $arFields = Array(
201 "ADV_ID" => "'".intval($ADV_ID)."'",
202 "EVENT_ID" => "'".intval($EVENT_ID)."'"
203 );
204 if ($ADV_BACK=="Y")
205 {
206 $arFields["COUNTER_BACK"] = 1;
207 $arFields["MONEY_BACK"] = $MONEY;
208 }
209 else
210 {
211 $arFields["COUNTER"] = 1;
212 $arFields["MONEY"] = $MONEY;
213 }
214 $DB->Insert("b_stat_adv_event", $arFields);
215 }
216
217 // обновляем счетчик связки по дням
218 if ($ADV_BACK=="Y")
219 {
221 "COUNTER_BACK" => "COUNTER_BACK + 1",
222 "MONEY_BACK" => "MONEY_BACK + ".$MONEY
223 );
224 }
225 else
226 {
228 "COUNTER" => "COUNTER + 1",
229 "MONEY" => "MONEY + ".$MONEY
230 );
231 }
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);
233 // если нет такой связки то
234 if (intval($rows)<=0 && intval($ADV_ID)>0 && intval($EVENT_ID)>0)
235 {
236 // вставляем ее
237 $arFields = Array(
238 "DATE_STAT" => $DAY_ENTER_SQL,
239 "ADV_ID" => "'".$ADV_ID."'",
240 "EVENT_ID" => "'".$EVENT_ID."'"
241 );
242 if ($ADV_BACK=="Y")
243 {
244 $arFields["COUNTER_BACK"] = 1;
245 $arFields["MONEY_BACK"] = $MONEY;
246 }
247 else
248 {
249 $arFields["COUNTER"] = 1;
250 $arFields["MONEY"] = $MONEY;
251 }
252 $DB->Insert("b_stat_adv_event_day", $arFields);
253 }
254 }
255 }
256 $DB->Commit();
257 }
258 return intval($EVENT_LIST_ID);
259 }
260
261 public static function GetList($by = 's_id', $order = 'desc', $arFilter = [])
262 {
263 $DB = CDatabase::GetModuleConnection('statistic');
264 $arSqlSearch = Array();
265 $arSqlSearch_h = Array();
266 $strSqlSearch_h = "";
267 $CURRENCY = "";
268 if (is_array($arFilter))
269 {
270 foreach ($arFilter as $key => $val)
271 {
272 if(is_array($val))
273 {
274 if(count($val) <= 0)
275 continue;
276 }
277 else
278 {
279 if( ((string)$val == '') || ($val === "NOT_REF") )
280 continue;
281 }
282 $match_value_set = array_key_exists($key."_EXACT_MATCH", $arFilter);
283 $key = strtoupper($key);
284 switch($key)
285 {
286 case "ID":
287 case "EVENT_ID":
288 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
289 $arSqlSearch[] = GetFilterQuery("E.".$key,$val,$match);
290 break;
291 case "EVENT_NAME":
292 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
293 $arSqlSearch[] = GetFilterQuery("V.NAME",$val, $match);
294 break;
295 case "EVENT1":
296 case "EVENT2":
297 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
298 $arSqlSearch[] = GetFilterQuery("V.".$key,$val, $match);
299 break;
300 case "EVENT3":
301 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
302 $arSqlSearch[] = GetFilterQuery("E.EVENT3",$val, $match);
303 break;
304 case "DATE":
305 if (CheckDateTime($val))
306 $arSqlSearch[] = "E.DATE_ENTER=".$DB->CharToDateFunction($val);
307 break;
308 case "DATE1":
309 if (CheckDateTime($val))
310 $arSqlSearch[] = "E.DATE_ENTER>=".$DB->CharToDateFunction($val, "SHORT");
311 break;
312 case "DATE2":
313 if (CheckDateTime($val))
314 $arSqlSearch[] = "E.DATE_ENTER<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
315 break;
316 case "REDIRECT_URL":
317 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
318 $arSqlSearch[] = GetFilterQuery("E.REDIRECT_URL",$val,$match,array("/","\\",".","?","#",":"));
319 break;
320 case "MONEY":
321 $arSqlSearch_h[] = "MONEY='".roundDB($val)."'";
322 break;
323 case "MONEY1":
324 $arSqlSearch_h[] = "MONEY>='".roundDB($val)."'";
325 break;
326 case "MONEY2":
327 $arSqlSearch_h[] = "MONEY<='".roundDB($val)."'";
328 break;
329 case "SESSION_ID":
330 case "GUEST_ID":
331 case "ADV_ID":
332 case "HIT_ID":
333 case "COUNTRY_ID":
334 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
335 $arSqlSearch[] = GetFilterQuery("E.".$key,$val,$match);
336 break;
337 case "ADV_BACK":
338 $arSqlSearch[] = ($val=="Y") ? "E.ADV_BACK='Y'" : "E.ADV_BACK='N'";
339 break;
340 case "REFERER_URL":
341 case "URL":
342 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
343 $arSqlSearch[] = GetFilterQuery("E.".$key,$val,$match,array("/","\\",".","?","#",":"));
344 break;
345 case "COUNTRY":
346 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
347 $arSqlSearch[] = GetFilterQuery("C.NAME", $val, $match);
348 break;
349 case "SITE_ID":
350 if (is_array($val)) $val = implode(" | ", $val);
351 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
352 $arSqlSearch[] = GetFilterQuery("E.SITE_ID", $val, $match);
353 break;
354 case "REFERER_SITE_ID":
355 if (is_array($val)) $val = implode(" | ", $val);
356 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
357 $arSqlSearch[] = GetFilterQuery("E.REFERER_SITE_ID", $val, $match);
358 break;
359 case "CURRENCY":
360 $CURRENCY = $val;
361 break;
362 }
363 }
364 }
365
366 $rate = 1;
368 $view_currency = $base_currency;
369 if ($base_currency <> '')
370 {
371 if (CModule::IncludeModule("currency"))
372 {
374 {
376 $view_currency = $CURRENCY;
377 }
378 }
379 }
380
381 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
382 foreach($arSqlSearch_h as $sqlWhere)
383 $strSqlSearch_h .= " and (".$sqlWhere.") ";
384
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";
400 else
401 {
402 $strSqlOrder = "ORDER BY E.ID";
403 }
404
405 if ($order!="asc")
406 {
407 $strSqlOrder .= " desc ";
408 }
409
410 if($arFilter["GROUP"]=="total")
411 {
412 $strSql = "
413 SELECT
414 COUNT(1) COUNTER,
415 round(sum(if(E.CHARGEBACK='Y',-E.MONEY,E.MONEY)*$rate),2) MONEY,
416 '".$DB->ForSql($view_currency)."' CURRENCY
417 FROM
418 b_stat_event_list E
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)
421 WHERE
422 $strSqlSearch
423 HAVING
424 1=1
425 $strSqlSearch_h
426 ";
427 }
428 else
429 {
430 $strSql = "
431 SELECT
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,
436 V.ID TYPE_ID,
437 V.DESCRIPTION, V.NAME, V.EVENT1, V.EVENT2,
438 C.NAME COUNTRY_NAME,
439 if (length(V.NAME)>0, V.NAME,
440 concat(ifnull(V.EVENT1,''),' / ',ifnull(V.EVENT2,''))) EVENT
441 FROM
442 b_stat_event_list E
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)
445 WHERE
446 $strSqlSearch
447 HAVING
448 1=1
449 $strSqlSearch_h
450 $strSqlOrder
451 LIMIT ".intval(COption::GetOptionString('statistic','RECORDS_LIMIT'))."
452 ";
453 }
454
455 $res = $DB->Query($strSql);
456
457 return $res;
458 }
459
460 public static function Delete($ID)
461 {
462 $DB = CDatabase::GetModuleConnection('statistic');
463 $ID = intval($ID);
464 $strSql = "
465 SELECT
466 L.EVENT_ID,
467 L.MONEY,
468 L.SESSION_ID,
469 L.GUEST_ID,
470 L.ADV_ID,
471 L.ADV_BACK,
472 L.COUNTRY_ID,
473 L.CHARGEBACK,
474 L.SITE_ID,
475 ".$DB->DateToCharFunction("L.DATE_ENTER","SHORT")." DATE_ENTER,
476 ".$DB->DateToCharFunction("L.DATE_ENTER","FULL")." DATE_ENTER_FULL
477 FROM
478 b_stat_event_list L,
479 b_stat_event E
480 WHERE
481 L.ID = '$ID'
482 and E.ID = L.EVENT_ID
483 ";
484 $a = $DB->Query($strSql);
485 if ($ar = $a->Fetch())
486 {
487 // уменьшаем счетчик у страны
488 CStatistics::UpdateCountry($ar["COUNTRY_ID"], Array("C_EVENTS" => 1), $ar["DATE_ENTER"], "SHORT", "-");
489
490 // уменьшаем счетчик по дням
491 $arFields = Array(
492 "COUNTER" => "COUNTER-1",
493 "MONEY" => "MONEY - ".doubleval($ar["MONEY"])
494 );
495 $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")."')");
496 // если уже была свертка то
497 if (intval($rows)<=0)
498 {
499 // уменьшим счетчик на типе события
500 $arFields = Array(
501 "COUNTER" => "COUNTER-1",
502 "MONEY" => "MONEY - ".doubleval($ar["MONEY"])
503 );
504 $DB->Update("b_stat_event",$arFields,"WHERE ID='".intval($ar["EVENT_ID"])."'");
505 }
506 // если в связке есть нулевые значения то ее можно удалить
507 $strSql = "DELETE FROM b_stat_event_day WHERE COUNTER=0";
508 $DB->Query($strSql);
509
510 // чистим сессию
511 $arFields = Array("C_EVENTS" => "C_EVENTS-1");
512 $DB->Update("b_stat_session",$arFields,"WHERE ID='".intval($ar["SESSION_ID"])."'",'',false,false,false);
513
514 // чистим гостя
515 $DB->Update("b_stat_guest",$arFields,"WHERE ID='".intval($ar["GUEST_ID"])."'",'',false,false,false);
516
517 if (intval($ar["ADV_ID"])>0)
518 {
519 // изменяем доход рекламной кампании
520 if (doubleval($ar["MONEY"])!=0)
521 {
522 $sign = ($ar["CHARGEBACK"]=="Y") ? "+" : "-";
523 $arFields = array("REVENUE" => "REVENUE ".$sign." ".doubleval($ar["MONEY"]));
524 $DB->Update("b_stat_adv",$arFields,"WHERE ID='".intval($ar["ADV_ID"])."'", '',false,false,false);
525 }
526
527 // чистим связку с рекламной кампанией
528 if ($ar["ADV_BACK"]=="Y")
529 {
531 "COUNTER_BACK" => "COUNTER_BACK - 1",
532 "MONEY_BACK" => "MONEY_BACK - ".doubleval($ar["MONEY"]),
533 );
534 }
535 else
536 {
538 "COUNTER" => "COUNTER - 1",
539 "MONEY" => "MONEY - ".doubleval($ar["MONEY"]),
540 );
541 }
542 $DB->Update("b_stat_adv_event",$arFields,"WHERE ADV_ID='".intval($ar["ADV_ID"])."' and EVENT_ID='".$ar["EVENT_ID"]."'");
543
544 // чистим связку с рекламной кампанией по дням
545 if ($ar["ADV_BACK"]=="Y")
546 {
548 "COUNTER_BACK" => "COUNTER_BACK - 1",
549 "MONEY_BACK" => "MONEY_BACK - ".doubleval($ar["MONEY"]),
550 );
551 }
552 else
553 {
555 "COUNTER" => "COUNTER - 1",
556 "MONEY" => "MONEY - ".doubleval($ar["MONEY"]),
557 );
558 }
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);
560 }
561 // если в связках остались нулевые значения то их можно удалить
562 $strSql = "DELETE FROM b_stat_adv_event WHERE COUNTER<=0 and COUNTER_BACK<=0";
563 $DB->Query($strSql);
564 $strSql = "DELETE FROM b_stat_adv_event_day WHERE COUNTER<=0 and COUNTER_BACK<=0";
565 $DB->Query($strSql);
566
567 // уменьшаем счетчик по дням
568 $arFields = Array("C_EVENTS" => "C_EVENTS-1");
569 $DB->Update("b_stat_day",$arFields,"WHERE DATE_STAT = FROM_UNIXTIME('".MkDateTime(ConvertDateTime($ar["DATE_ENTER"],"D.M.Y"),"d.m.Y")."')");
570
571 // уменьшаем счетчик траффика
572 CTraffic::DecParam(array("EVENT" => 1), array(), false, $ar["DATE_ENTER_FULL"]);
573
574 if ($ar["SITE_ID"] <> '')
575 {
576 $arFields = Array("C_EVENTS" => "C_EVENTS-1");
577 $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")."')");
578
579 // уменьшаем счетчик траффика
580 CTraffic::DecParam(array(), array("EVENT" => 1), $ar["SITE_ID"], $ar["DATE_ENTER_FULL"]);
581 }
582
583 $strSql = "DELETE FROM b_stat_event_list WHERE ID='$ID'";
584 $DB->Query($strSql);
585
586 return true;
587 }
588 return false;
589 }
590}
static GetConvertFactor($curFrom, $curTo, $valDate="")
Определения currency_rate.php:407
Определения statevent.php:3
static DecodeGID($EVENT_GID)
Определения statevent.php:392
static IncParam($arParam, $arParamSite=false, $SITE_ID=false, $DATE=false, $DATE_FORMAT="FULL", $SIGN="+")
Определения traffic.php:23
static DecParam($arParam, $arParamSite=false, $SITE_ID=false, $DATE=false, $DATE_FORMAT="FULL")
Определения traffic.php:17
Определения statevent.php:5
static Add($EVENT_ID, $EVENT3, $DATE_ENTER, $PARAM, $MONEY="", $CURRENCY="", $CHARGEBACK="N")
Определения statevent.php:32
static GetListByGuest($GUEST_ID, $EVENT_ID=false, $EVENT3=false, $SEC=false)
Определения statevent.php:6
static Delete($ID)
Определения statevent.php:460
static GetList($by='s_id', $order='desc', $arFilter=[])
Определения statevent.php:261
$base_currency
Определения commerceml_g_run_cur.php:2
$arFields
Определения dblapprove.php:5
$arr
Определения file_new.php:624
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
GetFilterSqlSearch($arSqlSearch=array(), $FilterLogic="FILTER_logic")
Определения filter_tools.php:397
GetFilterQuery($field, $val, $procent="Y", $ex_sep=array(), $clob="N", $div_fields="Y", $clob_upper="N")
Определения filter_tools.php:383
if($ajaxMode) $ID
Определения get_user.php:27
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
ConvertDateTime($datetime, $to_format=false, $from_site=false, $bSearchInSitesOnly=false)
Определения tools.php:724
GetTime($timestamp, $type="SHORT", $site=false, $bSearchInSitesOnly=false)
Определения tools.php:1890
CheckDateTime($datetime, $format=false)
Определения tools.php:398
MkDateTime($strDT, $format="d.m.Y H:i:s")
Определения tools.php:1977
MakeTimeStamp($datetime, $format=false)
Определения tools.php:538
$order
Определения payment.php:8
$sign
Определения payment.php:69
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643
</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."%"
Определения waybill.php:936
else $a
Определения template.php:137
$val
Определения options.php:1793
$CURRENCY
Определения result.php:6
GetStatisticBaseCurrency()
Определения stat_tools.php:368
$rows
Определения options.php:264
$rs
Определения action.php:82
$arFilter
Определения user_search.php:106
$SITE_ID
Определения yandex_run.php:607