1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
searcher.php
См. документацию.
1<?php
2require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/classes/general/searcher.php");
3
5{
6 public static function GetGraphArray_SQL($strSqlSearch)
7 {
8 $DB = CDatabase::GetModuleConnection('statistic');
9 $strSql = "
10 SELECT
11 ".$DB->DateToCharFunction("D.DATE_STAT","SHORT")." DATE_STAT,
12 DAYOFMONTH(D.DATE_STAT) DAY,
13 MONTH(D.DATE_STAT) MONTH,
14 YEAR(D.DATE_STAT) YEAR,
15 D.SEARCHER_ID,
16 D.TOTAL_HITS,
17 C.NAME
18 FROM
19 b_stat_searcher_day D
20 INNER JOIN b_stat_searcher C ON (C.ID = D.SEARCHER_ID)
21 WHERE
22 $strSqlSearch
23 ORDER BY
24 D.DATE_STAT, D.SEARCHER_ID
25 ";
26 return $strSql;
27 }
28
29 public static function GetList($by = 's_today_hits', $order = 'desc', $arFilter = [], &$is_filtered = false, $LIMIT = false)
30 {
31 $DB = CDatabase::GetModuleConnection('statistic');
32 $arSqlSearch = Array("S.ID <> 1");
33 $arSqlSearch_h = Array();
34 $strSqlSearch_h = "";
35 $filter_period = false;
36 $strSqlPeriod = "";
37 $strT = "";
38 if (is_array($arFilter))
39 {
41 $date1 = $arFilter["DATE1_PERIOD"] ?? '';
42 $date2 = $arFilter["DATE2_PERIOD"] ?? '';
43 $date_from = MkDateTime(ConvertDateTime($date1,"D.M.Y"),"d.m.Y");
44 $date_to = MkDateTime(ConvertDateTime($date2,"D.M.Y")." 23:59","d.m.Y H:i");
45 if (CheckDateTime($date1) && $date1 <> '')
46 {
47 $filter_period = true;
48 if ($date2 <> '')
49 {
50 $strSqlPeriod = "sum(if(D.DATE_STAT<FROM_UNIXTIME('$date_from'),0, if(D.DATE_STAT>FROM_UNIXTIME('$date_to'),0,";
51 $strT=")))";
52 }
53 else
54 {
55 $strSqlPeriod = "sum(if(D.DATE_STAT<FROM_UNIXTIME('$date_from'),0,";
56 $strT="))";
57 }
58 }
59 elseif (CheckDateTime($date2) && $date2 <> '')
60 {
62 $filter_period = true;
63 $strSqlPeriod = "sum(if(D.DATE_STAT>FROM_UNIXTIME('$date_to'),0,";
64 $strT="))";
65 }
66
67 foreach ($arFilter as $key => $val)
68 {
69 if(is_array($val))
70 {
71 if(count($val) <= 0)
72 continue;
73 }
74 else
75 {
76 if( ((string)$val == '') || ($val === "NOT_REF") )
77 continue;
78 }
79 $match_value_set = array_key_exists($key."_EXACT_MATCH", $arFilter);
80 $key = strtoupper($key);
81 switch($key)
82 {
83 case "ID":
84 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
85 $arSqlSearch[] = GetFilterQuery("S.ID",$val,$match);
86 break;
87 case "ACTIVE":
88 case "SAVE_STATISTIC":
89 case "DIAGRAM_DEFAULT":
90 $arSqlSearch[] = ($val=="Y") ? "S.".$key."='Y'" : "S.".$key."='N'";
91 break;
92 case "HITS1":
93 $arSqlSearch_h[] = "(sum(ifnull(D.TOTAL_HITS,0))+ifnull(S.TOTAL_HITS,0))>='".intval($val)."'";
94 break;
95 case "HITS2":
96 $arSqlSearch_h[] = "(sum(ifnull(D.TOTAL_HITS,0))+ifnull(S.TOTAL_HITS,0))<='".intval($val)."'";
97 break;
98 case "DATE1":
100 $arSqlSearch_h[] = "max(D.DATE_LAST)>=".$DB->CharToDateFunction($val, "SHORT");
101 break;
102 case "DATE2":
103 if (CheckDateTime($val))
104 $arSqlSearch_h[] = "max(D.DATE_LAST)<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
105 break;
106 case "NAME":
107 case "USER_AGENT":
108 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
109 $arSqlSearch[] = GetFilterQuery("S.".$key, $val, $match);
110 break;
111 }
112 }
113 }
114
115 if ($by == "s_id")
116 $strSqlOrder = "ORDER BY S.ID";
117 elseif ($by == "s_date_last")
118 $strSqlOrder = "ORDER BY S_DATE_LAST";
119 elseif ($by == "s_today_hits")
120 $strSqlOrder = "ORDER BY TODAY_HITS";
121 elseif ($by == "s_yesterday_hits")
122 $strSqlOrder = "ORDER BY YESTERDAY_HITS";
123 elseif ($by == "s_b_yesterday_hits")
124 $strSqlOrder = "ORDER BY B_YESTERDAY_HITS";
125 elseif ($by == "s_total_hits")
126 $strSqlOrder = "ORDER BY TOTAL_HITS";
127 elseif ($by == "s_period_hits")
128 $strSqlOrder = "ORDER BY PERIOD_HITS";
129 elseif ($by == "s_name")
130 $strSqlOrder = "ORDER BY S.NAME";
131 elseif ($by == "s_user_agent")
132 $strSqlOrder = "ORDER BY S.USER_AGENT";
133 elseif ($by == "s_chart")
134 $strSqlOrder = "ORDER BY S.DIAGRAM_DEFAULT desc, TOTAL_HITS ";
135 elseif ($by == "s_stat")
136 $strSqlOrder = "ORDER BY TODAY_HITS desc, YESTERDAY_HITS desc, B_YESTERDAY_HITS desc, TOTAL_HITS desc, PERIOD_HITS";
137 else
138 {
139 $strSqlOrder = "ORDER BY TODAY_HITS desc, YESTERDAY_HITS desc, B_YESTERDAY_HITS desc, TOTAL_HITS desc, PERIOD_HITS";
140 }
141
142 if ($order != "asc")
143 {
144 $strSqlOrder .= " desc ";
145 }
146
147 $limit_sql = "LIMIT ".intval(COption::GetOptionString('statistic','RECORDS_LIMIT'));
148 if (intval($LIMIT)>0)
149 $limit_sql = "LIMIT ".intval($LIMIT);
150
151 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
152 foreach($arSqlSearch_h as $sqlWhere)
153 $strSqlSearch_h .= " and (".$sqlWhere.") ";
154
155 $strSql = "
156 SELECT
157 S.ID,
158 S.TOTAL_HITS,
159 S.USER_AGENT,
160 S.DIAGRAM_DEFAULT,
161 ".$DB->DateToCharFunction("max(D.DATE_LAST)")." DATE_LAST,
162 max(ifnull(D.DATE_LAST,'1980-01-01')) S_DATE_LAST,
163 sum(ifnull(D.TOTAL_HITS,0))+ifnull(S.TOTAL_HITS,0) TOTAL_HITS,
164 sum(if(to_days(curdate())=to_days(D.DATE_STAT),ifnull(D.TOTAL_HITS,0),0)) TODAY_HITS,
165 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=1,ifnull(D.TOTAL_HITS,0),0)) YESTERDAY_HITS,
166 sum(if(to_days(curdate())-to_days(D.DATE_STAT)=2,ifnull(D.TOTAL_HITS,0),0)) B_YESTERDAY_HITS,
167 ".($filter_period ? $strSqlPeriod.'ifnull(D.TOTAL_HITS,0)'.$strT.' PERIOD_HITS, ' : '0 PERIOD_HITS,')."
168 S.NAME
169 FROM
170 b_stat_searcher S
171 LEFT JOIN b_stat_searcher_day D ON (D.SEARCHER_ID = S.ID)
172 WHERE
173 $strSqlSearch
174 and S.ID<>1
175 GROUP BY S.ID
176 HAVING
177 '1'='1'
178 $strSqlSearch_h
179 $strSqlOrder
180 $limit_sql
181 ";
182
183 $res = $DB->Query($strSql);
184 $is_filtered = (IsFiltered($strSqlSearch) || $filter_period || $strSqlSearch_h <> '');
185 return $res;
186 }
187
188 public static function GetDropDownList($strSqlOrder="ORDER BY NAME, ID")
189 {
190 $DB = CDatabase::GetModuleConnection('statistic');
191 $strSql = "
192 SELECT
193 ID as REFERENCE_ID,
194 concat(ifnull(NAME,''),' [',ID,']') as REFERENCE
195 FROM
196 b_stat_searcher
197 WHERE
198 ID <> 1
199 $strSqlOrder
200 ";
201 $res = $DB->Query($strSql);
202 return $res;
203 }
204
205 public static function GetDynamicList($SEARCHER_ID, $by = 's_date', $order = 'desc', &$arMaxMin = [], $arFilter = [])
206 {
207 $DB = CDatabase::GetModuleConnection('statistic');
208 $SEARCHER_ID = intval($SEARCHER_ID);
209 $arSqlSearch = Array();
210 $strSqlSearch = "";
211 if (is_array($arFilter))
212 {
213 foreach ($arFilter as $key => $val)
214 {
215 if(is_array($val))
216 {
217 if(count($val) <= 0)
218 continue;
219 }
220 else
221 {
222 if( ((string)$val == '') || ($val === "NOT_REF") )
223 continue;
224 }
225
226 $key = strtoupper($key);
227 switch($key)
228 {
229 case "DATE1":
230 if (CheckDateTime($val))
231 $arSqlSearch[] = "D.DATE_STAT>=".$DB->CharToDateFunction($val, "SHORT");
232 break;
233 case "DATE2":
234 if (CheckDateTime($val))
235 $arSqlSearch[] = "D.DATE_STAT<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
236 break;
237 }
238 }
239 }
240
241 foreach($arSqlSearch as $sqlWhere)
242 $strSqlSearch .= " and (".$sqlWhere.") ";
243
244 if ($by == "s_date") $strSqlOrder = "ORDER BY D.DATE_STAT";
245 else
246 {
247 $strSqlOrder = "ORDER BY D.DATE_STAT";
248 }
249
250 if ($order!="asc")
251 {
252 $strSqlOrder .= " desc ";
253 }
254
255 $strSql = "
256 SELECT
257 ".$DB->DateToCharFunction("D.DATE_STAT","SHORT")." DATE_STAT,
258 DAYOFMONTH(D.DATE_STAT) DAY,
259 MONTH(D.DATE_STAT) MONTH,
260 YEAR(D.DATE_STAT) YEAR,
261 D.TOTAL_HITS
262 FROM
263 b_stat_searcher_day D
264 WHERE
265 D.SEARCHER_ID = $SEARCHER_ID
266 $strSqlSearch
267 $strSqlOrder
268 ";
269
270 $res = $DB->Query($strSql);
271
272 $strSql = "
273 SELECT
274 max(D.DATE_STAT) DATE_LAST,
275 min(D.DATE_STAT) DATE_FIRST,
276 DAYOFMONTH(max(D.DATE_STAT)) MAX_DAY,
277 MONTH(max(D.DATE_STAT)) MAX_MONTH,
278 YEAR(max(D.DATE_STAT)) MAX_YEAR,
279 DAYOFMONTH(min(D.DATE_STAT)) MIN_DAY,
280 MONTH(min(D.DATE_STAT)) MIN_MONTH,
281 YEAR(min(D.DATE_STAT)) MIN_YEAR
282 FROM
283 b_stat_searcher_day D
284 WHERE
285 D.SEARCHER_ID = $SEARCHER_ID
286 $strSqlSearch
287 ";
288 $a = $DB->Query($strSql);
289 $ar = $a->Fetch();
290 $arMaxMin["MAX_DAY"] = $ar["MAX_DAY"];
291 $arMaxMin["MAX_MONTH"] = $ar["MAX_MONTH"];
292 $arMaxMin["MAX_YEAR"] = $ar["MAX_YEAR"];
293 $arMaxMin["MIN_DAY"] = $ar["MIN_DAY"];
294 $arMaxMin["MIN_MONTH"] = $ar["MIN_MONTH"];
295 $arMaxMin["MIN_YEAR"] = $ar["MIN_YEAR"];
296 return $res;
297 }
298}
Определения searcher.php:3
Определения searcher.php:5
static GetList($by='s_today_hits', $order='desc', $arFilter=[], &$is_filtered=false, $LIMIT=false)
Определения searcher.php:29
static GetGraphArray_SQL($strSqlSearch)
Определения searcher.php:6
static GetDropDownList($strSqlOrder="ORDER BY NAME, ID")
Определения searcher.php:188
static GetDynamicList($SEARCHER_ID, $by='s_date', $order='desc', &$arMaxMin=[], $arFilter=[])
Определения searcher.php:205
$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
IsFiltered($strSqlSearch)
Определения filter_tools.php:337
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
ConvertDateTime($datetime, $to_format=false, $from_site=false, $bSearchInSitesOnly=false)
Определения tools.php:724
CheckDateTime($datetime, $format=false)
Определения tools.php:398
MkDateTime($strDT, $format="d.m.Y H:i:s")
Определения tools.php:1977
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$ar
Определения options.php:199
if(empty($signedUserToken)) $key
Определения quickway.php:257
$LIMIT
Определения rss.php:28
</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
else $a
Определения template.php:137
$val
Определения options.php:1793
$arFilter
Определения user_search.php:106