1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
useronline.php
См. документацию.
1<?php
2
4{
5 public static function GetGuestCount()
6 {
7 $DB = CDatabase::GetModuleConnection('statistic');
8 $interval = intval(COption::GetOptionString("statistic", "ONLINE_INTERVAL"));
9 $strSql = "
10 SELECT
11 count(distinct G.ID) CNT
12 FROM
13 b_stat_session S
14 INNER JOIN b_stat_guest G ON (G.ID = S.GUEST_ID)
15 WHERE
16 S.DATE_STAT = curdate()
17 and S.DATE_LAST > DATE_ADD(now(), INTERVAL - $interval SECOND)
18 ";
19 $rs = $DB->Query($strSql);
20 $ar = $rs->Fetch();
21 return intval($ar["CNT"]);
22 }
23
24 public static function GetList(&$guest_count, &$session_count, $arOrder=Array(), $arFilter=Array())
25 {
26 $DB = CDatabase::GetModuleConnection('statistic');
27 $interval = intval(COption::GetOptionString("statistic", "ONLINE_INTERVAL"));
28
29 $arSqlSearch = Array();
30 $from1 = "";
31 if (is_array($arFilter))
32 {
33 foreach ($arFilter as $key => $val)
34 {
35 if(is_array($val))
36 {
37 if(count($val) <= 0)
38 continue;
39 }
40 else
41 {
42 if( ((string)$val == '') || ($val === "NOT_REF") )
43 continue;
44 }
45 $match_value_set = array_key_exists($key."_EXACT_MATCH", $arFilter);
46 $key = strtoupper($key);
47 switch($key)
48 {
49 case "INTERVAL":
50 $interval = intval($val);
51 break;
52 case "ID":
53 case "GUEST_ID":
54 case "ADV_ID":
55 case "STOP_LIST_ID":
56 case "USER_ID":
57 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
58 $arSqlSearch[] = GetFilterQuery("S.".$key,$val,$match);
59 break;
60 case "COUNTRY_ID":
61 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
62 $arSqlSearch[] = GetFilterQuery("S.COUNTRY_ID",$val,$match);
63 break;
64 case "IP":
65 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
66 $arSqlSearch[] = GetFilterQuery("S.IP_LAST",$val,$match,array("."));
67 break;
68 case "REGISTERED":
69 $arSqlSearch[] = ($val=="Y") ? "S.USER_ID>0" : "(S.USER_ID<=0 or S.USER_ID is null)";
70 break;
71 case "HITS1":
72 $arSqlSearch[] = "S.HITS>='".intval($val)."'";
73 break;
74 case "HITS2":
75 $arSqlSearch[] = "S.HITS<='".intval($val)."'";
76 break;
77 case "ADV":
78 if ($val=="Y")
79 $arSqlSearch[] = "(S.ADV_ID>0 and S.ADV_ID is not null)";
80 elseif ($val=="N")
81 $arSqlSearch[] = "(S.ADV_ID<=0 or S.ADV_ID is null)";
82 break;
83 case "REFERER1":
84 case "REFERER2":
85 case "REFERER3":
86 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
87 $arSqlSearch[] = GetFilterQuery("S.".$key, $val, $match);
88 break;
89 case "STOP":
90 $arSqlSearch[] = ($val=="Y") ? "S.STOP_LIST_ID>0" : "(S.STOP_LIST_ID<=0 or S.STOP_LIST_ID is null)";
91 break;
92 case "COUNTRY":
93 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
94 $arSqlSearch[] = GetFilterQuery("C.NAME", $val, $match);
95 break;
96 case "LAST_SITE_ID":
97 $arSqlSearch[] = GetFilterQuery("S.".$key, $val, "N");
98 break;
99 case "URL_LAST":
100 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
101 $arSqlSearch[] = GetFilterQuery("S.".$key,$val,$match,array("/","\\",".","?","#",":"));
102 break;
103 case "FIRST_URL_FROM":
104 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
105 $arSqlSearch[] = GetFilterQuery("G.".$key,$val,$match,array("/","\\",".","?","#",":"));
106 break;
107 case "ADV_BACK":
108 case "NEW_GUEST":
109 case "URL_LAST_404":
110 case "URL_TO_404":
111 case "USER_AUTH":
112 $arSqlSearch[] = ($val=="Y") ? "S.".$key."='Y'" : "S.".$key."='N'";
113 break;
114 case "FAVORITES":
115 $arSqlSearch[] = ($val=="Y") ? "G.".$key."='Y'" : "G.".$key."='N'";
116 break;
117 case "USER":
118 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
119 $arSqlSearch[] = "ifnull(S.USER_ID,0)>0";
120 $arSqlSearch[] = GetFilterQuery("S.USER_ID,A.LOGIN,A.LAST_NAME,A.NAME", $val, $match);
121 $from1 = "LEFT JOIN b_user A ON (A.ID = S.USER_ID)";
122 break;
123 }
124 }
125 }
126
127 $by = "s_id";
128 $order = "desc";
129 if (is_array($arOrder) && !empty($arOrder))
130 {
131 foreach($arOrder as $by=>$order)
132 {
133 $by = mb_strtolower($by);
134 $order = mb_strtolower($order);
135 if ($order!="asc")
136 $order = "desc";
137 }
138 }
139
140 if ($by == "s_id") $strSqlOrder = "ORDER BY S.ID";
141 elseif ($by == "s_session_time") $strSqlOrder = "ORDER BY SESSION_TIME";
142 elseif ($by == "s_date_first") $strSqlOrder = "ORDER BY S.DATE_FIRST";
143 elseif ($by == "s_date_last") $strSqlOrder = "ORDER BY S.DATE_LAST";
144 elseif ($by == "s_user_id") $strSqlOrder = "ORDER BY S.USER_ID";
145 elseif ($by == "s_guest_id") $strSqlOrder = "ORDER BY S.GUEST_ID";
146 elseif ($by == "s_ip") $strSqlOrder = "ORDER BY S.IP_LAST";
147 elseif ($by == "s_hits") $strSqlOrder = "ORDER BY S.HITS ";
148 elseif ($by == "s_adv_id") $strSqlOrder = "ORDER BY S.ADV_ID ";
149 elseif ($by == "s_country_id") $strSqlOrder = "ORDER BY S.COUNTRY_ID ";
150 elseif ($by == "s_url_last") $strSqlOrder = "ORDER BY S.URL_LAST ";
151 elseif ($by == "s_url_to") $strSqlOrder = "ORDER BY S.URL_TO ";
152 else
153 {
154 $by = "s_id";
155 $strSqlOrder = "ORDER BY S.ID";
156 }
157 if ($order!="asc")
158 {
159 $strSqlOrder .= " desc ";
160 $order="desc";
161 }
162
163 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
164
165 $strSql = "
166 SELECT
167 S.ID,
168 S.ADV_ID, S.REFERER1, S.REFERER2, S.REFERER3, S.ADV_BACK,
169 S.LAST_SITE_ID, S.URL_LAST, S.URL_LAST_404, S.IP_LAST, S.HITS, S.USER_AUTH,
170 S.STOP_LIST_ID, S.GUEST_ID, G.FAVORITES, G.LAST_USER_ID,
171 UNIX_TIMESTAMP(S.DATE_LAST) - UNIX_TIMESTAMP(S.DATE_FIRST) SESSION_TIME,
172 ".$DB->DateToCharFunction("S.DATE_LAST")." DATE_LAST,
173 if(G.SESSIONS<=1,'Y','N') NEW_GUEST,
174 G.FIRST_URL_FROM,
175 G.FIRST_SITE_ID,
176 S.URL_FROM,
177 S.COUNTRY_ID,
178 C.NAME COUNTRY_NAME,
179 CITY.REGION REGION_NAME,
180 S.CITY_ID,
181 CITY.NAME CITY_NAME
182 FROM
183 b_stat_session S
184 INNER JOIN b_stat_guest G ON (G.ID = S.GUEST_ID)
185 INNER JOIN b_stat_country C ON (C.ID = S.COUNTRY_ID)
186 ".$from1."
187 LEFT JOIN b_stat_city CITY ON (CITY.ID = S.CITY_ID)
188 WHERE
189 S.DATE_STAT >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
190 and S.DATE_LAST > DATE_ADD(now(), INTERVAL - ".$interval." SECOND)
191 and ".$strSqlSearch."
192 ".$strSqlOrder."
193 ";
194
195 $arr = array();
196 $arrG = array();
197 $rs = $DB->Query($strSql);
198 while($ar = $rs->Fetch())
199 {
200 $arr[] = $ar;
201 $arrG[$ar["GUEST_ID"]] = $ar["GUEST_ID"];
202 }
203 $guest_count = count($arrG);
204 $session_count = count($arr);
205 $rs = new CDBResult;
206 $rs->InitFromArray($arr);
207 return $rs;
208 }
209}
Определения useronline.php:4
static GetList(&$guest_count, &$session_count, $arOrder=Array(), $arFilter=Array())
Определения useronline.php:24
static GetGuestCount()
Определения useronline.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
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
global $DB
Определения cron_frame.php:29
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
</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
$val
Определения options.php:1793
$rs
Определения action.php:82
$arFilter
Определения user_search.php:106