1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
page.php
См. документацию.
1<?php
2
3class 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":
59 $arSqlSearch[] = "D.DATE_STAT>=".$DB->CharToDateFunction($val, "SHORT");
60 break;
61 case "DATE2":
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}
Определения page.php:4
static GetList($COUNTER_TYPE, $by='s_counter', $order='desc', $arFilter=[])
Определения page.php:112
static GetDynamicList($URL, $by='s_date', $order='desc', $arFilter=[])
Определения page.php:5
</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
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
CheckDateTime($datetime, $format=false)
Определения tools.php:398
$order
Определения payment.php:8
$counter
Определения options.php:5
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
crc32ex($s)
Определения stat_tools.php:948
$arFilter
Определения user_search.php:106