1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
guest.php
См. документацию.
1<?php
3{
4 public static function GetList($by = 's_last_date', $order = 'desc', $arFilter = [])
5 {
6 $DB = CDatabase::GetModuleConnection('statistic');
7 $arSqlSearch = Array();
8
9 $bGroup = false;
10 $arrGroup = array(
11 "G.ID" => true,
12 "G.C_EVENTS" => true,
13 "G.FIRST_SITE_ID" => true,
14 "G.LAST_SITE_ID" => true,
15 "G.SESSIONS" => true,
16 "G.HITS" => true,
17 "G.FAVORITES" => true,
18 "G.FIRST_URL_FROM" => true,
19 "G.FIRST_URL_TO" => true,
20 "G.FIRST_URL_TO_404" => true,
21 "G.FIRST_ADV_ID" => true,
22 "G.FIRST_REFERER1" => true,
23 "G.FIRST_REFERER2" => true,
24 "G.FIRST_REFERER3" => true,
25 "G.LAST_ADV_ID" => true,
26 "G.LAST_ADV_BACK" => true,
27 "G.LAST_REFERER1" => true,
28 "G.LAST_REFERER2" => true,
29 "G.LAST_REFERER3" => true,
30 "G.LAST_USER_ID" => true,
31 "G.LAST_USER_AUTH" => true,
32 "G.LAST_URL_LAST" => true,
33 "G.LAST_URL_LAST_404" => true,
34 "G.LAST_USER_AGENT" => true,
35 "G.LAST_IP" => true,
36 "G.LAST_LANGUAGE" => true,
37 "G.LAST_COUNTRY_ID" => true,
38 "G.LAST_CITY_ID" => true,
39 "G.FIRST_DATE" => true,
40 "G.LAST_DATE" => true,
41 "G.FIRST_SESSION_ID" => true,
42 "G.LAST_SESSION_ID" => true,
43 "CITY.REGION" => true,
44 "CITY.NAME" => true,
45 );
46 $from0 = $from1 = $from2 = "";
47 $select0 = $select1 = "";
48
49 if (is_array($arFilter))
50 {
51 foreach ($arFilter as $key => $val)
52 {
53 if(is_array($val))
54 {
55 if(count($val) <= 0)
56 continue;
57 }
58 else
59 {
60 if( ((string)$val == '') || ($val === "NOT_REF") )
61 continue;
62 }
63 $match_value_set = array_key_exists($key."_EXACT_MATCH", $arFilter);
64 $key = strtoupper($key);
65 switch($key)
66 {
67 case "ID":
68 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
69 $arSqlSearch[] = GetFilterQuery("G.ID",$val,$match);
70 break;
71 case "REGISTERED":
72 if ($val=="Y")
73 $arSqlSearch[] = "G.LAST_USER_ID>0 and G.LAST_USER_ID is not null";
74 elseif ($val=="N")
75 $arSqlSearch[] = "G.LAST_USER_ID<=0 or G.LAST_USER_ID is null";
76 break;
77 case "FIRST_DATE1":
79 $arSqlSearch[] = "G.FIRST_DATE >= ".$DB->CharToDateFunction($val, "SHORT");
80 break;
81 case "FIRST_DATE2":
83 $arSqlSearch[] = "G.FIRST_DATE < ".CStatistics::DBDateAdd($DB->CharToDateFunction($val, "SHORT"), 1);
84 break;
85 case "LAST_DATE1":
87 $arSqlSearch[] = "G.LAST_DATE >= ".$DB->CharToDateFunction($val, "SHORT");
88 break;
89 case "LAST_DATE2":
91 $arSqlSearch[] = "G.LAST_DATE < ".CStatistics::DBDateAdd($DB->CharToDateFunction($val, "SHORT"), 1);
92 break;
93 case "PERIOD_DATE1":
96 {
97 $arSqlSearch[] = "S.DATE_FIRST >= ".$DB->CharToDateFunction($val, "SHORT");
98 $from0 = " INNER JOIN b_stat_session S ON (S.GUEST_ID = G.ID) ";
99 $select0 = "count(S.ID) as SESS,";
100 $bGroup = true;
101 }
102 break;
103 case "PERIOD_DATE2":
105 if (CheckDateTime($val))
106 {
107 $arSqlSearch[] = "S.DATE_LAST < ".CStatistics::DBDateAdd($DB->CharToDateFunction($val, "SHORT"), 1);
108 $from0 = " INNER JOIN b_stat_session S ON (S.GUEST_ID = G.ID) ";
109 $select0 = "count(S.ID) as SESS,";
110 $bGroup = true;
111 }
112 break;
113 case "SITE_ID":
114 if (is_array($val)) $val = implode(" | ", $val);
115 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
116 $arSqlSearch[] = GetFilterQuery("G.LAST_SITE_ID, G.FIRST_SITE_ID", $val, $match);
117 break;
118 case "LAST_SITE_ID":
119 case "FIRST_SITE_ID":
120 if (is_array($val)) $val = implode(" | ", $val);
121 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
122 $arSqlSearch[] = GetFilterQuery("G.".$key, $val, $match);
123 break;
124 case "URL":
125 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
126 $arSqlSearch[] = GetFilterQuery("G.FIRST_URL_FROM,G.FIRST_URL_TO,G.LAST_URL_LAST", $val, $match, array("/","\\",".","?","#",":"));
127 break;
128 case "URL_404":
129 if ($val=="Y")
130 $arSqlSearch[] = "G.FIRST_URL_TO_404='Y' or G.LAST_URL_LAST_404='Y'";
131 elseif ($val=="N")
132 $arSqlSearch[] = "G.FIRST_URL_TO_404='N' and G.LAST_URL_LAST_404='N'";
133 break;
134 case "USER_AGENT":
135 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
136 $arSqlSearch[] = GetFilterQuery("G.LAST_USER_AGENT", $val, $match);
137 break;
138 case "ADV":
139 if ($val=="Y")
140 {
141 $arSqlSearch[] = "(
142 G.FIRST_ADV_ID>0 and
143 G.FIRST_ADV_ID is not null and
144 G.FIRST_REFERER1<>'NA' and G.FIRST_REFERER2<>'NA'
145 or
146 G.LAST_ADV_ID>0 and
147 G.LAST_ADV_ID is not null and
148 G.LAST_REFERER1<>'NA' and G.LAST_REFERER2<>'NA'
149 )";
150 }
151 elseif ($val=="N")
152 {
153 $arSqlSearch[] = "((
154 G.FIRST_ADV_ID<=0 or
155 G.FIRST_ADV_ID is null or
156 (G.FIRST_REFERER1='NA' and G.FIRST_REFERER2='NA')
157 ) and (
158 G.LAST_ADV_ID<=0 or
159 G.LAST_ADV_ID is null or
160 (G.LAST_REFERER1='NA' and G.LAST_REFERER2='NA')
161 ))";
162 }
163 break;
164 case "ADV_ID":
165 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
166 $arSqlSearch[] = GetFilterQuery("G.FIRST_ADV_ID,G.LAST_ADV_ID", $val, $match);
167 break;
168 case "REFERER1":
169 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
170 $arSqlSearch[] = GetFilterQuery("G.FIRST_REFERER1,G.LAST_REFERER1", $val, $match);
171 break;
172 case "REFERER2":
173 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
174 $arSqlSearch[] = GetFilterQuery("G.FIRST_REFERER2,G.LAST_REFERER2", $val, $match);
175 break;
176 case "REFERER3":
177 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
178 $arSqlSearch[] = GetFilterQuery("G.FIRST_REFERER3,G.LAST_REFERER3", $val, $match);
179 break;
180 case "EVENTS1":
181 $arSqlSearch[] = "G.C_EVENTS>='".intval($val)."'";
182 break;
183 case "EVENTS2":
184 $arSqlSearch[] = "G.C_EVENTS<='".intval($val)."'";
185 break;
186 case "SESS1":
187 $arSqlSearch[] = "G.SESSIONS>='".intval($val)."'";
188 break;
189 case "SESS2":
190 $arSqlSearch[] = "G.SESSIONS<='".intval($val)."'";
191 break;
192 case "HITS1":
193 $arSqlSearch[] = "G.HITS>='".intval($val)."'";
194 break;
195 case "HITS2":
196 $arSqlSearch[] = "G.HITS<='".intval($val)."'";
197 break;
198 case "FAVORITES":
199 if ($val=="Y")
200 $arSqlSearch[] = "G.FAVORITES='Y'";
201 elseif ($val=="N")
202 $arSqlSearch[] = "G.FAVORITES<>'Y'";
203 break;
204 case "IP":
205 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
206 $arSqlSearch[] = GetFilterQuery("G.LAST_IP",$val,$match,array("."));
207 break;
208 case "LANG":
209 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
210 $arSqlSearch[] = GetFilterQuery("G.LAST_LANGUAGE", $val, $match);
211 break;
212 case "COUNTRY_ID":
213 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
214 $arSqlSearch[] = GetFilterQuery("G.LAST_COUNTRY_ID", $val, $match);
215 break;
216 case "COUNTRY":
217 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
218 $arSqlSearch[] = GetFilterQuery("C.NAME", $val, $match);
219 $select1 .= " , C.NAME LAST_COUNTRY_NAME ";
220 $from2 = " LEFT JOIN b_stat_country C ON (C.ID = G.LAST_COUNTRY_ID) ";
221 $arrGroup["C.NAME"] = true;
222 $bGroup = true;
223 break;
224 case "REGION":
225 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
226 $arSqlSearch[] = GetFilterQuery("CITY.REGION", $val, $match);
227 break;
228 case "CITY_ID":
229 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
230 $arSqlSearch[] = GetFilterQuery("G.LAST_CITY_ID", $val, $match);
231 break;
232 case "CITY":
233 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
234 $arSqlSearch[] = GetFilterQuery("CITY.NAME", $val, $match);
235 break;
236 case "USER":
237 if(COption::GetOptionInt("statistic", "dbnode_id") <= 0)
238 {
239 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
240 $arSqlSearch[] = $DB->IsNull("G.LAST_USER_ID","0").">0";
241 $arSqlSearch[] = GetFilterQuery("G.LAST_USER_ID,A.LOGIN,A.LAST_NAME,A.NAME", $val, $match);
242 $select1 .= ", ".$DB->Concat($DB->IsNull("A.NAME","''"), "' '", $DB->IsNull("A.LAST_NAME","''"))." USER_NAME, A.LOGIN";
243 $from1 = "LEFT JOIN b_user A ON (A.ID = G.LAST_USER_ID) ";
244 $arrGroup["A.NAME"] = true;
245 $arrGroup["A.LAST_NAME"] = true;
246 $arrGroup["A.LOGIN"] = true;
247 $bGroup = true;
248 }
249 break;
250 case "USER_ID":
251 if(COption::GetOptionInt("statistic", "dbnode_id") <= 0)
252 {
253 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
254 $arSqlSearch[] = $DB->IsNull("G.LAST_USER_ID","0").">0";
255 $arSqlSearch[] = GetFilterQuery("G.LAST_USER_ID", $val, $match);
256 $select1 .= ", ".$DB->Concat($DB->IsNull("A.NAME","''"), "' '", $DB->IsNull("A.LAST_NAME","''"))." USER_NAME, A.LOGIN";
257 $from1 = "LEFT JOIN b_user A ON (A.ID = G.LAST_USER_ID) ";
258 $arrGroup["A.NAME"] = true;
259 $arrGroup["A.LAST_NAME"] = true;
260 $arrGroup["A.LOGIN"] = true;
261 $bGroup = true;
262 }
263 break;
264 }
265 }
266 }
267
268 if ($by == "s_id") $strSqlOrder = "ORDER BY G.ID";
269 elseif ($by == "s_first_site_id") $strSqlOrder = "ORDER BY G.FIRST_SITE_ID";
270 elseif ($by == "s_last_site_id") $strSqlOrder = "ORDER BY G.LAST_SITE_ID";
271 elseif ($by == "s_events") $strSqlOrder = "ORDER BY G.C_EVENTS";
272 elseif ($by == "s_sessions") $strSqlOrder = "ORDER BY G.SESSIONS";
273 elseif ($by == "s_hits") $strSqlOrder = "ORDER BY G.HITS";
274 elseif ($by == "s_first_date") $strSqlOrder = "ORDER BY G.FIRST_DATE";
275 elseif ($by == "s_first_url_from") $strSqlOrder = "ORDER BY G.FIRST_URL_FROM";
276 elseif ($by == "s_first_url_to") $strSqlOrder = "ORDER BY G.FIRST_URL_TO";
277 elseif ($by == "s_first_adv_id") $strSqlOrder = "ORDER BY G.FIRST_ADV_ID";
278 elseif ($by == "s_last_date") $strSqlOrder = "ORDER BY ".CStatistics::DBFirstDate("G.LAST_DATE");
279 elseif ($by == "s_last_user_id") $strSqlOrder = "ORDER BY G.LAST_USER_ID";
280 elseif ($by == "s_last_url_last") $strSqlOrder = "ORDER BY G.LAST_URL_LAST";
281 elseif ($by == "s_last_user_agent") $strSqlOrder = "ORDER BY G.LAST_USER_AGENT";
282 elseif ($by == "s_last_ip") $strSqlOrder = "ORDER BY G.LAST_IP";
283 elseif ($by == "s_last_adv_id") $strSqlOrder = "ORDER BY G.LAST_ADV_ID";
284 elseif ($by == "s_last_country_id") $strSqlOrder = "ORDER BY G.LAST_COUNTRY_ID";
285 elseif ($by == "s_last_region_name") $strSqlOrder = "ORDER BY CITY.REGION";
286 elseif ($by == "s_last_city_id") $strSqlOrder = "ORDER BY G.LAST_CITY_ID";
287 else
288 {
289 $strSqlOrder = "ORDER BY ".CStatistics::DBFirstDate("G.LAST_DATE");
290 }
291
292 if ($order!="asc")
293 {
294 $strSqlOrder .= " desc ";
295 }
296
297 $strSqlGroup = $bGroup? "GROUP BY ".implode(", ", array_keys($arrGroup)): "";
298
299 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
300 $strSql = "
301 SELECT /*TOP*/
302 ".$select0."
303 G.ID, G.FIRST_SITE_ID, G.FIRST_SESSION_ID,
304 G.LAST_SESSION_ID, G.LAST_SITE_ID,
305 G.C_EVENTS, G.SESSIONS, G.HITS, G.FAVORITES,
306 G.FIRST_URL_FROM, G.FIRST_URL_TO, G.FIRST_URL_TO_404,
307 G.FIRST_ADV_ID, G.FIRST_REFERER1, G.FIRST_REFERER2, G.FIRST_REFERER3,
308 G.LAST_ADV_ID, G.LAST_ADV_BACK, G.LAST_REFERER1, G.LAST_REFERER2, G.LAST_REFERER3,
309 G.LAST_USER_ID, G.LAST_USER_AUTH, G.LAST_URL_LAST, G.LAST_URL_LAST_404,
310 G.LAST_USER_AGENT, G.LAST_IP, G.LAST_LANGUAGE, G.LAST_COUNTRY_ID,
311 CITY.REGION as LAST_REGION_NAME,
312 G.LAST_CITY_ID, CITY.NAME as LAST_CITY_NAME,
313 ".$DB->DateToCharFunction("G.FIRST_DATE")." FIRST_DATE,
314 ".$DB->DateToCharFunction("G.LAST_DATE")." LAST_DATE
315 ".$select1."
316 FROM
317 b_stat_guest G
318 ".$from0."
319 ".$from1."
320 ".$from2."
321 LEFT JOIN b_stat_city CITY ON (CITY.ID = G.LAST_CITY_ID)
322 WHERE
323 ".$strSqlSearch."
324 ".$strSqlGroup."
325 ".$strSqlOrder."
326 ";
327
328 $res = $DB->Query(CStatistics::DBTopSql($strSql));
329
330 return $res;
331 }
332
333 public static function GetByID($ID)
334 {
335 $DB = CDatabase::GetModuleConnection('statistic');
336 $ID = intval($ID);
337
338 $res = $DB->Query("
339 SELECT
340 G.*,
341 ".$DB->DateToCharFunction("G.FIRST_DATE")." FIRST_DATE,
342 ".$DB->DateToCharFunction("G.LAST_DATE")." LAST_DATE,
343 ".CStatistics::DBDateDiff("FS.DATE_LAST","FS.DATE_FIRST")." FSESSION_TIME,
344 ".CStatistics::DBDateDiff("LS.DATE_LAST","LS.DATE_FIRST")." LSESSION_TIME,
345 FS.HITS FSESSION_HITS,
346 LS.HITS LSESSION_HITS,
347 C.NAME COUNTRY_NAME,
348 CITY.REGION REGION_NAME,
349 CITY.NAME CITY_NAME,
350 G.LAST_CITY_INFO
351 FROM
352 b_stat_guest G
353 INNER JOIN b_stat_country C ON (C.ID = G.LAST_COUNTRY_ID)
354 LEFT JOIN b_stat_session FS ON (FS.ID = G.FIRST_SESSION_ID)
355 LEFT JOIN b_stat_session LS ON (LS.ID = G.LAST_SESSION_ID)
356 LEFT JOIN b_stat_city CITY ON (CITY.ID = G.LAST_CITY_ID)
357 WHERE
358 G.ID = '$ID'
359 ");
360
361 $res = new CStatResult($res);
362 return $res;
363 }
364}
Определения guest.php:3
static GetByID($ID)
Определения guest.php:333
static GetList($by='s_last_date', $order='desc', $arFilter=[])
Определения guest.php:4
Определения statresult.php:3
static DBTopSql($strSql, $nTopCount=false)
Определения statistic.php:628
static DBDateDiff($date1, $date2)
Определения statistic.php:645
</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
ResetFilterLogic($FilterLogic="FILTER_logic")
Определения filter_tools.php:342
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
global $DB
Определения cron_frame.php:29
CheckDateTime($datetime, $format=false)
Определения tools.php:398
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
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
$arFilter
Определения user_search.php:106