1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
phrase.php
См. документацию.
1<?php
2class CPhrase
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 $s = "S.NAME as SEARCHER_NAME, S.ID as SEARCHER_ID";
9 $strSqlGroup = "GROUP BY S.ID, S.NAME, S.PHRASES_HITS, S.PHRASES";
10 $arSqlSearch = Array("PH.SEARCHER_ID <> 1");
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 case "SEARCHER_ID":
34 case "REFERER_ID":
35 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
36 $arSqlSearch[] = GetFilterQuery("PH.".$key,$val,$match);
37 break;
38 case "SEARCHER_ID_STR":
39 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
40 $arSqlSearch[] = GetFilterQuery("S.ID",$val,$match);
41 break;
42 case "SEARCHER":
43 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
44 $arSqlSearch[] = GetFilterQuery("S.NAME", $val, $match);
45 break;
46 case "DATE1":
48 $arSqlSearch[] = "PH.DATE_HIT >= ".$DB->CharToDateFunction($val, "SHORT");
49 break;
50 case "DATE2":
52 $arSqlSearch[] = "PH.DATE_HIT < ".CStatistics::DBDateAdd($DB->CharToDateFunction($val, "SHORT"), 1);
53 break;
54 case "PHRASE":
55 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
56 if($match == "N")
57 $val = '"'.trim($val, '"').'"';
58 $arSqlSearch[] = GetFilterQuery("PH.PHRASE", $val, $match);
59 break;
60 case "TO":
61 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
62 $arSqlSearch[] = GetFilterQuery("PH.URL_TO",$val,$match,array("/","\\",".","?","#",":"));
63 break;
64 case "TO_404":
65 $arSqlSearch[] = ($val=="Y") ? "PH.URL_TO_404='Y'" : "PH.URL_TO_404='N'";
66 break;
67 case "GROUP":
68 $group = true;
69 if ($val=="P")
70 {
71 $find_group="P";
72 $strSqlGroup = " GROUP BY PH.PHRASE ";
73 $s = " PH.PHRASE ";
74 }
75 else $find_group="S";
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("PH.SITE_ID", $val, $match);
81 break;
82 }
83 }
84 }
85
86 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
87 $grby = ($find_group=="P" || $find_group=="S") ? $find_group : "";
88
89 if ($grby == '')
90 {
91 if ($by == "s_id") $strSqlOrder = "ORDER BY PH.ID";
92 elseif ($by == "s_site_id") $strSqlOrder = "ORDER BY PH.SITE_ID";
93 elseif ($by == "s_phrase") $strSqlOrder = "ORDER BY PH.PHRASE";
94 elseif ($by == "s_searcher_id") $strSqlOrder = "ORDER BY PH.SEARCHER_ID";
95 elseif ($by == "s_referer_id") $strSqlOrder = "ORDER BY PH.REFERER_ID";
96 elseif ($by == "s_date_hit") $strSqlOrder = "ORDER BY PH.DATE_HIT";
97 elseif ($by == "s_url_to") $strSqlOrder = "ORDER BY PH.URL_TO";
98 elseif ($by == "s_session_id") $strSqlOrder = "ORDER BY PH.SESSION_ID";
99 else
100 {
101 $strSqlOrder = "ORDER BY PH.ID";
102 }
103
104 if ($order!="asc")
105 {
106 $strSqlOrder .= " desc ";
107 }
108
109 $strSql = "
110 SELECT /*TOP*/
111 PH.ID,
112 PH.PHRASE,
113 PH.SESSION_ID,
114 PH.SEARCHER_ID,
115 PH.URL_TO,
116 PH.URL_TO_404,
117 PH.REFERER_ID,
118 PH.SITE_ID,
119 ".$DB->DateToCharFunction("PH.DATE_HIT")." DATE_HIT,
120 S.NAME SEARCHER_NAME
121 FROM
122 b_stat_phrase_list PH
123 INNER JOIN b_stat_searcher S ON (S.ID = PH.SEARCHER_ID)
124 WHERE
125 ".$strSqlSearch."
126 ".$strSqlOrder."
127 ";
128 }
129 elseif (IsFiltered($strSqlSearch) || $grby=="P")
130 {
131 if ($by == "s_phrase" && $grby=="P") $strSqlOrder = "ORDER BY PH.PHRASE";
132 elseif ($by == "s_searcher_id" && $grby=="S") $strSqlOrder = "ORDER BY PH.SEARCHER_ID";
133 elseif ($by == "s_quantity") $strSqlOrder = "ORDER BY QUANTITY";
134 else
135 {
136 $strSqlOrder = "ORDER BY QUANTITY";
137 }
138 if ($order!="asc")
139 {
140 $strSqlOrder .= " desc ";
141 }
142 $strSql = "
143 SELECT
144 count(PH.ID) as COUNTER
145 FROM
146 b_stat_phrase_list PH,
147 b_stat_searcher S
148 WHERE
149 ".$strSqlSearch."
150 and S.ID = PH.SEARCHER_ID
151 ".$strSqlGroup."
152 ";
153 $c = $DB->Query($strSql);
154 $total = 0;
155 $arrCount = array();
156 while ($cr = $c->Fetch())
157 {
158 $total += intval($cr["COUNTER"]);
159 $arrCount[] = intval($cr["COUNTER"]);
160 }
161 $max = (is_array($arrCount) && count($arrCount)>0) ? max($arrCount) : 0;
162 if ($grby=="P")
163 {
164 $strSql = "
165 SELECT /*TOP*/
166 $s,
167 count(PH.ID) QUANTITY,
168 (count(PH.ID)*100)/$total C_PERCENT
169 FROM
170 b_stat_phrase_list PH,
171 b_stat_searcher S
172 WHERE
173 ".$strSqlSearch."
174 and S.ID = PH.SEARCHER_ID
175 ".$strSqlGroup."
176 ".$strSqlOrder."
177 ";
178 }
179 else
180 {
181 $strSql = "
182 SELECT /*TOP*/
183 $s,
184 count(PH.ID) QUANTITY,
185 (count(PH.ID)*100)/$total C_PERCENT,
186 S.PHRASES_HITS/S.PHRASES AVERAGE_HITS
187 FROM
188 b_stat_phrase_list PH,
189 b_stat_searcher S
190 WHERE
191 ".$strSqlSearch."
192 and S.ID = PH.SEARCHER_ID
193 ".$strSqlGroup."
194 ".$strSqlOrder."
195 ";
196 }
197 }
198 else//if ($grby=="S")
199 {
200 if ($by == "s_name") $strSqlOrder = "ORDER BY S.ID";
201 elseif ($by == "s_quantity") $strSqlOrder = "ORDER BY QUANTITY";
202 elseif ($by == "s_average_hits") $strSqlOrder = "ORDER BY AVERAGE_HITS";
203 else
204 {
205 $strSqlOrder = "ORDER BY QUANTITY";
206 }
207 if ($order!="asc")
208 {
209 $strSqlOrder .= " desc ";
210 }
211 $strSql = "SELECT sum(S.PHRASES) TOTAL, max(S.PHRASES) MAX FROM b_stat_searcher S";
212 $c = $DB->Query($strSql);
213 $cr = $c->Fetch();
214 $total = intval($cr["TOTAL"]);
215 $max = intval($cr["MAX"]);
216 $strSql = "
217 SELECT /*TOP*/
218 S.ID SEARCHER_ID,
219 S.NAME SEARCHER_NAME,
220 S.PHRASES QUANTITY,
221 S.PHRASES*100/$total C_PERCENT,
222 S.PHRASES_HITS/S.PHRASES AVERAGE_HITS
223 FROM
224 b_stat_searcher S
225 WHERE
226 ".$DB->IsNull("S.PHRASES","0")." > 0
227 ".$strSqlOrder."
228 ";
229 }
230
231 $res = $DB->Query(CStatistics::DBTopSql($strSql));
232
233 return $res;
234 }
235}
Определения phrase.php:3
static GetList($by='s_id', $order='desc', $arFilter=[], $is_filtered=null, &$total=0, &$grby='', &$max=0)
Определения phrase.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