78 public static function GetList($by =
'',
$order =
'desc',
$arFilter = [], &$is_filtered =
false, $limit =
'', &$arrGROUP_DAYS = [], &$strSql_res =
'')
80 $DB = CDatabase::GetModuleConnection(
'statistic');
82 $arSqlSearch = Array();
83 $arSqlSearch_h = Array();
85 $filter_period =
false;
98 $filter_period =
true;
101 $strSqlPeriod =
"sum(if(D.DATE_STAT<FROM_UNIXTIME('$date_from'),0, if(D.DATE_STAT>FROM_UNIXTIME('$date_to'),0,";
106 $strSqlPeriod =
"sum(if(D.DATE_STAT<FROM_UNIXTIME('$date_from'),0,";
112 $filter_period =
true;
113 $strSqlPeriod =
"sum(if(D.DATE_STAT>FROM_UNIXTIME('$date_to'),0,";
126 if( ((
string)
$val ==
'') || (
$val ===
"NOT_REF") )
129 $match_value_set = array_key_exists(
$key.
"_EXACT_MATCH",
$arFilter);
134 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
139 $arSqlSearch_h[] =
"C_TIME_FIRST >= ".$DB->CharToDateFunction(
$val,
"SHORT");
143 $arSqlSearch_h[] =
"C_TIME_FIRST < ".$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
147 $arSqlSearch_h[] =
"C_TIME_LAST >= ".$DB->CharToDateFunction(
$val,
"SHORT");
151 $arSqlSearch_h[] =
"C_TIME_LAST < ".$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
155 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
159 $arSqlSearch[] =
"A.PRIORITY>='".intval(
$val).
"'";
162 $arSqlSearch[] =
"A.PRIORITY<='".intval(
$val).
"'";
165 $arSqlSearch_h[] =
"NEW_GUESTS>='".intval(
$val).
"'";
168 $arSqlSearch_h[] =
"NEW_GUESTS<='".intval(
$val).
"'";
172 $arSqlSearch_h[] =
"GUESTS_BACK>='".intval(
$val).
"'";
174 $arSqlSearch_h[] =
"GUESTS>='".intval(
$val).
"'";
178 $arSqlSearch_h[] =
"GUESTS_BACK<='".intval(
$val).
"'";
180 $arSqlSearch_h[] =
"GUESTS<='".intval(
$val).
"'";
184 $arSqlSearch_h[] =
"FAVORITES_BACK>='".intval(
$val).
"'";
186 $arSqlSearch_h[] =
"FAVORITES>='".intval(
$val).
"'";
190 $arSqlSearch_h[] =
"FAVORITES_BACK<='".intval(
$val).
"'";
192 $arSqlSearch_h[] =
"FAVORITES<='".intval(
$val).
"'";
196 $arSqlSearch_h[] =
"HOSTS_BACK>='".intval(
$val).
"'";
198 $arSqlSearch_h[] =
"C_HOSTS>='".intval(
$val).
"'";
202 $arSqlSearch_h[] =
"HOSTS_BACK<='".intval(
$val).
"'";
204 $arSqlSearch_h[] =
"C_HOSTS<='".intval(
$val).
"'";
208 $arSqlSearch_h[] =
"SESSIONS_BACK>='".intval(
$val).
"'";
210 $arSqlSearch_h[] =
"SESSIONS>='".intval(
$val).
"'";
214 $arSqlSearch_h[] =
"SESSIONS_BACK<='".intval(
$val).
"'";
216 $arSqlSearch_h[] =
"SESSIONS<='".intval(
$val).
"'";
220 $arSqlSearch_h[] =
"HITS_BACK>='".intval(
$val).
"'";
222 $arSqlSearch_h[] =
"HITS>='".intval(
$val).
"'";
226 $arSqlSearch_h[] =
"HITS_BACK<='".intval(
$val).
"'";
228 $arSqlSearch_h[] =
"HITS<='".intval(
$val).
"'";
231 $arSqlSearch_h[] =
"COST>='".doubleval(
$val).
"'";
234 $arSqlSearch_h[] =
"COST<='".doubleval(
$val).
"'";
237 $arSqlSearch_h[] =
"REVENUE>='".doubleval(
$val).
"'";
240 $arSqlSearch_h[] =
"REVENUE<='".doubleval(
$val).
"'";
243 $arSqlSearch_h[] =
"BENEFIT>='".doubleval(
$val).
"'";
246 $arSqlSearch_h[] =
"BENEFIT<='".doubleval(
$val).
"'";
249 $arSqlSearch_h[] =
"ROI>='".doubleval(
$val).
"'";
252 $arSqlSearch_h[] =
"ROI<='".doubleval(
$val).
"'";
256 $arSqlSearch_h[] =
"ATTENT_BACK>='".doubleval(
$val).
"'";
258 $arSqlSearch_h[] =
"ATTENT>='".doubleval(
$val).
"'";
263 $arSqlSearch_h[] =
"ATTENT_BACK<='".doubleval(
$val).
"'";
265 $arSqlSearch_h[] =
"ATTENT<='".doubleval(
$val).
"'";
268 case "VISITORS_PER_DAY1":
269 $arSqlSearch_h[] =
"VISITORS_PER_DAY>='".doubleval(
$val).
"'";
271 case "VISITORS_PER_DAY2":
272 $arSqlSearch_h[] =
"VISITORS_PER_DAY<='".doubleval(
$val).
"'";
275 $arSqlSearch_h[] =
"ADV_TIME>=".doubleval(
$val).
"*86400";
278 $arSqlSearch_h[] =
"ADV_TIME<=".doubleval(
$val).
"*86400";
284 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
296 if (CModule::IncludeModule(
"currency"))
307 foreach($arSqlSearch_h as $sqlWhere)
308 $strSqlSearch_h .=
" and (".$sqlWhere.
") ";
311 $find_group = ($find_group ==
'') ?
"NOT_REF" : $find_group;
313 $arrFields_1 =
array(
314 "C_TIME_FIRST",
"C_TIME_LAST",
"CURRENCY",
315 "DATE_FIRST",
"DATE_LAST",
"ADV_TIME",
316 "GUESTS",
"NEW_GUESTS",
"FAVORITES",
317 "C_HOSTS",
"SESSIONS",
"HITS",
318 "GUESTS_BACK",
"FAVORITES_BACK",
"HOSTS_BACK",
319 "SESSIONS_BACK",
"HITS_BACK",
"ATTENT",
320 "ATTENT_BACK",
"NEW_VISITORS",
"RETURNED_VISITORS",
321 "VISITORS_PER_DAY",
"COST",
"REVENUE",
322 "BENEFIT",
"SESSION_COST",
"VISITOR_COST",
"ROI",
324 if ($find_group==
"referer1") array_push($arrFields_1,
"REFERER1");
325 if ($find_group==
"referer2") array_push($arrFields_1,
"REFERER2");
327 $arrFields_2 =
array(
328 "GUESTS_TODAY",
"NEW_GUESTS_TODAY",
"FAVORITES_TODAY",
329 "C_HOSTS_TODAY",
"SESSIONS_TODAY",
"HITS_TODAY",
330 "GUESTS_BACK_TODAY",
"FAVORITES_BACK_TODAY",
"HOSTS_BACK_TODAY",
331 "SESSIONS_BACK_TODAY",
"HITS_BACK_TODAY",
"GUESTS_YESTERDAY",
332 "NEW_GUESTS_YESTERDAY",
"FAVORITES_YESTERDAY",
"C_HOSTS_YESTERDAY",
333 "SESSIONS_YESTERDAY",
"HITS_YESTERDAY",
"GUESTS_BACK_YESTERDAY",
334 "FAVORITES_BACK_YESTERDAY",
"HOSTS_BACK_YESTERDAY",
"SESSIONS_BACK_YESTERDAY",
335 "HITS_BACK_YESTERDAY",
"GUESTS_BEF_YESTERDAY",
"NEW_GUESTS_BEF_YESTERDAY",
336 "FAVORITES_BEF_YESTERDAY",
"C_HOSTS_BEF_YESTERDAY",
"SESSIONS_BEF_YESTERDAY",
337 "HITS_BEF_YESTERDAY",
"GUESTS_BACK_BEF_YESTERDAY",
"FAVORITES_BACK_BEF_YESTERDAY",
338 "HOSTS_BACK_BEF_YESTERDAY",
"SESSIONS_BACK_BEF_YESTERDAY",
"HITS_BACK_BEF_YESTERDAY",
339 "A.ID",
"REFERER1",
"REFERER2",
340 "A.PRIORITY",
"A.EVENTS_VIEW",
"A.DESCRIPTION",
341 "GUESTS_PERIOD",
"C_HOSTS_PERIOD",
"NEW_GUESTS_PERIOD",
342 "FAVORITES_PERIOD",
"SESSIONS_PERIOD",
"HITS_PERIOD",
343 "GUESTS_BACK_PERIOD",
"HOSTS_BACK_PERIOD",
"FAVORITES_BACK_PERIOD",
344 "SESSIONS_BACK_PERIOD",
"HITS_BACK_PERIOD",
347 $arrFields = $arrFields_1;
348 if ($find_group==
"NOT_REF")
349 $arrFields = array_merge($arrFields, $arrFields_2);
360 $key = array_search(strtoupper($by), $arrFields);
362 $key = array_search(
"A.".strtoupper($by), $arrFields);
365 $strSqlOrder =
" ORDER BY ".$arrFields[
$key];
366 elseif ($by ==
"s_dropdown")
367 $strSqlOrder =
"ORDER BY A.ID desc, A.REFERER1, A.REFERER2";
368 elseif ($by ==
"s_referers")
369 $strSqlOrder =
"ORDER BY A.REFERER1, A.REFERER2";
372 if ($find_group==
"NOT_REF")
374 $strSqlOrder =
" ORDER BY SESSIONS_TODAY $order, SESSIONS_YESTERDAY $order, SESSIONS_BEF_YESTERDAY $order, SESSIONS_PERIOD $order, SESSIONS ";
378 $strSqlOrder =
" ORDER BY SESSIONS ";
381 $strSqlOrder .=
" ".$order;
383 $limit = (intval($limit)>0) ? intval($limit) : intval(COption::GetOptionString(
'statistic',
'RECORDS_LIMIT'));
387 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.GUESTS_DAY,0),0)) GUESTS_TODAY,
388 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.NEW_GUESTS,0),0)) NEW_GUESTS_TODAY,
389 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.FAVORITES,0),0)) FAVORITES_TODAY,
390 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.C_HOSTS_DAY,0),0)) C_HOSTS_TODAY,
391 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.SESSIONS,0),0)) SESSIONS_TODAY,
392 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.HITS,0),0)) HITS_TODAY,
393 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.GUESTS_DAY_BACK,0),0)) GUESTS_BACK_TODAY,
394 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.FAVORITES_BACK,0),0)) FAVORITES_BACK_TODAY,
395 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.HOSTS_DAY_BACK,0),0)) HOSTS_BACK_TODAY,
396 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.SESSIONS_BACK,0),0)) SESSIONS_BACK_TODAY,
397 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.HITS_BACK,0),0)) HITS_BACK_TODAY,
400 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.GUESTS_DAY,0),0)) GUESTS_YESTERDAY,
401 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.NEW_GUESTS,0),0)) NEW_GUESTS_YESTERDAY,
402 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.FAVORITES,0),0)) FAVORITES_YESTERDAY,
403 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.C_HOSTS_DAY,0),0)) C_HOSTS_YESTERDAY,
404 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.SESSIONS,0),0)) SESSIONS_YESTERDAY,
405 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.HITS,0),0)) HITS_YESTERDAY,
406 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.GUESTS_DAY_BACK,0),0)) GUESTS_BACK_YESTERDAY,
407 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.FAVORITES_BACK,0),0)) FAVORITES_BACK_YESTERDAY,
408 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.HOSTS_DAY_BACK,0),0)) HOSTS_BACK_YESTERDAY,
409 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.SESSIONS_BACK,0),0)) SESSIONS_BACK_YESTERDAY,
410 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.HITS_BACK,0),0)) HITS_BACK_YESTERDAY,
412 -- THE DAY BEFORE YESTERDAY
413 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.GUESTS_DAY,0),0)) GUESTS_BEF_YESTERDAY,
414 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.NEW_GUESTS,0),0)) NEW_GUESTS_BEF_YESTERDAY,
415 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.FAVORITES,0),0)) FAVORITES_BEF_YESTERDAY,
416 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.C_HOSTS_DAY,0),0)) C_HOSTS_BEF_YESTERDAY,
417 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.SESSIONS,0),0)) SESSIONS_BEF_YESTERDAY,
418 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.HITS,0),0)) HITS_BEF_YESTERDAY,
419 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.GUESTS_DAY_BACK,0),0)) GUESTS_BACK_BEF_YESTERDAY,
420 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.FAVORITES_BACK,0),0)) FAVORITES_BACK_BEF_YESTERDAY,
421 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.HOSTS_DAY_BACK,0),0)) HOSTS_BACK_BEF_YESTERDAY,
422 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.SESSIONS_BACK,0),0)) SESSIONS_BACK_BEF_YESTERDAY,
423 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.HITS_BACK,0),0)) HITS_BACK_BEF_YESTERDAY,
425 if ($find_group==
"NOT_REF")
429 A.ID, A.REFERER1, A.REFERER2, A.PRIORITY, A.EVENTS_VIEW, A.DESCRIPTION,
430 A.DATE_FIRST C_TIME_FIRST,
431 A.DATE_LAST C_TIME_LAST,
432 '".$DB->ForSql($view_currency).
"' CURRENCY,
433 ".
$DB->DateToCharFunction(
"A.DATE_FIRST",
"SHORT").
" DATE_FIRST,
434 ".
$DB->DateToCharFunction(
"A.DATE_LAST",
"SHORT").
" DATE_LAST,
435 UNIX_TIMESTAMP(ifnull(A.DATE_LAST,0))-UNIX_TIMESTAMP(ifnull(A.DATE_FIRST,0)) ADV_TIME,
439 ".($filter_period ? $strSqlPeriod.
'ifnull(D.GUESTS,0)'.$strT :
'A.GUESTS').
" GUESTS_PERIOD,
440 ".($filter_period ? $strSqlPeriod.
'ifnull(D.C_HOSTS,0)'.$strT :
'A.C_HOSTS').
" C_HOSTS_PERIOD,
441 ".($filter_period ? $strSqlPeriod.
'ifnull(D.NEW_GUESTS,0)'.$strT :
'A.NEW_GUESTS').
" NEW_GUESTS_PERIOD,
442 ".($filter_period ? $strSqlPeriod.
'ifnull(D.FAVORITES,0)'.$strT :
'A.FAVORITES').
" FAVORITES_PERIOD,
443 ".($filter_period ? $strSqlPeriod.
'ifnull(D.SESSIONS,0)'.$strT :
'A.SESSIONS').
" SESSIONS_PERIOD,
444 ".($filter_period ? $strSqlPeriod.
'ifnull(D.HITS,0)'.$strT :
'A.HITS').
" HITS_PERIOD,
445 ".($filter_period ? $strSqlPeriod.
'ifnull(D.GUESTS_DAY_BACK,0)'.$strT :
'A.GUESTS_BACK').
" GUESTS_BACK_PERIOD,
446 ".($filter_period ? $strSqlPeriod.
'ifnull(D.HOSTS_DAY_BACK,0)'.$strT :
'A.HOSTS_BACK').
" HOSTS_BACK_PERIOD,
447 ".($filter_period ? $strSqlPeriod.
'ifnull(D.FAVORITES_BACK,0)'.$strT :
'A.FAVORITES').
" FAVORITES_BACK_PERIOD,
448 ".($filter_period ? $strSqlPeriod.
'ifnull(D.SESSIONS_BACK,0)'.$strT :
'A.SESSIONS_BACK').
" SESSIONS_BACK_PERIOD,
449 ".($filter_period ? $strSqlPeriod.
'ifnull(D.HITS_BACK,0)'.$strT :
'A.HITS_BACK').
" HITS_BACK_PERIOD,
452 A.GUESTS, A.NEW_GUESTS, A.FAVORITES, A.C_HOSTS, A.SESSIONS, A.HITS, A.GUESTS_BACK, A.FAVORITES_BACK, A.HOSTS_BACK, A.SESSIONS_BACK, A.HITS_BACK,
455 if(A.SESSIONS>0,round(A.HITS/A.SESSIONS,2),-1) ATTENT,
456 if(A.SESSIONS_BACK>0,round(A.HITS_BACK/A.SESSIONS_BACK,2),-1) ATTENT_BACK,
457 if(A.GUESTS>0,round((A.NEW_GUESTS/A.GUESTS)*100,2),-1) NEW_VISITORS,
458 if(A.GUESTS>0,round((A.GUESTS_BACK/A.GUESTS)*100,2),-1) RETURNED_VISITORS,
460 round((((UNIX_TIMESTAMP(ifnull(A.DATE_LAST,0))-UNIX_TIMESTAMP(ifnull(A.DATE_FIRST,0)))/86400)),0)>=1, round(A.GUESTS/((UNIX_TIMESTAMP(ifnull(A.DATE_LAST,0)) - UNIX_TIMESTAMP(ifnull(A.DATE_FIRST,0)))/86400),2),-1) VISITORS_PER_DAY,
463 round(round(A.COST,2)*$rate,2) COST,
464 round(round(A.REVENUE,2)*$rate,2) REVENUE,
465 round(round(A.REVENUE-A.COST,2)*$rate,2) BENEFIT,
466 round(round(if(A.SESSIONS>0,A.COST/A.SESSIONS,0),2)*$rate,2) SESSION_COST,
467 round(round(if(A.GUESTS>0,A.COST/A.GUESTS,0),2)*$rate,2) VISITOR_COST,
468 if(A.COST>0,round(((A.REVENUE-A.COST)/A.COST)*100,2),-1) ROI
472 LEFT JOIN b_stat_adv_day D ON (D.ADV_ID = A.ID)
476 A.ID, A.REFERER1, A.REFERER2, A.COST, A.REVENUE, A.PRIORITY, A.EVENTS_VIEW, A.DESCRIPTION, A.DATE_FIRST, A.DATE_LAST, A.GUESTS, A.NEW_GUESTS, A.FAVORITES, A.C_HOSTS, A.SESSIONS, A.HITS, A.GUESTS_BACK, A.FAVORITES_BACK, A.HOSTS_BACK, A.SESSIONS_BACK, A.HITS_BACK
481 if ($find_group==
"referer1")
490 min(A.DATE_LAST) C_TIME_FIRST,
491 max(A.DATE_LAST) C_TIME_LAST,
492 '".$DB->ForSql($view_currency).
"' CURRENCY,
493 ".
$DB->DateToCharFunction(
"min(A.DATE_FIRST)",
"SHORT").
" DATE_FIRST,
494 ".
$DB->DateToCharFunction(
"max(A.DATE_LAST)",
"SHORT").
" DATE_LAST,
495 UNIX_TIMESTAMP(max(ifnull(A.DATE_LAST,0)))-UNIX_TIMESTAMP(min(ifnull(A.DATE_FIRST,0))) ADV_TIME,
498 sum(A.GUESTS) GUESTS,
499 sum(A.NEW_GUESTS) NEW_GUESTS,
500 sum(A.FAVORITES) FAVORITES,
501 sum(A.C_HOSTS) C_HOSTS,
502 sum(A.SESSIONS) SESSIONS,
504 sum(A.GUESTS_BACK) GUESTS_BACK,
505 sum(A.FAVORITES_BACK) FAVORITES_BACK,
506 sum(A.HOSTS_BACK) HOSTS_BACK,
507 sum(A.SESSIONS_BACK) SESSIONS_BACK,
508 sum(A.HITS_BACK) HITS_BACK,
511 if(sum(A.SESSIONS)>0,round(sum(A.HITS)/sum(A.SESSIONS),2),-1) ATTENT,
512 if(sum(A.SESSIONS_BACK)>0,round(sum(A.HITS_BACK)/sum(A.SESSIONS_BACK),2),-1) ATTENT_BACK,
513 if(sum(A.GUESTS)>0,round((sum(A.NEW_GUESTS)/sum(A.GUESTS))*100,2),-1) NEW_VISITORS,
514 if(sum(A.GUESTS)>0,round((sum(A.GUESTS_BACK)/sum(A.GUESTS))*100,2),-1) RETURNED_VISITORS,
516 round((((UNIX_TIMESTAMP(max(ifnull(A.DATE_LAST,0)))-UNIX_TIMESTAMP(min(ifnull(A.DATE_FIRST,0))))/86400)),0)>=1, round(sum(A.GUESTS)/((UNIX_TIMESTAMP(max(ifnull(A.DATE_LAST,0))) - UNIX_TIMESTAMP(min(ifnull(A.DATE_FIRST,0))))/86400),2),-1) VISITORS_PER_DAY,
519 round(round(sum(A.COST),2)*$rate,2) COST,
520 round(round(sum(A.REVENUE),2)*$rate,2) REVENUE,
521 round(round((sum(A.REVENUE)-sum(A.COST)),2)*$rate,2) BENEFIT,
522 round(round(if(sum(A.SESSIONS)>0,sum(A.COST)/sum(A.SESSIONS),0),2)*$rate,2) SESSION_COST,
523 round(round(if(sum(A.GUESTS)>0,sum(A.COST)/sum(A.GUESTS),0),2)*$rate,2) VISITOR_COST,
524 if(sum(A.COST)>0,round(((sum(A.REVENUE)-sum(A.COST))/sum(A.COST))*100,2),-1) ROI
541 ".($filter_period ? $strSqlPeriod.
'ifnull(D.GUESTS,0)'.$strT :
'sum(A.GUESTS)').
" GUESTS_PERIOD,
542 ".($filter_period ? $strSqlPeriod.
'ifnull(D.C_HOSTS,0)'.$strT :
'sum(A.C_HOSTS)').
" C_HOSTS_PERIOD,
543 ".($filter_period ? $strSqlPeriod.
'ifnull(D.NEW_GUESTS,0)'.$strT :
'sum(A.NEW_GUESTS)').
" NEW_GUESTS_PERIOD,
544 ".($filter_period ? $strSqlPeriod.
'ifnull(D.FAVORITES,0)'.$strT :
'sum(A.FAVORITES)').
" FAVORITES_PERIOD,
545 ".($filter_period ? $strSqlPeriod.
'ifnull(D.SESSIONS,0)'.$strT :
'sum(A.SESSIONS)').
" SESSIONS_PERIOD,
546 ".($filter_period ? $strSqlPeriod.
'ifnull(D.HITS,0)'.$strT :
'sum(A.HITS)').
" HITS_PERIOD,
547 ".($filter_period ? $strSqlPeriod.
'ifnull(D.GUESTS_BACK,0)'.$strT :
'A.GUESTS_BACK').
" GUESTS_BACK_PERIOD,
548 ".($filter_period ? $strSqlPeriod.
'ifnull(D.HOSTS_BACK,0)'.$strT :
'A.HOSTS_BACK').
" HOSTS_BACK_PERIOD,
549 ".($filter_period ? $strSqlPeriod.
'ifnull(D.FAVORITES_BACK,0)'.$strT :
'sum(A.FAVORITES)').
" FAVORITES_BACK_PERIOD,
550 ".($filter_period ? $strSqlPeriod.
'ifnull(D.SESSIONS_BACK,0)'.$strT :
'sum(A.SESSIONS_BACK)').
" SESSIONS_BACK_PERIOD,
551 ".($filter_period ? $strSqlPeriod.
'ifnull(D.HITS_BACK,0)'.$strT :
'sum(A.HITS_BACK)').
" HITS_BACK_PERIOD
554 LEFT JOIN b_stat_adv A ON (D.ADV_ID = A.ID)
559 $z =
$DB->Query($strSql_days);
560 while (
$zr =
$z->Fetch())
562 $arrGROUP_DAYS[
$zr[$group]] =
$zr;
565 $strSql_res = $strSql;
576 $is_filtered = (
IsFiltered($strSqlSearch) || $strSqlSearch_h <>
'' || $group || $filter_period);
602 $DB = CDatabase::GetModuleConnection(
'statistic');
605 $arSqlSearch = Array();
606 $arSqlSearch_h = Array();
607 $strSqlSearch_h =
"";
608 $filter_period =
false;
619 $filter_period =
true;
622 $strSqlPeriod =
"sum(if(AE.DATE_STAT<FROM_UNIXTIME('$date_from'),0, if(AE.DATE_STAT>FROM_UNIXTIME('$date_to'),0,";
627 $strSqlPeriod =
"sum(if(AE.DATE_STAT<FROM_UNIXTIME('$date_from'),0,";
633 $filter_period =
true;
634 $strSqlPeriod =
"sum(if(AE.DATE_STAT>FROM_UNIXTIME('$date_to'),0,";
646 if( ((
string)
$val ==
'') || (
$val ===
"NOT_REF") )
649 $match_value_set = array_key_exists(
$key.
"_EXACT_MATCH",
$arFilter);
654 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"N" && $match_value_set) ?
"Y" :
"N";
659 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
663 $match = (
$arFilter[
$key.
"_EXACT_MATCH"]==
"Y" && $match_value_set) ?
"N" :
"Y";
666 case "COUNTER_PERIOD_1":
667 $arSqlSearch_h[] =
"COUNTER_PERIOD>='".intval(
$val).
"'";
669 case "COUNTER_PERIOD_2":
670 $arSqlSearch_h[] =
"COUNTER_PERIOD<='".intval(
$val).
"'";
672 case "COUNTER_BACK_PERIOD_1":
673 $arSqlSearch_h[] =
"COUNTER_BACK_PERIOD>='".intval(
$val).
"'";
675 case "COUNTER_BACK_PERIOD_2":
676 $arSqlSearch_h[] =
"COUNTER_BACK_PERIOD<='".intval(
$val).
"'";
678 case "COUNTER_ADV_DYNAMIC_LIST":
679 $arSqlSearch_h[] =
"(COUNTER_PERIOD>='".intval(
$val).
"' or COUNTER_BACK_PERIOD>='".intval(
$val).
"')";
682 $arSqlSearch_h[] =
"(MONEY+MONEY_BACK)>='".roundDB(
$val).
"'";
685 $arSqlSearch_h[] =
"(MONEY+MONEY_BACK)<='".roundDB(
$val).
"'";
687 case "MONEY_PERIOD_1":
688 $arSqlSearch_h[] =
"(MONEY_PERIOD+MONEY_BACK_PERIOD)>='".roundDB(
$val).
"'";
690 case "MONEY_PERIOD_2":
691 $arSqlSearch_h[] =
"(MONEY_PERIOD+MONEY_BACK_PERIOD)<='".roundDB(
$val).
"'";
697 if ($by ==
"s_id") $strSqlOrder =
"ORDER BY E.ID";
698 elseif ($by ==
"s_event1") $strSqlOrder =
"ORDER BY E.EVENT1";
699 elseif ($by ==
"s_event2") $strSqlOrder =
"ORDER BY E.EVENT2";
700 elseif ($by ==
"s_sort") $strSqlOrder =
"ORDER BY C_SORT";
701 elseif ($by ==
"s_name") $strSqlOrder =
"ORDER BY E.NAME";
702 elseif ($by ==
"s_description") $strSqlOrder =
"ORDER BY E.DESCRIPTION";
703 elseif ($by ==
"s_counter") $strSqlOrder =
"ORDER BY COUNTER";
704 elseif ($by ==
"s_counter_back") $strSqlOrder =
"ORDER BY COUNTER_BACK";
705 elseif ($by ==
"s_counter_period") $strSqlOrder =
"ORDER BY COUNTER_PERIOD";
706 elseif ($by ==
"s_counter_back_period") $strSqlOrder =
"ORDER BY COUNTER_BACK_PERIOD";
707 elseif ($by ==
"s_counter_today") $strSqlOrder =
"ORDER BY COUNTER_TODAY";
708 elseif ($by ==
"s_counter_back_today") $strSqlOrder =
"ORDER BY COUNTER_BACK_TODAY";
709 elseif ($by ==
"s_counter_yestoday") $strSqlOrder =
"ORDER BY COUNTER_YESTERDAY";
710 elseif ($by ==
"s_counter_back_yestoday") $strSqlOrder =
"ORDER BY COUNTER_BACK_YESTERDAY";
711 elseif ($by ==
"s_counter_bef_yestoday") $strSqlOrder =
"ORDER BY COUNTER_BEF_YESTERDAY";
712 elseif ($by ==
"s_counter_back_bef_yestoday") $strSqlOrder =
"ORDER BY COUNTER_BACK_BEF_YESTERDAY";
718 COUNTER_TODAY desc, COUNTER_BACK_TODAY desc,
719 COUNTER_YESTERDAY desc, COUNTER_BACK_YESTERDAY desc,
720 COUNTER_BEF_YESTERDAY desc, COUNTER_BACK_BEF_YESTERDAY desc,
721 ".($filter_period?
"COUNTER_PERIOD desc, COUNTER_BACK_PERIOD desc,":
"").
"
722 COUNTER desc, COUNTER_BACK
727 $strSqlOrder =
"ORDER BY COUNTER";
732 $strSqlOrder .=
" desc ";
736 foreach($arSqlSearch_h as $sqlWhere)
737 $strSqlSearch_h .=
" and (".$sqlWhere.
") ";
739 $find_group = ($find_group ==
'') ?
"NOT_REF" : $find_group;
742 sum(if(to_days(curdate())=to_days(AE.DATE_STAT),ifnull(AE.COUNTER,0),0)) COUNTER_TODAY,
743 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=1,ifnull(AE.COUNTER,0),0)) COUNTER_YESTERDAY,
744 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=2,ifnull(AE.COUNTER,0),0)) COUNTER_BEF_YESTERDAY,
745 sum(if(to_days(curdate())=to_days(AE.DATE_STAT),ifnull(AE.COUNTER_BACK,0),0)) COUNTER_BACK_TODAY,
746 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=1,ifnull(AE.COUNTER_BACK,0),0)) COUNTER_BACK_YESTERDAY,
747 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=2,ifnull(AE.COUNTER_BACK,0),0)) COUNTER_BACK_BEF_YESTERDAY,
748 ".($filter_period ? $strSqlPeriod.
'ifnull(AE.COUNTER,0)'.$strT :
'sum(AE.COUNTER)').
" COUNTER_PERIOD,
749 ".($filter_period ? $strSqlPeriod.
'ifnull(AE.COUNTER_BACK,0)'.$strT :
'sum(AE.COUNTER_BACK)').
" COUNTER_BACK_PERIOD,
751 sum(if(to_days(curdate())=to_days(AE.DATE_STAT),ifnull(AE.MONEY,0),0)) MONEY_TODAY,
752 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=1,ifnull(AE.MONEY,0),0)) MONEY_YESTERDAY,
753 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=2,ifnull(AE.MONEY,0),0)) MONEY_BEF_YESTERDAY,
754 sum(if(to_days(curdate())=to_days(AE.DATE_STAT),ifnull(AE.MONEY_BACK,0),0)) MONEY_BACK_TODAY,
755 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=1,ifnull(AE.MONEY_BACK,0),0)) MONEY_BACK_YESTERDAY,
756 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=2,ifnull(AE.MONEY_BACK,0),0)) MONEY_BACK_BEF_YESTERDAY,
757 ".($filter_period ? $strSqlPeriod.
'ifnull(AE.MONEY,0)'.$strT :
'sum(AE.MONEY)').
" MONEY_PERIOD,
758 ".($filter_period ? $strSqlPeriod.
'ifnull(AE.MONEY_BACK,0)'.$strT :
'sum(AE.MONEY_BACK)').
" MONEY_BACK_PERIOD,
761 if ($find_group==
"NOT_REF")
765 E.ID, E.EVENT1, E.EVENT2, E.C_SORT, E.NAME, E.DESCRIPTION,
766 sum(AE.COUNTER) COUNTER,
767 sum(AE.COUNTER_BACK) COUNTER_BACK,
769 sum(AE.MONEY_BACK) MONEY_BACK,
771 if (length(E.NAME)>0, E.NAME,
772 concat(ifnull(E.EVENT1,''),' / ',ifnull(E.EVENT2,''))) EVENT
775 b_stat_adv_event_day AE
778 and E.ADV_VISIBLE = 'Y'
779 and AE.ADV_ID = '$ID'
780 and AE.EVENT_ID = E.ID
781 GROUP BY E.ID, E.EVENT1, E.EVENT2, E.C_SORT, E.NAME, E.DESCRIPTION
786 LIMIT ".intval(COption::GetOptionString(
'statistic',
'RECORDS_LIMIT')).
"
791 if ($find_group==
"event1")
799 sum(E.C_SORT) C_SORT,
801 sum(AE.COUNTER) COUNTER,
802 sum(AE.COUNTER_BACK) COUNTER_BACK,
804 sum(AE.MONEY_BACK) MONEY_BACK
807 b_stat_adv_event_day AE
810 and E.ADV_VISIBLE = 'Y'
811 and AE.ADV_ID = '$ID'
812 and AE.EVENT_ID = E.ID
818 LIMIT ".intval(COption::GetOptionString(
'statistic',
'RECORDS_LIMIT')).
"
829 $DB = CDatabase::GetModuleConnection(
'statistic');
831 $group =
"A.REFERER1";
833 $group =
"A.REFERER2";
836 $filter_period =
false;
848 $filter_period =
true;
851 $strSqlPeriod =
"sum(if(AE.DATE_STAT<FROM_UNIXTIME('$date_from'),0, if(AE.DATE_STAT>FROM_UNIXTIME('$date_to'),0,";
856 $strSqlPeriod =
"sum(if(AE.DATE_STAT<FROM_UNIXTIME('$date_from'),0,";
862 $filter_period =
true;
863 $strSqlPeriod =
"sum(if(AE.DATE_STAT>FROM_UNIXTIME('$date_to'),0,";
873 while (
$ar =
$a->Fetch()) $str_id .=
",".intval(
$ar[
"ID"]);
874 $where =
"and A.ID in ($str_id)";
879 E.ID, E.EVENT1, E.EVENT2, E.C_SORT, E.NAME, E.DESCRIPTION,
880 sum(AE.COUNTER) COUNTER,
881 sum(AE.COUNTER_BACK) COUNTER_BACK,
882 sum(if(to_days(curdate())=to_days(AE.DATE_STAT),ifnull(AE.COUNTER,0),0)) COUNTER_TODAY,
883 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=1,ifnull(AE.COUNTER,0),0)) COUNTER_YESTERDAY,
884 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=2,ifnull(AE.COUNTER,0),0)) COUNTER_BEF_YESTERDAY,
885 sum(if(to_days(curdate())=to_days(AE.DATE_STAT),ifnull(AE.COUNTER_BACK,0),0)) COUNTER_BACK_TODAY,
886 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=1,ifnull(AE.COUNTER_BACK,0),0)) COUNTER_BACK_YESTERDAY,
887 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=2,ifnull(AE.COUNTER_BACK,0),0)) COUNTER_BACK_BEF_YESTERDAY,
888 ".($filter_period ? $strSqlPeriod.
'ifnull(AE.COUNTER,0)'.$strT :
'sum(AE.COUNTER)').
" COUNTER_PERIOD,
889 ".($filter_period ? $strSqlPeriod.
'ifnull(AE.COUNTER_BACK,0)'.$strT :
'sum(AE.COUNTER_BACK)').
" COUNTER_BACK_PERIOD,
892 sum(AE.MONEY_BACK) MONEY_BACK,
893 sum(if(to_days(curdate())=to_days(AE.DATE_STAT),ifnull(AE.MONEY,0),0)) MONEY_TODAY,
894 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=1,ifnull(AE.MONEY,0),0)) MONEY_YESTERDAY,
895 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=2,ifnull(AE.MONEY,0),0)) MONEY_BEF_YESTERDAY,
896 sum(if(to_days(curdate())=to_days(AE.DATE_STAT),ifnull(AE.MONEY_BACK,0),0)) MONEY_BACK_TODAY,
897 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=1,ifnull(AE.MONEY_BACK,0),0)) MONEY_BACK_YESTERDAY,
898 sum(if(to_days(curdate())-to_days(AE.DATE_STAT)=2,ifnull(AE.MONEY_BACK,0),0)) MONEY_BACK_BEF_YESTERDAY,
899 ".($filter_period ? $strSqlPeriod.
'ifnull(AE.MONEY,0)'.$strT :
'sum(AE.MONEY)').
" MONEY_PERIOD,
900 ".($filter_period ? $strSqlPeriod.
'ifnull(AE.MONEY_BACK,0)'.$strT :
'sum(AE.MONEY_BACK)').
" MONEY_BACK_PERIOD,
902 if (length(E.NAME)>0, E.NAME,
903 concat(ifnull(E.EVENT1,''),' / ',ifnull(E.EVENT2,''))) EVENT
906 b_stat_adv_event_day AE,
911 and $group='".
$DB->ForSql($value,255).
"'
913 and E.ID = AE.EVENT_ID
914 and E.ADV_VISIBLE = 'Y'
916 E.ID, E.EVENT1, E.EVENT2, E.C_SORT, E.NAME, E.DESCRIPTION
919 COUNTER_TODAY desc, COUNTER_BACK_TODAY desc,
920 COUNTER_YESTERDAY desc, COUNTER_BACK_YESTERDAY desc,
921 COUNTER_BEF_YESTERDAY desc, COUNTER_BACK_BEF_YESTERDAY desc,
922 COUNTER_PERIOD desc, COUNTER_BACK_PERIOD desc,
923 COUNTER desc, COUNTER_BACK
924 LIMIT ".intval(COption::GetOptionString(
'statistic',
'RECORDS_LIMIT')).
"