1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
stoplist.php
См. документацию.
1<?php
2require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/statistic/classes/general/stoplist.php");
3
5{
6 public static function GetList($by = 's_id', $order = 'desc', $arFilter = [])
7 {
8 $DB = CDatabase::GetModuleConnection('statistic');
9 $arSqlSearch = Array();
10 if (is_array($arFilter))
11 {
12 foreach ($arFilter as $key => $val)
13 {
14 if(is_array($val))
15 {
16 if(count($val) <= 0)
17 continue;
18 }
19 else
20 {
21 if( ((string)$val == '') || ($val === "NOT_REF") )
22 continue;
23 }
24 $match_value_set = array_key_exists($key."_EXACT_MATCH", $arFilter);
25 $key = strtoupper($key);
26 switch($key)
27 {
28 case "ID":
29 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
30 $arSqlSearch[] = GetFilterQuery("S.ID",$val,$match);
31 break;
32 case "DATE_START_1":
34 $arSqlSearch[] = "S.DATE_START >= ".$DB->CharToDateFunction($val, "SHORT");
35 break;
36 case "DATE_START_2":
38 $arSqlSearch[] = "S.DATE_START < ".CStatistics::DBDateAdd($DB->CharToDateFunction($val, "SHORT"), 1);
39 break;
40 case "DATE_END_1":
42 $arSqlSearch[] = "S.DATE_END >= ".$DB->CharToDateFunction($val, "SHORT");
43 break;
44 case "DATE_END_2":
46 $arSqlSearch[] = "S.DATE_END < ".CStatistics::DBDateAdd($DB->CharToDateFunction($val, "SHORT"), 1);
47 break;
48 case "ACTIVE":
49 case "SAVE_STATISTIC":
50 $arSqlSearch[] = ($val=="Y") ? "S.".$key."='Y'" : "S.".$key."='N'";
51 break;
52 case "IP_1":
53 case "IP_2":
54 case "IP_3":
55 case "IP_4":
56 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
57 $arSqlSearch[] = GetFilterQuery("S.".$key,$val,$match);
58 break;
59 case "URL_FROM":
60 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
61 $arSqlSearch[] = GetFilterQuery("S.URL_FROM",$val,$match,array("/","\\",".","?","#",":"));
62 break;
63 case "USER_AGENT":
64 case "MESSAGE":
65 case "COMMENTS":
66 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
67 $arSqlSearch[] = GetFilterQuery("S.".$key, $val, $match);
68 break;
69 case "URL_TO":
70 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
71 $arSqlSearch[] = GetFilterQuery("S.URL_TO",$val,$match,array("/","\\",".","?","#",":"));
72 break;
73 case "URL_REDIRECT":
74 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
75 $arSqlSearch[] = GetFilterQuery("S.URL_REDIRECT",$val,$match,array("/","\\",".","?","#",":"));
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("S.SITE_ID", $val, $match);
81 break;
82 }
83 }
84 }
85
86 if ($order!="asc")
87 $order = "desc";
88
89 if ($by == "s_id")
90 $strSqlOrder = "ORDER BY S.ID $order";
91 elseif ($by == "s_date_start")
92 $strSqlOrder = "ORDER BY S.DATE_START $order";
93 elseif ($by == "s_site_id")
94 $strSqlOrder = "ORDER BY S.SITE_ID $order";
95 elseif ($by == "s_date_end")
96 $strSqlOrder = "ORDER BY S.DATE_END $order";
97 elseif ($by == "s_active")
98 $strSqlOrder = "ORDER BY S.ACTIVE $order";
99 elseif ($by == "s_save_statistic")
100 $strSqlOrder = "ORDER BY S.SAVE_STATISTIC $order";
101 elseif ($by == "s_ip")
102 $strSqlOrder = "ORDER BY S.IP_1 $order, S.IP_2 $order, S.IP_3 $order, S.IP_4 $order";
103 elseif ($by == "s_mask")
104 $strSqlOrder = "ORDER BY S.MASK_1 $order, S.MASK_2 $order, S.MASK_3 $order, S.MASK_4 $order";
105 elseif ($by == "s_url_to")
106 $strSqlOrder = "ORDER BY S.URL_TO $order";
107 elseif ($by == "s_url_from")
108 $strSqlOrder = "ORDER BY S.URL_FROM $order";
109 else
110 {
111 $strSqlOrder = "ORDER BY S.ID $order";
112 }
113
114 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
115 $strSql = "
116 SELECT
117 S.ID, S.ACTIVE, S.SAVE_STATISTIC,
118 S.IP_1, S.IP_2, S.IP_3, S.IP_4,
119 S.MASK_1, S.MASK_2, S.MASK_3, S.MASK_4,
120 S.USER_AGENT, S.USER_AGENT_IS_NULL,
121 S.URL_TO, S.URL_FROM, S.MESSAGE, S.MESSAGE_LID,
122 S.URL_REDIRECT, S.COMMENTS, S.TEST, S.SITE_ID,
123 ".$DB->DateToCharFunction("S.TIMESTAMP_X")." TIMESTAMP_X,
124 ".$DB->DateToCharFunction("S.DATE_END")." DATE_END,
125 ".$DB->DateToCharFunction("S.DATE_START")." DATE_START,
126 if ((
127 (S.DATE_START<=now() or S.DATE_START is null) and
128 (S.DATE_END>=now() or S.DATE_END is null) and
129 S.ACTIVE='Y'),
130 'green',
131 'red') as LAMP
132 FROM
133 b_stop_list S
134 WHERE
135 $strSqlSearch
136 $strSqlOrder
137 LIMIT ".intval(COption::GetOptionString('statistic','RECORDS_LIMIT'))."
138 ";
139
140 $res = $DB->Query($strSql);
141
142 return $res;
143 }
144
145 public static function Check($test="N", $arParams = false)
146 {
147 $DB = CDatabase::GetModuleConnection('statistic');
148
149 $test = ($test=="Y") ? "Y" : "N";
150
151 $arStopRecord = false;
152 $zr = false;
153 //We did not use cache or it was cache miss
154 if(!$arStopRecord)
155 {
156 $user_agent = "";
157 $url_from = "";
158 $url_to = "";
159 $site_id = "";
160 $site_where = "";
161 $ip = array(0, 0, 0, 0);
162
163 if ($arParams===false)
164 {
165 if (!empty($_SERVER["REMOTE_ADDR"]))
166 {
167 $ip = explode(".", $_SERVER["REMOTE_ADDR"]);
168 }
169 $user_agent = trim($_SERVER["HTTP_USER_AGENT"] ?? '');
170 $url_from = $_SERVER["HTTP_REFERER"] ?? '';
171 $url_to = __GetFullRequestUri();
172 if (defined("SITE_ID"))
174 }
175 elseif(is_array($arParams))
176 {
177 $ip = explode(".", $arParams["IP"]);
178 $user_agent = trim($arParams["USER_AGENT"]);
179 $url_from = $arParams["URL_FROM"];
180 $url_to = $arParams["URL_TO"];
181 $site_id = $arParams["SITE_ID"];
182 }
183
184 $user_agent_len = mb_strlen($user_agent);
185 $user_agent = $DB->ForSql($user_agent, 500);
186 $url_from = $DB->ForSql($url_from, 2000);
187 $url_to = $DB->ForSql($url_to, 2000);
188 if ($site_id <> '')
189 {
190 $site_where = "and (SITE_ID = '".$DB->ForSql($site_id, 2)."' or SITE_ID is null or length(SITE_ID)<=0)";
191 }
192
193 $strSql = "
194 SELECT
195 ID,
196 MESSAGE,
197 MESSAGE_LID,
198 SAVE_STATISTIC,
199 URL_REDIRECT,
200 TEST
201 FROM
202 b_stop_list
203 WHERE
204 ACTIVE='Y'
205 and TEST='$test'
206 $site_where
207 and (DATE_START<=now() or DATE_START is null)
208 and (DATE_END>=now() or DATE_END is null)
209 and ((((MASK_1 & ".intval($ip[0]).")=IP_1 and
210 (MASK_2 & ".intval($ip[1]).")=IP_2 and
211 (MASK_3 & ".intval($ip[2]).")=IP_3 and
212 (MASK_4 & ".intval($ip[3]).")=IP_4)
213 or (IP_1 is null and IP_2 is null and IP_3 is null and IP_4 is null))
214 and (upper('".$DB->ForSql($user_agent)."') like concat('%',upper(USER_AGENT),'%')
215 or length(USER_AGENT)<=0 or USER_AGENT is null)
216 and ($user_agent_len=0 or USER_AGENT_IS_NULL<>'Y')
217 and (upper('$url_from') like concat('%',upper(URL_FROM),'%')
218 or length(URL_FROM)<=0 or URL_FROM is null)
219 and (upper('$url_to') like concat('%',upper(URL_TO),'%')
220 or length(URL_TO)<=0 or URL_TO is null)
221 )
222 ";
223
224 $z = $DB->Query($strSql);
225 if($zr = $z->Fetch())
226 {
227 $arStopRecord = array(
228 "STOP" => "Y",
229 "STOP_SAVE_STATISTIC" => $zr["SAVE_STATISTIC"],
230 "STOP_MESSAGE" => $zr["MESSAGE"],
231 "STOP_REDIRECT_URL" => $zr["URL_REDIRECT"],
232 "STOP_MESSAGE_LID" => $zr["MESSAGE_LID"],
233 "STOP_LIST_ID" => $zr["ID"],
234 );
235 }
236 else
237 {
238 $arStopRecord = array(
239 "STOP" => "N",
240 "STOP_SAVE_STATISTIC" => "Y",
241 "STOP_MESSAGE" => "",
242 "STOP_REDIRECT_URL" => "",
243 "STOP_MESSAGE_LID" => "",
244 "STOP_LIST_ID" => 0,
245 );
246 }
247 }
248/*
249 //Save session cache
250 if($test == "N" && CACHED_b_stop_list !== false)
251 {
252 $_SESSION["STAT_STOP_LIST"] = array(
253 "TIMESTAMP_X" => $TIMESTAMP_X,
254 "DATA" => $arStopRecord,
255 );
256 }
257*/
258 if($test == "N")
259 {
260 foreach($arStopRecord as $key => $value)
261 {
262 $GLOBALS[$key] = $value;
263 }
264 return false;
265 }
266 else
267 {
268 if($zr)
269 return intval($zr["ID"]);
270 else
271 return false;
272 }
273 }
274}
$arParams
Определения access_dialog.php:21
Определения stoplist.php:5
Определения stoplist.php:5
static Check($test="N", $arParams=false)
Определения stoplist.php:145
static GetList($by='s_id', $order='desc', $arFilter=[])
Определения stoplist.php:6
</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
$zr
Определения options.php:5
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
$z
Определения options.php:31
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
$site_id
Определения sonet_set_content_view.php:9
const SITE_ID
Определения sonet_set_content_view.php:12
__GetFullRequestUri($url=false, $host=false, $port=false, $protocol=false)
Определения stat_tools.php:339
$GLOBALS['_____370096793']
Определения update_client.php:1
$arFilter
Определения user_search.php:106