1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
useronline.php
См. документацию.
1
<?php
2
3
class
CUserOnline
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
}
CUserOnline
Определения
useronline.php:4
CUserOnline\GetList
static GetList(&$guest_count, &$session_count, $arOrder=Array(), $arFilter=Array())
Определения
useronline.php:24
CUserOnline\GetGuestCount
static GetGuestCount()
Определения
useronline.php:5
$arr
$arr
Определения
file_new.php:624
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
GetFilterSqlSearch
GetFilterSqlSearch($arSqlSearch=array(), $FilterLogic="FILTER_logic")
Определения
filter_tools.php:397
GetFilterQuery
GetFilterQuery($field, $val, $procent="Y", $ex_sep=array(), $clob="N", $div_fields="Y", $clob_upper="N")
Определения
filter_tools.php:383
$DB
global $DB
Определения
cron_frame.php:29
$order
$order
Определения
payment.php:8
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
$ar
$ar
Определения
options.php:199
$key
if(empty($signedUserToken)) $key
Определения
quickway.php:257
count
</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
$val
Определения
options.php:1793
$rs
$rs
Определения
action.php:82
$arFilter
$arFilter
Определения
user_search.php:106
bitrix
modules
statistic
classes
mysql
useronline.php
Создано системой
1.14.0