1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
referer.php
См. документацию.
1<?php
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":
38 $arSqlSearch[] = "L.DATE_HIT >= ".$DB->CharToDateFunction($val, "SHORT");
39 break;
40 case "DATE2":
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}
Определения referer.php:3
static GetList($by='s_id', $order='desc', $arFilter=[], $is_filtered=null, &$total=0, &$grby='', &$max=0)
Определения referer.php:4
static DBTopSql($strSql, $nTopCount=false)
Определения statistic.php:628
</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
IsFiltered($strSqlSearch)
Определения filter_tools.php:337
global $DB
Определения cron_frame.php:29
CheckDateTime($datetime, $format=false)
Определения tools.php:398
$order
Определения payment.php:8
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
$max
Определения template_copy.php:262
$arFilter
Определения user_search.php:106