1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
page.php
См. документацию.
1
<?php
2
3
class
CPage
4
{
5
public
static
function
GetDynamicList
($URL, $by =
's_date'
,
$order
=
'desc'
,
$arFilter
= [])
6
{
7
$DB
= CDatabase::GetModuleConnection(
'statistic'
);
8
$arSqlSearch = Array();
9
$from_adv =
""
;
10
$where_adv =
""
;
11
$counter
=
"SUM(D.COUNTER)"
;
12
$enter_counter =
"SUM(D.ENTER_COUNTER)"
;
13
$exit_counter =
"SUM(if(D.EXIT_COUNTER>0,D.EXIT_COUNTER,0))"
;
14
if
(is_array(
$arFilter
))
15
{
16
if
(
$arFilter
[
"ADV"
] <>
''
)
17
{
18
$from_adv =
" , b_stat_page_adv A "
;
19
$where_adv =
"and A.PAGE_ID = D.ID"
;
20
21
if
(
$arFilter
[
"ADV_DATA_TYPE"
]==
"B"
)
22
{
23
$counter
=
"SUM(A.COUNTER_BACK)"
;
24
$enter_counter =
"SUM(A.ENTER_COUNTER_BACK)"
;
25
$exit_counter =
"SUM(if(A.EXIT_COUNTER_BACK>0,A.EXIT_COUNTER_BACK,0))"
;
26
}
27
elseif
(
$arFilter
[
"ADV_DATA_TYPE"
]==
"P"
)
28
{
29
$counter
=
"SUM(A.COUNTER)"
;
30
$enter_counter =
"SUM(A.ENTER_COUNTER)"
;
31
$exit_counter =
"SUM(if(A.EXIT_COUNTER>0,A.EXIT_COUNTER,0))"
;
32
}
33
else
34
{
35
$counter
=
"SUM(A.COUNTER + A.COUNTER_BACK)"
;
36
$enter_counter =
"SUM(A.ENTER_COUNTER + A.ENTER_COUNTER_BACK)"
;
37
$exit_counter =
"SUM(if(A.EXIT_COUNTER>0,A.EXIT_COUNTER,0) + if(A.EXIT_COUNTER_BACK>0,A.EXIT_COUNTER_BACK,0))"
;
38
}
39
}
40
41
foreach
(
$arFilter
as
$key
=>
$val
)
42
{
43
if
(is_array(
$val
))
44
{
45
if
(
count
(
$val
) <= 0)
46
continue
;
47
}
48
else
49
{
50
if
( ((
string
)
$val
==
''
) || (
$val
===
"NOT_REF"
) )
51
continue
;
52
}
53
$match_value_set = array_key_exists(
$key
.
"_EXACT_MATCH"
,
$arFilter
);
54
$key
= strtoupper(
$key
);
55
switch
(
$key
)
56
{
57
case
"DATE1"
:
58
if
(
CheckDateTime
(
$val
))
59
$arSqlSearch[] =
"D.DATE_STAT>="
.$DB->CharToDateFunction(
$val
,
"SHORT"
);
60
break
;
61
case
"DATE2"
:
62
if
(
CheckDateTime
(
$val
))
63
$arSqlSearch[] =
"D.DATE_STAT<"
.$DB->CharToDateFunction(
$val
,
"SHORT"
).
" + INTERVAL 1 DAY"
;
64
break
;
65
case
"ADV"
:
66
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"N"
&& $match_value_set) ?
"Y"
:
"N"
;
67
$arSqlSearch[] =
GetFilterQuery
(
"A.ADV_ID"
,
$val
,$match);
68
break
;
69
case
"IS_DIR"
:
70
$arSqlSearch[] = (
$val
==
"Y"
) ?
"D.DIR = 'Y'"
:
"D.DIR = 'N'"
;
71
break
;
72
}
73
}
74
}
75
76
if
($by ==
"s_date"
)
77
$strSqlOrder =
"ORDER BY D.DATE_STAT"
;
78
else
79
{
80
$strSqlOrder =
"ORDER BY D.DATE_STAT"
;
81
}
82
83
if
(
$order
!=
"asc"
)
84
{
85
$strSqlOrder .=
" desc "
;
86
}
87
88
$strSqlSearch =
GetFilterSqlSearch
($arSqlSearch);
89
$strSql =
"
90
SELECT
91
"
.$DB->DateToCharFunction(
"D.DATE_STAT"
,
"SHORT"
).
" DATE_STAT,
92
DAYOFMONTH(D.DATE_STAT) DAY,
93
MONTH(D.DATE_STAT) MONTH,
94
YEAR(D.DATE_STAT) YEAR,
95
$counter COUNTER,
96
$enter_counter ENTER_COUNTER,
97
$exit_counter EXIT_COUNTER
98
FROM
99
b_stat_page D
100
$from_adv
101
WHERE
102
$strSqlSearch
103
and D.URL_HASH = '"
.
crc32ex
($URL).
"'
104
$where_adv
105
GROUP BY D.DATE_STAT
106
$strSqlOrder
107
"
;
108
$res
=
$DB
->Query($strSql);
109
return
$res
;
110
}
111
112
public
static
function
GetList
($COUNTER_TYPE, $by =
's_counter'
,
$order
=
'desc'
,
$arFilter
= [])
113
{
114
$DB
= CDatabase::GetModuleConnection(
'statistic'
);
115
if
($COUNTER_TYPE!=
"ENTER_COUNTER"
&& $COUNTER_TYPE!=
"EXIT_COUNTER"
)
116
$COUNTER_TYPE =
"COUNTER"
;
117
$counter
=
"V."
.$COUNTER_TYPE;
118
$where_counter =
"and V."
.$COUNTER_TYPE.
">0"
;
119
$arSqlSearch = Array();
120
$arSqlSearch_h = Array();
121
$strSqlSearch_h =
""
;
122
$from_adv =
""
;
123
$where_adv =
""
;
124
if
(is_array(
$arFilter
))
125
{
126
if
(
$arFilter
[
"ADV"
] <>
''
)
127
{
128
$from_adv =
" , b_stat_page_adv A "
;
129
$where_adv =
"and A.PAGE_ID = V.ID"
;
130
131
if
(
$arFilter
[
"ADV_DATA_TYPE"
]==
"B"
)
132
{
133
$counter
=
"A."
.$COUNTER_TYPE.
"_BACK"
;
134
$where_counter =
"and A."
.$COUNTER_TYPE.
"_BACK>0"
;
135
}
136
elseif
(
$arFilter
[
"ADV_DATA_TYPE"
]==
"S"
)
137
{
138
$counter
=
"if(A."
.$COUNTER_TYPE.
">0, A."
.$COUNTER_TYPE.
", 0) + if(A."
.$COUNTER_TYPE.
"_BACK>0, A."
.$COUNTER_TYPE.
"_BACK, 0)"
;
139
$where_counter =
"and (A."
.$COUNTER_TYPE.
"_BACK>0 or A."
.$COUNTER_TYPE.
">0)"
;
140
}
141
elseif
(
$arFilter
[
"ADV_DATA_TYPE"
]==
"P"
)
142
{
143
$counter
=
"A."
.$COUNTER_TYPE;
144
$where_counter =
"and A."
.$COUNTER_TYPE.
">0"
;
145
}
146
}
147
148
foreach
(
$arFilter
as
$key
=>
$val
)
149
{
150
if
(is_array(
$val
))
151
{
152
if
(
count
(
$val
) <= 0)
153
continue
;
154
}
155
else
156
{
157
if
( ((
string
)
$val
==
''
) || (
$val
===
"NOT_REF"
) )
158
continue
;
159
}
160
$match_value_set = array_key_exists(
$key
.
"_EXACT_MATCH"
,
$arFilter
);
161
$key
= strtoupper(
$key
);
162
switch
(
$key
)
163
{
164
case
"DATE1"
:
165
if
(
CheckDateTime
(
$val
))
166
$arSqlSearch[] =
"V.DATE_STAT>="
.$DB->CharToDateFunction(
$val
,
"SHORT"
);
167
break
;
168
case
"DATE2"
:
169
if
(
CheckDateTime
(
$val
))
170
$arSqlSearch[] =
"V.DATE_STAT<"
.$DB->CharToDateFunction(
$val
,
"SHORT"
).
" + INTERVAL 1 DAY"
;
171
break
;
172
case
"SHOW"
:
173
case
"DIR"
:
174
$arSqlSearch[] = (
$val
==
"D"
) ?
"V.DIR='Y'"
:
"V.DIR='N'"
;
175
break
;
176
case
"SECTION"
:
177
case
"URL"
:
178
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"Y"
&& $match_value_set) ?
"N"
:
"Y"
;
179
$arSqlSearch[] =
GetFilterQuery
(
"V.URL"
,
$val
,$match,
array
(
"/"
,
"\\"
,
"_"
,
"."
,
":"
));
180
break
;
181
case
"SECTION_ID"
:
182
case
"URL_ID"
:
183
$arSqlSearch[] =
"(V.URL like '"
.$DB->ForSql(
$val
).
"' and V.URL<>'"
.
$DB
->ForSql(
$val
).
"')"
;
184
break
;
185
case
"PAGE_404"
:
186
case
"URL_404"
:
187
$arSqlSearch_h[] = (
$val
==
"Y"
) ?
"max(V.URL_404)='Y'"
:
"max(V.URL_404)='N'"
;
188
break
;
189
case
"ADV"
:
190
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"N"
&& $match_value_set) ?
"Y"
:
"N"
;
191
$arSqlSearch[] =
GetFilterQuery
(
"A.ADV_ID"
,
$val
,$match);
192
break
;
193
case
"SITE_ID"
:
194
if
(is_array(
$val
))
$val
= implode(
" | "
,
$val
);
195
$match = (
$arFilter
[
$key
.
"_EXACT_MATCH"
]==
"N"
&& $match_value_set) ?
"Y"
:
"N"
;
196
$arSqlSearch[] =
GetFilterQuery
(
"V.SITE_ID"
,
$val
, $match);
197
break
;
198
}
199
}
200
}
201
202
$strSqlSearch =
GetFilterSqlSearch
($arSqlSearch);
203
foreach
($arSqlSearch_h as $sqlWhere)
204
$strSqlSearch_h .=
" and ("
.$sqlWhere.
") "
;
205
206
if
($by ==
"s_url"
)
207
$strSqlOrder =
"ORDER BY V.URL"
;
208
elseif
($by ==
"s_counter"
)
209
$strSqlOrder =
"ORDER BY COUNTER"
;
210
else
211
{
212
$strSqlOrder =
"ORDER BY COUNTER desc, V.URL"
;
213
}
214
215
if
(
$order
!=
"asc"
)
216
{
217
$strSqlOrder .=
" desc "
;
218
}
219
220
$strSql =
"
221
SELECT
222
V.URL,
223
V.DIR,
224
V.SITE_ID,
225
max(V.URL_404) as URL_404,
226
sum($counter) as COUNTER
227
FROM
228
b_stat_page V
229
$from_adv
230
WHERE
231
$strSqlSearch
232
$where_adv
233
$where_counter
234
GROUP BY V.URL, V.DIR
235
HAVING
236
'1'='1'
237
$strSqlSearch_h
238
$strSqlOrder
239
LIMIT "
.intval(COption::GetOptionString(
'statistic'
,
'RECORDS_LIMIT'
)).
"
240
"
;
241
242
$res
=
$DB
->Query($strSql);
243
244
return
$res
;
245
}
246
}
CPage
Определения
page.php:4
CPage\GetList
static GetList($COUNTER_TYPE, $by='s_counter', $order='desc', $arFilter=[])
Определения
page.php:112
CPage\GetDynamicList
static GetDynamicList($URL, $by='s_date', $order='desc', $arFilter=[])
Определения
page.php:5
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
$DB
global $DB
Определения
cron_frame.php:29
CheckDateTime
CheckDateTime($datetime, $format=false)
Определения
tools.php:398
$order
$order
Определения
payment.php:8
$counter
$counter
Определения
options.php:5
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
crc32ex
crc32ex($s)
Определения
stat_tools.php:948
$arFilter
$arFilter
Определения
user_search.php:106
bitrix
modules
statistic
classes
mysql
page.php
Создано системой
1.14.0