1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
referer.php
См. документацию.
1
<?php
2
class
CReferer
3
{
4
public
static
function
GetList
($by =
's_id'
,
$order
=
'desc'
,
$arFilter
= [], $is_filtered =
null
, &$total = 0, &$grby =
''
, &
$max
= 0)
5
{
6
$DB
= CDatabase::GetModuleConnection(
'statistic'
);
7
$group =
false
;
8
$strSqlGroup =
"GROUP BY L.PROTOCOL, L.SITE_NAME, L.URL_FROM, R.HITS, R.SESSIONS"
;
9
$url_from =
$DB
->Concat(
"L.PROTOCOL"
,
"L.SITE_NAME"
,
"L.URL_FROM"
);
10
$arSqlSearch = Array();
11
$find_group =
""
;
12
13
if
(is_array(
$arFilter
))
14
{
15
foreach
(
$arFilter
as
$key
=>
$val
)
16
{
17
if
(is_array(
$val
))
18
{
19
if
(
count
(
$val
) <= 0)
20
continue
;
21
}
22
else
23
{
24
if
( ((
string
)
$val
==
''
) || (
$val
===
"NOT_REF"
) )
25
continue
;
26
}
27
$match_value_set = array_key_exists(
$key
.
"_EXACT_MATCH"
,
$arFilter
);
28
$key
= strtoupper(
$key
);
29
switch
(
$key
)
30
{
31
case
"ID"
:
32
case
"SESSION_ID"
:
33
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"N"
&& $match_value_set) ?
"Y"
:
"N"
;
34
$arSqlSearch[] =
GetFilterQuery
(
"L."
.
$key
,
$val
,$match);
35
break
;
36
case
"DATE1"
:
37
if
(
CheckDateTime
(
$val
))
38
$arSqlSearch[] =
"L.DATE_HIT >= "
.$DB->CharToDateFunction(
$val
,
"SHORT"
);
39
break
;
40
case
"DATE2"
:
41
if
(
CheckDateTime
(
$val
))
42
$arSqlSearch[] =
"L.DATE_HIT < "
.CStatistics::DBDateAdd(
$DB
->CharToDateFunction(
$val
,
"SHORT"
), 1);
43
break
;
44
case
"FROM_PROTOCOL"
:
45
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"Y"
&& $match_value_set) ?
"N"
:
"Y"
;
46
$arSqlSearch[] =
GetFilterQuery
(
"L.PROTOCOL"
,
$val
,$match,
array
(
"/"
,
"\\"
,
":"
));
47
break
;
48
case
"FROM_DOMAIN"
:
49
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"Y"
&& $match_value_set) ?
"N"
:
"Y"
;
50
$arSqlSearch[] =
GetFilterQuery
(
"L.SITE_NAME"
,
$val
,$match,
array
(
"."
));
51
break
;
52
case
"FROM_PAGE"
:
53
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"Y"
&& $match_value_set) ?
"N"
:
"Y"
;
54
$arSqlSearch[] =
GetFilterQuery
(
"L.URL_FROM"
,
$val
,$match,
array
(
"/"
,
"\\"
,
"."
,
"?"
,
"#"
,
":"
,
":"
));
55
break
;
56
case
"FROM"
:
57
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"Y"
&& $match_value_set) ?
"N"
:
"Y"
;
58
$arSqlSearch[] =
GetFilterQuery
($url_from,
$val
, $match,
array
(
"/"
,
"\\"
,
"."
,
"?"
,
"#"
,
":"
),
"N"
,
"N"
);
59
break
;
60
case
"TO"
:
61
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"Y"
&& $match_value_set) ?
"N"
:
"Y"
;
62
$arSqlSearch[] =
GetFilterQuery
(
"L.URL_TO"
,
$val
,$match,
array
(
"/"
,
"\\"
,
"."
,
"?"
,
"#"
,
":"
));
63
break
;
64
case
"TO_404"
:
65
$arSqlSearch[] = (
$val
==
"Y"
) ?
"L.URL_TO_404='Y'"
:
"L.URL_TO_404='N'"
;
66
break
;
67
case
"GROUP"
:
68
$group =
true
;
69
if
(
$val
==
"S"
)
70
{
71
$find_group=
"S"
;
72
$strSqlGroup =
"GROUP BY L.SITE_NAME, R.HITS, R.SESSIONS"
;
73
$url_from =
"L.SITE_NAME"
;
74
}
75
else
$find_group=
"U"
;
76
break
;
77
case
"SITE_ID"
:
78
if
(is_array(
$val
))
$val
= implode(
" | "
,
$val
);
79
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"N"
&& $match_value_set) ?
"Y"
:
"N"
;
80
$arSqlSearch[] =
GetFilterQuery
(
"L.SITE_ID"
,
$val
, $match);
81
break
;
82
}
83
}
84
}
85
86
$strSqlSearch =
GetFilterSqlSearch
($arSqlSearch);
87
$grby = ($find_group==
"U"
|| $find_group==
"S"
) ? $find_group :
""
;
88
89
if
($grby ==
''
)
90
{
91
if
($by ==
"s_id"
) $strSqlOrder =
" ORDER BY L.ID "
;
92
elseif
($by ==
"s_site_id"
) $strSqlOrder =
" ORDER BY L.SITE_ID "
;
93
elseif
($by ==
"s_url_from"
) $strSqlOrder =
" ORDER BY URL_FROM "
;
94
elseif
($by ==
"s_url_to"
) $strSqlOrder =
" ORDER BY L.URL_TO "
;
95
elseif
($by ==
"s_date_hit"
) $strSqlOrder =
" ORDER BY L.DATE_HIT "
;
96
elseif
($by ==
"s_session_id"
) $strSqlOrder =
" ORDER BY L.SESSION_ID "
;
97
else
98
{
99
$strSqlOrder =
"ORDER BY L.ID"
;
100
}
101
102
if
(
$order
!=
"asc"
)
103
{
104
$strSqlOrder .=
" desc "
;
105
}
106
107
$strSql =
"
108
SELECT /*TOP*/
109
"
.$url_from.
" as URL_FROM,
110
L.ID,
111
L.SESSION_ID,
112
L.SITE_ID,
113
"
.
$DB
->DateToCharFunction(
"L.DATE_HIT"
).
" DATE_HIT,
114
L.URL_TO,
115
L.URL_TO_404
116
FROM
117
b_stat_referer_list L
118
WHERE
119
"
.$strSqlSearch.
"
120
"
.$strSqlOrder.
"
121
"
;
122
}
123
elseif
(
IsFiltered
($strSqlSearch) || $grby==
"U"
)
124
{
125
if
($by ==
"s_url_from"
) $strSqlOrder =
"ORDER BY URL_FROM"
;
126
elseif
($by ==
"s_quantity"
) $strSqlOrder =
"ORDER BY QUANTITY"
;
127
elseif
($by ==
"s_average_hits"
) $strSqlOrder =
"ORDER BY AVERAGE_HITS"
;
128
else
129
{
130
$strSqlOrder =
"ORDER BY QUANTITY"
;
131
}
132
133
if
(
$order
==
"desc"
)
134
{
135
$strSqlOrder .=
" desc "
;
136
}
137
138
$strSql =
"
139
SELECT
140
count(L.ID) as COUNTER
141
FROM
142
b_stat_referer_list L
143
LEFT JOIN b_stat_referer R ON (R.ID = L.REFERER_ID)
144
WHERE
145
"
.$strSqlSearch.
"
146
"
.$strSqlGroup.
"
147
"
;
148
$c =
$DB
->Query($strSql);
149
$total = 0;
150
$arrCount =
array
();
151
while
($cr = $c->Fetch())
152
{
153
$total += intval($cr[
"COUNTER"
]);
154
$arrCount[] = intval($cr[
"COUNTER"
]);
155
}
156
if
(
count
($arrCount)>0)
157
$max
= max($arrCount);
158
$strSql =
"
159
SELECT /*TOP*/
160
"
.$url_from.
" URL_FROM,
161
count(L.ID) QUANTITY,
162
(count(L.ID)*100)/$total C_PERCENT,
163
R.HITS/R.SESSIONS AVERAGE_HITS
164
FROM
165
b_stat_referer_list L
166
LEFT JOIN b_stat_referer R ON (R.ID = L.REFERER_ID)
167
WHERE
168
"
.$strSqlSearch.
"
169
"
.$strSqlGroup.
"
170
"
.$strSqlOrder.
"
171
"
;
172
}
173
else
//if($grby=="S")
174
{
175
if
($by ==
"s_url_from"
) $strSqlOrder =
"ORDER BY URL_FROM"
;
176
elseif
($by ==
"s_quantity"
) $strSqlOrder =
"ORDER BY QUANTITY"
;
177
elseif
($by ==
"s_average_hits"
) $strSqlOrder =
"ORDER BY AVERAGE_HITS"
;
178
else
179
{
180
$strSqlOrder =
"ORDER BY QUANTITY"
;
181
}
182
183
if
(
$order
==
"desc"
)
184
{
185
$strSqlOrder .=
" desc "
;
186
}
187
188
$strSql =
"SELECT sum(R.SESSIONS) TOTAL, max(R.SESSIONS) MAX FROM b_stat_referer R"
;
189
$c =
$DB
->Query($strSql);
190
$cr = $c->Fetch();
191
$total = intval($cr[
"TOTAL"
]);
192
$max
= intval($cr[
"MAX"
]);
193
$strSql =
"
194
SELECT /*TOP*/
195
R.SITE_NAME URL_FROM,
196
sum(R.SESSIONS) QUANTITY,
197
(sum(R.SESSIONS)*100)/$total C_PERCENT,
198
sum(R.HITS)/sum(R.SESSIONS) AVERAGE_HITS
199
FROM
200
b_stat_referer R
201
GROUP BY R.SITE_NAME
202
"
.$strSqlOrder.
"
203
"
;
204
}
205
206
$res
=
$DB
->Query(
CStatistics::DBTopSql
($strSql));
207
208
return
$res
;
209
}
210
}
CReferer
Определения
referer.php:3
CReferer\GetList
static GetList($by='s_id', $order='desc', $arFilter=[], $is_filtered=null, &$total=0, &$grby='', &$max=0)
Определения
referer.php:4
CStatistics\DBTopSql
static DBTopSql($strSql, $nTopCount=false)
Определения
statistic.php:628
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$res
$res
Определения
filter_act.php:7
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
IsFiltered
IsFiltered($strSqlSearch)
Определения
filter_tools.php:337
$DB
global $DB
Определения
cron_frame.php:29
CheckDateTime
CheckDateTime($datetime, $format=false)
Определения
tools.php:398
$order
$order
Определения
payment.php:8
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
$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
$max
$max
Определения
template_copy.php:262
$arFilter
$arFilter
Определения
user_search.php:106
bitrix
modules
statistic
classes
general
referer.php
Создано системой
1.14.0