1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
advertising.php
См. документацию.
1<?
2require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/advertising/classes/general/advertising.php");
3
4/*****************************************************************
5 Класс "Рекламный контракт"
6*****************************************************************/
7
9{
10 public static function err_mess()
11 {
12 $module_id = "advertising";
13 return "<br>Module: ".$module_id."<br>Class: CAdvContract<br>File: ".__FILE__;
14 }
15
16 // получаем список контрактов
17 public static function GetList($by = "s_sort", $order = "desc", $arFilter = [], $is_filtered = null, $CHECK_RIGHTS="Y")
18 {
19 $err_mess = (CAdvContract::err_mess())."<br>Function: GetList<br>Line: ";
20 global $DB, $USER;
21 if ($CHECK_RIGHTS=="Y")
22 {
23 $USER_ID = intval($USER->GetID());
24 $isAdmin = CAdvContract::IsAdmin();
25 $isDemo = CAdvContract::IsDemo();
26 $isManager = CAdvContract::IsManager();
27 }
28 else
29 {
30 if (is_object($USER)) $USER_ID = intval($USER->GetID()); else $USER_ID = 0;
31 $isAdmin = true;
32 $isDemo = true;
33 $isManager = true;
34 }
35
36 $arSqlSearch = Array();
37 $admin_from_1 = '';
38 $admin_from_2 = '';
39 $arSqlSearch_h = [];
40 $left_join = '';
41
42 $lamp = "
43 if ((
44 (C.DATE_SHOW_FROM<=now() or C.DATE_SHOW_FROM is null or length(C.DATE_SHOW_FROM)<=0) and
45 (C.DATE_SHOW_TO>=now() or C.DATE_SHOW_TO is null or length(C.DATE_SHOW_TO)<=0) and
46 (ifnull(C.MAX_SHOW_COUNT,0)>ifnull(C.SHOW_COUNT,0) or ifnull(C.MAX_SHOW_COUNT,0)=0) and
47 (ifnull(C.MAX_CLICK_COUNT,0)>ifnull(C.CLICK_COUNT,0) or ifnull(C.MAX_CLICK_COUNT,0)=0) and
48 (ifnull(C.MAX_VISITOR_COUNT,0)>ifnull(C.VISITOR_COUNT,0) or ifnull(C.MAX_VISITOR_COUNT,0)=0) and
49 (C.ACTIVE='Y')
50 ),
51 'green',
52 'red')
53 ";
55 {
56 if (is_array($arFilter))
57 {
58 $filter_keys = array_keys($arFilter);
59 for ($i=0, $n = count($filter_keys); $i < $n; $i++)
60 {
61 $key = $filter_keys[$i];
62 $val = $arFilter[$filter_keys[$i]];
63 if ((string)$val == '' || "$val"=="NOT_REF") continue;
64 if (is_array($val) && count($val)<=0) continue;
65 $match_value_set = (in_array($key."_EXACT_MATCH", $filter_keys)) ? true : false;
66 $key = strtoupper($key);
67 switch($key)
68 {
69 case "ID":
70 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
71 $arSqlSearch[] = GetFilterQuery("C.ID",$val,$match);
72 break;
73 case "SITE":
74 if (is_array($val)) $val = implode(" | ", $val);
75 $match = (isset($arFilter[$key."_EXACT_MATCH"]) && $arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
76 $arSqlSearch[] = GetFilterQuery("CS.SITE_ID", $val, $match);
77 $left_join = "LEFT JOIN b_adv_contract_2_site CS ON (C.ID = CS.CONTRACT_ID)";
78 break;
79 case "DATE_MODIFY_1":
80 $arSqlSearch[] = "C.DATE_MODIFY>=".$DB->CharToDateFunction($val, "SHORT");
81 break;
82 case "DATE_MODIFY_2":
83 $arSqlSearch[] = "C.DATE_MODIFY<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
84 break;
85 case "NAME":
86 case "DESCRIPTION":
87 case "ADMIN_COMMENTS":
88 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
89 $arSqlSearch[] = GetFilterQuery("C.".$key, $val, $match);
90 break;
91 case "LAMP":
92 $arSqlSearch[] = " ".$lamp." = '".$DB->ForSQL($val)."'";
93 break;
94 case "OWNER":
95 $from = "
96 INNER JOIN b_user U ON (U.ID = CU.USER_ID)
97 ";
98 $admin_from_1 = "
99 INNER JOIN b_adv_contract_2_user CU ON (CU.CONTRACT_ID=C.ID)
100 ";
101 $admin_from_2 = "
102 INNER JOIN b_user U ON (U.ID = CU.USER_ID)
103 ";
104 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
105 $arSqlSearch[] = GetFilterQuery("CU.USER_ID, U.LOGIN, U.NAME, U.LAST_NAME", $val, $match);
106 break;
107 case "BANNER_COUNT_1":
108 $arSqlSearch_h[] = "BANNER_COUNT>='".intval($val)."'";
109 break;
110 case "BANNER_COUNT_2":
111 $arSqlSearch_h[] = "BANNER_COUNT<='".intval($val)."'";
112 break;
113 case "SHOW_COUNT_1":
114 $arSqlSearch[] = "C.SHOW_COUNT>='".intval($val)."'";
115 break;
116 case "SHOW_COUNT_2":
117 $arSqlSearch[] = "C.SHOW_COUNT<='".intval($val)."'";
118 break;
119 case "EMAIL_COUNT_1":
120 $arSqlSearch[] = "C.EMAIL_COUNT>='".intval($val)."'";
121 break;
122 case "EMAIL_COUNT_2":
123 $arSqlSearch[] = "C.EMAIL_COUNT<='".intval($val)."'";
124 break;
125 case "VISITOR_COUNT_1":
126 $arSqlSearch[] = "C.VISITOR_COUNT>='".intval($val)."'";
127 break;
128 case "VISITOR_COUNT_2":
129 $arSqlSearch[] = "C.VISITOR_COUNT<='".intval($val)."'";
130 break;
131 case "CLICK_COUNT_1":
132 $arSqlSearch[] = "C.CLICK_COUNT>='".intval($val)."'";
133 break;
134 case "CLICK_COUNT_2":
135 $arSqlSearch[] = "C.CLICK_COUNT<='".intval($val)."'";
136 break;
137 case "CTR_1":
138 $arSqlSearch[] = "if(C.SHOW_COUNT<=0,0,round((C.CLICK_COUNT*100)/C.SHOW_COUNT,2))>='".DoubleVal(str_replace(',', '.', $val))."'";
139 break;
140 case "CTR_2":
141 $arSqlSearch[] = "if(C.SHOW_COUNT<=0,0,round((C.CLICK_COUNT*100)/C.SHOW_COUNT,2))<='".DoubleVal(str_replace(',', '.', $val))."'";
142 break;
143 case "USER_PERMISSIONS":
144 $admin_from_1 = " INNER JOIN b_adv_contract_2_user CU ON (CU.CONTRACT_ID=C.ID) ";
145 $arSqlSearch[] = GetFilterQuery("CU.PERMISSION", $val, "N");
146 break;
147 }
148 }
149 }
150 }
151
152 if ($by == "s_id") $strSqlOrder = "ORDER BY C.ID";
153 elseif ($by == "s_lamp") $strSqlOrder = "ORDER BY LAMP";
154 elseif ($by == "s_date_modify") $strSqlOrder = "ORDER BY C.DATE_MODIFY";
155 elseif ($by == "s_name") $strSqlOrder = "ORDER BY C.NAME";
156 elseif ($by == "s_description") $strSqlOrder = "ORDER BY C.DESCRIPTION";
157 elseif ($by == "s_modified_by") $strSqlOrder = "ORDER BY C.MODIFIED_BY";
158 elseif ($by == "s_active") $strSqlOrder = "ORDER BY C.ACTIVE";
159 elseif ($by == "s_weight") $strSqlOrder = "ORDER BY C.WEIGHT";
160 elseif ($by == "s_sort") $strSqlOrder = "ORDER BY ifnull(C.SORT,0)";
161 elseif ($by == "s_banner_count") $strSqlOrder = "ORDER BY BANNER_COUNT";
162 elseif ($by == "s_ctr") $strSqlOrder = "ORDER BY CTR";
163 elseif ($by == "s_show_count") $strSqlOrder = "ORDER BY C.SHOW_COUNT";
164 elseif ($by == "s_max_show_count") $strSqlOrder = "ORDER BY ifnull(C.MAX_SHOW_COUNT,0)";
165 elseif ($by == "s_click_count") $strSqlOrder = "ORDER BY C.CLICK_COUNT";
166 elseif ($by == "s_max_click_count") $strSqlOrder = "ORDER BY ifnull(C.MAX_CLICK_COUNT,0)";
167 elseif ($by == "s_visitor_count") $strSqlOrder = "ORDER BY C.VISITOR_COUNT";
168 elseif ($by == "s_max_visitor_count") $strSqlOrder = "ORDER BY ifnull(C.MAX_VISITOR_COUNT,0)";
169 else
170 {
171 $strSqlOrder = "ORDER BY ifnull(C.SORT,0)";
172 }
173
174 if ($order != "asc")
175 {
176 $strSqlOrder .= " desc ";
177 }
178
179 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
180 $strSqlSearch_h = GetFilterSqlSearch($arSqlSearch_h);
181
182 if ($isAdmin || $isDemo || $isManager)
183 {
184 $strSql = "
185 SELECT
186 $lamp LAMP,
187 C.ID, C.ACTIVE, C.NAME, C.DESCRIPTION, C.ADMIN_COMMENTS, C.WEIGHT, C.SORT, C.MAX_SHOW_COUNT, C.SHOW_COUNT, C.EMAIL_COUNT, C.CREATED_BY, C.MODIFIED_BY, C.MAX_CLICK_COUNT, C.CLICK_COUNT, C.DEFAULT_STATUS_SID, C.MAX_VISITOR_COUNT, C.VISITOR_COUNT, C.KEYWORDS,
188 if(C.SHOW_COUNT<=0,0,round((C.CLICK_COUNT*100)/C.SHOW_COUNT,2)) CTR,
189 ".$DB->DateToCharFunction("C.DATE_SHOW_FROM")." DATE_SHOW_FROM,
190 ".$DB->DateToCharFunction("C.DATE_SHOW_TO")." DATE_SHOW_TO,
191 ".$DB->DateToCharFunction("C.DATE_CREATE")." DATE_CREATE,
192 ".$DB->DateToCharFunction("C.DATE_MODIFY")." DATE_MODIFY,
193 count(distinct B.ID) BANNER_COUNT
194 FROM
195 b_adv_contract C
196 LEFT JOIN b_adv_banner B ON (B.CONTRACT_ID=C.ID)
197 $left_join
198 $admin_from_1
199 $admin_from_2
200 WHERE
201 $strSqlSearch
202 GROUP BY
203 C.ID
204 HAVING
205 $strSqlSearch_h
206 $strSqlOrder
207 ";
208 }
209 else
210 {
211 $strSql = "
212 SELECT
213 $lamp LAMP,
214 C.ID, C.ACTIVE, C.NAME, C.DESCRIPTION, C.ADMIN_COMMENTS, C.WEIGHT, C.SORT, C.MAX_SHOW_COUNT, C.SHOW_COUNT, C.MAX_CLICK_COUNT, C.CLICK_COUNT, C.EMAIL_COUNT, C.CREATED_BY, C.MODIFIED_BY, C.DEFAULT_STATUS_SID, C.MAX_VISITOR_COUNT, C.VISITOR_COUNT, C.KEYWORDS,
215 if(C.SHOW_COUNT<=0,0,round((C.CLICK_COUNT*100)/C.SHOW_COUNT,2)) CTR,
216 ".$DB->DateToCharFunction("C.DATE_SHOW_FROM")." DATE_SHOW_FROM,
217 ".$DB->DateToCharFunction("C.DATE_SHOW_TO")." DATE_SHOW_TO,
218 ".$DB->DateToCharFunction("C.DATE_CREATE")." DATE_CREATE,
219 ".$DB->DateToCharFunction("C.DATE_MODIFY")." DATE_MODIFY,
220 count(distinct B.ID) BANNER_COUNT
221 FROM
222 b_adv_contract C
223 LEFT JOIN b_adv_banner B ON (B.CONTRACT_ID=C.ID)
224 INNER JOIN b_adv_contract_2_user CU ON (CU.CONTRACT_ID=C.ID and CU.USER_ID=$USER_ID)
225 $left_join
226 $from
227 WHERE
228 $strSqlSearch
229 GROUP BY
230 C.ID
231 HAVING
232 $strSqlSearch_h
233 $strSqlOrder
234 ";
235 }
236 $res = $DB->Query($strSql, false, $err_mess.__LINE__);
237
238 return $res;
239 }
240}
241
242/*****************************************************************
243 Класс "Рекламный баннер"
244*****************************************************************/
245
247{
248 public static function err_mess()
249 {
250 $module_id = "advertising";
251 return "<br>Module: ".$module_id."<br>Class: CAdvBanner<br>File: ".__FILE__;
252 }
253
254 public static function Update($arFields, $BANNER_ID)
255 {
256 $err_mess = (CAdvBanner::err_mess())."<br>Function: Update<br>Line: ";
257 global $DB;
258 $arrKeys = array_keys($arFields);
259 if (in_array("CODE", $arrKeys))
260 {
261 $arFields["CODE"] = "'".$DB->ForSql($arFields["CODE"])."'";
262 }
263 $DB->Update("b_adv_banner",$arFields,"WHERE ID='".intval($BANNER_ID)."'",$err_mess.__LINE__);
264 }
265
266 public static function getCTRSQL()
267 {
268 return 'IF (SUM(D.SHOW_COUNT) > 0, round((SUM(D.CLICK_COUNT)*100)/SUM(D.SHOW_COUNT),2), 0) CTR';
269 }
270
271 public static function addBindField($field, $bannerField, &$modifyStatus)
272 {
273 global $DB;
274
275 $field = "'".$DB->ForSql($field)."'";
276 $bannerField = "'".$DB->ForSql($bannerField)."'";
277
278 if ($bannerField != $field)
279 {
280 $modify_status = "Y";
281 }
282
283 return $field;
284 }
285
286 public static function Add($arFields)
287 {
288 $err_mess = (CAdvBanner::err_mess())."<br>Function: Add<br>Line: ";
289 global $DB;
290 $arrKeys = array_keys($arFields);
291 if (in_array("CODE", $arrKeys))
292 {
293 $arFields["CODE"] = "'".$DB->ForSql($arFields["CODE"])."'";
294 }
295 $BANNER_ID = $DB->Insert("b_adv_banner",$arFields, $err_mess.__LINE__);
296 return $BANNER_ID;
297 }
298
299 public static function GetList($by = 's_id', $order = 'desc', $arFilter = [], $is_filtered = null, $CHECK_RIGHTS = "Y")
300 {
301 global $DB, $USER;
302
303 $err_mess = (CAdvBanner::err_mess())."<br>Function: GetList<br>Line: ";
304
305 if ($CHECK_RIGHTS=="Y")
306 {
307 $USER_ID = intval($USER->GetID());
308 $isAdmin = CAdvContract::IsAdmin();
309 $isDemo = CAdvContract::IsDemo();
310 $isManager = CAdvContract::IsManager();
311 }
312 else
313 {
314 if (is_object($USER)) $USER_ID = intval($USER->GetID()); else $USER_ID = 0;
315 $isAdmin = true;
316 $isDemo = true;
317 $isManager = true;
318 }
319
320 $arSqlSearch = Array();
321 $left_join = '';
322
323 $DONT_USE_CONTRACT = COption::GetOptionString("advertising", "DONT_USE_CONTRACT", "N");
324
325 if ($DONT_USE_CONTRACT == "Y")
326 {
327 $lamp = "
328 if ((
329 (B.DATE_SHOW_FROM<=now() or B.DATE_SHOW_FROM is null or length(B.DATE_SHOW_FROM)<=0) and
330 (B.DATE_SHOW_TO>=now() or B.DATE_SHOW_TO is null or length(B.DATE_SHOW_TO)<=0) and
331 (ifnull(B.MAX_SHOW_COUNT,0)>ifnull(B.SHOW_COUNT,0) or ifnull(B.MAX_SHOW_COUNT,0)=0) and
332 (ifnull(B.MAX_CLICK_COUNT,0)>ifnull(B.CLICK_COUNT,0) or ifnull(B.MAX_CLICK_COUNT,0)=0) and
333 (ifnull(B.MAX_VISITOR_COUNT,0)>ifnull(B.VISITOR_COUNT,0) or ifnull(B.MAX_VISITOR_COUNT,0)=0) and
334 (B.ACTIVE='Y') and
335 (B.STATUS_SID='PUBLISHED') and
336 (T.ACTIVE='Y')
337 ),
338 'green',
339 'red')
340 ";
341 }
342 else
343 {
344 $lamp = "
345 if ((
346 (B.DATE_SHOW_FROM<=now() or B.DATE_SHOW_FROM is null or length(B.DATE_SHOW_FROM)<=0) and
347 (B.DATE_SHOW_TO>=now() or B.DATE_SHOW_TO is null or length(B.DATE_SHOW_TO)<=0) and
348 (ifnull(B.MAX_SHOW_COUNT,0)>ifnull(B.SHOW_COUNT,0) or ifnull(B.MAX_SHOW_COUNT,0)=0) and
349 (ifnull(B.MAX_CLICK_COUNT,0)>ifnull(B.CLICK_COUNT,0) or ifnull(B.MAX_CLICK_COUNT,0)=0) and
350 (ifnull(B.MAX_VISITOR_COUNT,0)>ifnull(B.VISITOR_COUNT,0) or ifnull(B.MAX_VISITOR_COUNT,0)=0) and
351 (B.ACTIVE='Y') and
352 (B.STATUS_SID='PUBLISHED') and
353 (T.ACTIVE='Y') and
354 (C.DATE_SHOW_FROM<=now() or C.DATE_SHOW_FROM is null or length(C.DATE_SHOW_FROM)<=0) and
355 (C.DATE_SHOW_TO>=now() or C.DATE_SHOW_TO is null or length(C.DATE_SHOW_TO)<=0) and
356 (ifnull(C.MAX_SHOW_COUNT,0)>ifnull(C.SHOW_COUNT,0) or ifnull(C.MAX_SHOW_COUNT,0)=0) and
357 (ifnull(C.MAX_CLICK_COUNT,0)>ifnull(C.CLICK_COUNT,0) or ifnull(C.MAX_CLICK_COUNT,0)=0) and
358 (ifnull(C.MAX_VISITOR_COUNT,0)>ifnull(C.VISITOR_COUNT,0) or ifnull(C.MAX_VISITOR_COUNT,0)=0) and
359 (C.ACTIVE='Y')
360 ),
361 'green',
362 'red')
363 ";
364 }
365
366 if (is_array($arFilter))
367 {
368 $filter_keys = array_keys($arFilter);
369 for ($i=0, $n = count($filter_keys); $i < $n; $i++)
370 {
371 $key = $filter_keys[$i];
372 $val = $arFilter[$filter_keys[$i]];
373 if(is_array($val) && count($val)<=0)
374 continue;
375 if((string)$val == '' || $val == "NOT_REF")
376 continue;
377 $match_value_set = (in_array($key."_EXACT_MATCH", $filter_keys)) ? true : false;
378 $key = strtoupper($key);
379 switch($key)
380 {
381 case "ID":
382 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
383 $arSqlSearch[] = GetFilterQuery("B.ID",$val,$match);
384 break;
385 case "LAMP":
386 $arSqlSearch[] = " ".$lamp." = '".$DB->ForSQL($val)."'";
387 break;
388 case "SITE":
389 if (is_array($val)) $val = implode(" | ", $val);
390 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
391 $arSqlSearch[] = GetFilterQuery("BS.SITE_ID", $val, $match);
392 $left_join = "LEFT JOIN b_adv_banner_2_site BS ON (B.ID = BS.BANNER_ID)";
393 break;
394 case "DATE_MODIFY_1":
395 $arSqlSearch[] = "B.DATE_MODIFY>=".$DB->CharToDateFunction($val, "SHORT");
396 break;
397 case "DATE_MODIFY_2":
398 $arSqlSearch[] = "B.DATE_MODIFY<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
399 break;
400 case "DATE_CREATE_1":
401 $arSqlSearch[] = "B.DATE_CREATE>=".$DB->CharToDateFunction($val, "SHORT");
402 break;
403 case "DATE_CREATE_2":
404 $arSqlSearch[] = "B.DATE_CREATE<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
405 break;
406 case "DATE_SHOW_FROM_1":
407 $arSqlSearch[] = "B.DATE_SHOW_FROM>=".$DB->CharToDateFunction($val, "SHORT");
408 break;
409 case "DATE_SHOW_FROM_2":
410 $arSqlSearch[] = "B.DATE_SHOW_FROM<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
411 break;
412 case "DATE_SHOW_TO_1":
413 $arSqlSearch[] = "B.DATE_SHOW_TO>=".$DB->CharToDateFunction($val, "SHORT");
414 break;
415 case "DATE_SHOW_TO_2":
416 $arSqlSearch[] = "B.DATE_SHOW_TO<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY";
417 break;
418 case "ACTIVE":
419 case "FIX_SHOW":
420 $arSqlSearch[] = ($val=="Y") ? "B.".$key."='Y'" : "B.".$key."='N'";
421 break;
422 case "WEIGHT_1":
423 $arSqlSearch[] = "ifnull(B.WEIGHT,0)>='".intval($val)."'";
424 break;
425 case "WEIGHT_2":
426 $arSqlSearch[] = "ifnull(B.WEIGHT,0)<='".intval($val)."'";
427 break;
428 case "MAX_VISITOR_COUNT_1":
429 $arSqlSearch[] = "ifnull(B.MAX_VISITOR_COUNT,0)>='".intval($val)."'";
430 break;
431 case "MAX_VISITOR_COUNT_2":
432 $arSqlSearch[] = "ifnull(B.MAX_VISITOR_COUNT,0)<='".intval($val)."'";
433 break;
434 case "VISITOR_COUNT_1":
435 $arSqlSearch[] = "ifnull(B.VISITOR_COUNT,0)>='".intval($val)."'";
436 break;
437 case "VISITOR_COUNT_2":
438 $arSqlSearch[] = "ifnull(B.VISITOR_COUNT,0)<='".intval($val)."'";
439 break;
440 case "MAX_SHOW_COUNT_1":
441 $arSqlSearch[] = "ifnull(B.MAX_SHOW_COUNT,0)>='".intval($val)."'";
442 break;
443 case "MAX_SHOW_COUNT_2":
444 $arSqlSearch[] = "ifnull(B.MAX_SHOW_COUNT,0)<='".intval($val)."'";
445 break;
446 case "SHOW_COUNT_1":
447 $arSqlSearch[] = "ifnull(B.SHOW_COUNT,0)>='".intval($val)."'";
448 break;
449 case "SHOW_COUNT_2":
450 $arSqlSearch[] = "ifnull(B.SHOW_COUNT,0)<='".intval($val)."'";
451 break;
452 case "MAX_CLICK_COUNT_1":
453 $arSqlSearch[] = "ifnull(B.MAX_CLICK_COUNT,0)>='".intval($val)."'";
454 break;
455 case "MAX_CLICK_COUNT_2":
456 $arSqlSearch[] = "ifnull(B.MAX_CLICK_COUNT,0)<='".intval($val)."'";
457 break;
458 case "CLICK_COUNT_1":
459 $arSqlSearch[] = "ifnull(B.CLICK_COUNT,0)>='".intval($val)."'";
460 break;
461 case "CLICK_COUNT_2":
462 $arSqlSearch[] = "ifnull(B.CLICK_COUNT,0)<='".intval($val)."'";
463 break;
464 case "CTR_1":
465 $arSqlSearch[] = "if(B.SHOW_COUNT<=0,0,round((B.CLICK_COUNT*100)/B.SHOW_COUNT,2))>='".DoubleVal(str_replace(',', '.', $val))."'";
466 break;
467 case "CTR_2":
468 $arSqlSearch[] = "if(B.SHOW_COUNT<=0,0,round((B.CLICK_COUNT*100)/B.SHOW_COUNT,2))<='".DoubleVal(str_replace(',', '.', $val))."'";
469 break;
470 case "GROUP":
471 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
472 $arSqlSearch[] = GetFilterQuery("B.GROUP_SID", $val, $match);
473 break;
474 case "STATUS":
475 case "STATUS_SID":
476 if (is_array($val)) $val = implode(" | ",$val);
477 $arSqlSearch[] = GetFilterQuery("B.STATUS_SID", $val, "N");
478 break;
479 case "CONTRACT_ID":
480 if (is_array($val)) $val = implode(" | ",$val);
481 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
482 $arSqlSearch[] = GetFilterQuery("B.CONTRACT_ID", $val, $match);
483 break;
484 case "CONTRACT":
485 if (is_array($val)) $val = implode(" | ",$val);
486 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
487 $arSqlSearch[] = GetFilterQuery("B.CONTRACT_ID, C.NAME, C.DESCRIPTION", $val, $match);
488 break;
489 case "TYPE_SID":
490 if (is_array($val)) $val = implode(" | ",$val);
491 $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N";
492 $arSqlSearch[] = GetFilterQuery("B.TYPE_SID", $val, $match);
493 break;
494 case "TYPE":
495 if (is_array($val)) $val = implode(" | ",$val);
496 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
497 $arSqlSearch[] = GetFilterQuery("B.TYPE_SID, T.NAME, T.DESCRIPTION", $val, $match);
498 break;
499 case "SHOW_USER_GROUP":
500 if($val=="Y")
501 $arSqlSearch[] = "B.SHOW_USER_GROUP='Y'";
502 else
503 $arSqlSearch[] = "B.SHOW_USER_GROUP <> 'Y'";
504 break;
505 case "NAME":
506 case "CODE":
507 case "COMMENTS":
508 $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y";
509 $arSqlSearch[] = GetFilterQuery("B.".$key, $val, $match);
510 break;
511
512 // совместимость со старой версией
513 case "LANG":
514 case "FIRST_SITE_ID":
515 $arSqlSearch[] = GetFilterQuery("B.FIRST_SITE_ID",$val,"N");
516 break;
517 }
518 }
519 }
520
521 if ($by == "s_id") $strSqlOrder = " ORDER BY B.ID ";
522 elseif ($by == "s_lamp") $strSqlOrder = " ORDER BY LAMP ";
523 elseif ($by == "s_name") $strSqlOrder = " ORDER BY B.NAME ";
524 elseif ($by == "s_type_sid") $strSqlOrder = " ORDER BY B.TYPE_SID ";
525 elseif ($by == "s_contract_id") $strSqlOrder = " ORDER BY B.CONTRACT_ID ";
526 elseif ($by == "s_group_sid") $strSqlOrder = " ORDER BY B.GROUP_SID ";
527 elseif ($by == "s_visitor_count") $strSqlOrder = " ORDER BY B.VISITOR_COUNT ";
528 elseif ($by == "s_max_visitor_count") $strSqlOrder = " ORDER BY ifnull(B.MAX_VISITOR_COUNT,0) ";
529 elseif ($by == "s_show_count") $strSqlOrder = " ORDER BY B.SHOW_COUNT ";
530 elseif ($by == "s_max_show_count") $strSqlOrder = " ORDER BY ifnull(B.MAX_SHOW_COUNT,0) ";
531 elseif ($by == "s_date_last_show") $strSqlOrder = " ORDER BY B.DATE_LAST_SHOW ";
532 elseif ($by == "s_click_count") $strSqlOrder = " ORDER BY B.CLICK_COUNT ";
533 elseif ($by == "s_max_click_count") $strSqlOrder = " ORDER BY ifnull(B.MAX_CLICK_COUNT,0) ";
534 elseif ($by == "s_date_last_click") $strSqlOrder = " ORDER BY B.DATE_LAST_CLICK ";
535 elseif ($by == "s_active") $strSqlOrder = " ORDER BY B.ACTIVE ";
536 elseif ($by == "s_weight") $strSqlOrder = " ORDER BY B.WEIGHT ";
537 elseif ($by == "s_status_sid") $strSqlOrder = " ORDER BY B.STATUS_SID ";
538 elseif ($by == "s_date_show_from") $strSqlOrder = " ORDER BY B.DATE_SHOW_FROM ";
539 elseif ($by == "s_date_show_to") $strSqlOrder = " ORDER BY B.DATE_SHOW_TO ";
540 elseif ($by == "s_dropdown") $strSqlOrder = " ORDER BY B.CONTRACT_ID desc, B.ID ";
541 elseif ($by == "s_ctr") $strSqlOrder = " ORDER BY CTR ";
542 elseif ($by == "s_date_create") $strSqlOrder = " ORDER BY B.DATE_CREATE ";
543 elseif ($by == "s_date_modify") $strSqlOrder = " ORDER BY B.DATE_MODIFY ";
544 else
545 {
546 $strSqlOrder = " ORDER BY B.ID ";
547 }
548
549 if ($order != "asc")
550 {
551 $strSqlOrder .= " desc ";
552 }
553
554 $strSqlSearch = GetFilterSqlSearch($arSqlSearch);
555
556 if ($isAdmin || $isDemo || $isManager)
557 {
558 $strSql = "
559 SELECT DISTINCT
560 $lamp LAMP,
561 B.*,
562 B.FIRST_SITE_ID,
563 B.FIRST_SITE_ID LID,
564 if(B.SHOW_COUNT<=0,0,round((B.CLICK_COUNT*100)/B.SHOW_COUNT,2)) CTR,
565 ".$DB->DateToCharFunction("B.DATE_LAST_SHOW")." DATE_LAST_SHOW,
566 ".$DB->DateToCharFunction("B.DATE_LAST_CLICK")." DATE_LAST_CLICK,
567 ".$DB->DateToCharFunction("B.DATE_SHOW_FROM")." DATE_SHOW_FROM,
568 ".$DB->DateToCharFunction("B.DATE_SHOW_TO")." DATE_SHOW_TO,
569 ".$DB->DateToCharFunction("B.DATE_SHOW_FIRST")." DATE_SHOW_FIRST,
570 ".$DB->DateToCharFunction("B.DATE_CREATE")." DATE_CREATE,
571 ".$DB->DateToCharFunction("B.DATE_MODIFY")." DATE_MODIFY,
572 C.NAME CONTRACT_NAME,
573 T.NAME TYPE_NAME
574 FROM
575 b_adv_banner B
576 INNER JOIN b_adv_type T ON (T.SID = B.TYPE_SID)
577 INNER JOIN b_adv_contract C ON (C.ID = B.CONTRACT_ID)
578 $left_join
579 WHERE
580 $strSqlSearch
581 $strSqlOrder
582 ";
583 }
584 else
585 {
586 $strSql = "
587 SELECT DISTINCT
588 $lamp LAMP,
589 B.*,
590 B.FIRST_SITE_ID,
591 B.FIRST_SITE_ID LID,
592 if(B.SHOW_COUNT<=0,0,round((B.CLICK_COUNT*100)/B.SHOW_COUNT,2)) CTR,
593 ".$DB->DateToCharFunction("B.DATE_LAST_SHOW")." DATE_LAST_SHOW,
594 ".$DB->DateToCharFunction("B.DATE_LAST_CLICK")." DATE_LAST_CLICK,
595 ".$DB->DateToCharFunction("B.DATE_SHOW_FROM")." DATE_SHOW_FROM,
596 ".$DB->DateToCharFunction("B.DATE_SHOW_TO")." DATE_SHOW_TO,
597 ".$DB->DateToCharFunction("B.DATE_SHOW_FIRST")." DATE_SHOW_FIRST,
598 ".$DB->DateToCharFunction("B.DATE_CREATE")." DATE_CREATE,
599 ".$DB->DateToCharFunction("B.DATE_MODIFY")." DATE_MODIFY,
600 C.NAME CONTRACT_NAME,
601 T.NAME TYPE_NAME
602 FROM
603 b_adv_banner B
604 INNER JOIN b_adv_type T ON (T.SID = B.TYPE_SID)
605 INNER JOIN b_adv_contract C ON (C.ID = B.CONTRACT_ID)
606 INNER JOIN b_adv_contract_2_user CU ON (CU.CONTRACT_ID=C.ID and CU.USER_ID=$USER_ID)
607 $left_join
608 WHERE
609 $strSqlSearch
610 $strSqlOrder
611 ";
612 }
613 $res = $DB->Query($strSql, false, $err_mess.__LINE__);
614
615 return $res;
616 }
617
618 // фиксируем клик по изображению баннера
619 public static function Click($BANNER_ID)
620 {
621 $err_mess = (CAdvBanner::err_mess())."<br>Function: Click<br>Line: ";
622 global $DB;
623 $BANNER_ID = intval($BANNER_ID);
624 if ($BANNER_ID<=0) return false;
625
626 $strSql = "
627 SELECT
628 B.CONTRACT_ID
629 FROM
630 b_adv_banner B
631 WHERE
632 B.ID = $BANNER_ID
633 ";
634 $rsBanner = $DB->Query($strSql, false, $err_mess.__LINE__);
635 if ($arBanner = $rsBanner->Fetch())
636 {
637 /********************
638 обновим баннер
639 ********************/
640
641 // параметры баннера
642 $arFields = Array(
643 "CLICK_COUNT" => "CLICK_COUNT + 1",
644 "DATE_LAST_CLICK" => $DB->GetNowFunction(),
645 );
646 $rows = $DB->Update("b_adv_banner",$arFields,"WHERE ID = $BANNER_ID",$err_mess.__LINE__);
647 if (intval($rows)>0)
648 {
649 foreach (getModuleEvents('advertising', 'onBannerClick', true) as $arEvent)
650 executeModuleEventEx($arEvent, array($BANNER_ID, $arFields));
651
652 // счетчик по дням
653 $strSql = "
654 UPDATE b_adv_banner_2_day SET
655 CLICK_COUNT = CLICK_COUNT + 1
656 WHERE
657 BANNER_ID = $BANNER_ID
658 and DATE_STAT = ".$DB->GetNowDate()."
659 ";
660 $z = $DB->Query($strSql, false, $err_mess.__LINE__);
661 $rows = $z->AffectedRowsCount();
662 if (intval($rows)<=0)
663 {
664 $strSql = "
665 SELECT
666 'x'
667 FROM
668 b_adv_banner_2_day
669 WHERE
670 BANNER_ID = $BANNER_ID
671 and DATE_STAT = ".$DB->GetNowDate()."
672 ";
673 $w = $DB->Query($strSql, false, $err_mess.__LINE__);
674 if (!$wr=$w->Fetch())
675 {
676 $strSql = "
677 INSERT INTO b_adv_banner_2_day (DATE_STAT, BANNER_ID, CLICK_COUNT) VALUES (
678 ".$DB->GetNowDate().",
679 $BANNER_ID,
680 1)
681 ";
682 $DB->Query($strSql, true, $err_mess.__LINE__);
683 }
684 }
685 }
686
687 /*************************
688 обновим контракт
689 *************************/
690
691 $DONT_USE_CONTRACT = COption::GetOptionString("advertising", "DONT_USE_CONTRACT", "N");
692
693 $CONTRACT_ID = intval($arBanner["CONTRACT_ID"]);
694 if ($CONTRACT_ID>0 && $DONT_USE_CONTRACT == "N")
695 {
696 $arFields = Array("CLICK_COUNT" => "CLICK_COUNT + 1");
697 $DB->Update("b_adv_contract",$arFields,"WHERE ID = $CONTRACT_ID",$err_mess.__LINE__);
698 }
699 }
700 }
701
702 // формирует массив весов всех возможных баннеров для текущей страницы
703 public static function GetPageWeights_RS()
704 {
705 $err_mess = (CAdvBanner::err_mess())."<br>Function: GetPageWeights_RS<br>Line: ";
706 global $APPLICATION, $DB, $USER;
707
708 $stat_adv_id = intval($_SESSION["SESS_LAST_ADV_ID"]);
709 $stat_country_id = trim($_SESSION["SESS_COUNTRY_ID"]);
710 $stat_city_id = intval($_SESSION["SESS_CITY_ID"]);
711 if($stat_city_id > 0 && CModule::IncludeModule('statistic'))
712 {
713 $rsCity = CCity::GetList(array(), array("=CITY_ID" => $stat_city_id));
714 if($arCity = $rsCity->Fetch())
715 $stat_region = $arCity["REGION_NAME"];
716 }
717 $new_guest = ($_SESSION["SESS_GUEST_NEW"]=="N") ? "N" : "Y";
719 $arrTime = getdate();
720 $weekday = mb_strtoupper($arrTime["weekday"]);
721 $hour = intval($arrTime["hours"]);
722 $strUserGroups = $USER->GetUserGroupString();
723
724 $DONT_USE_CONTRACT = COption::GetOptionString("advertising", "DONT_USE_CONTRACT", "N");
725
726 if ($DONT_USE_CONTRACT == "N")
727 {
728
729 $strSql = "
730 SELECT DISTINCT
731 B.TYPE_SID,
732 B.ID BANNER_ID,
733 B.WEIGHT BANNER_WEIGHT,
734 B.SHOWS_FOR_VISITOR,
735 B.FIX_SHOW,
736 B.KEYWORDS BANNER_KEYWORDS,
737 ".$DB->DateToCharFunction("B.DATE_SHOW_FIRST")." DATE_SHOW_FIRST,
738 ".$DB->DateToCharFunction("B.DATE_SHOW_FROM")." DATE_SHOW_FROM,
739 ".$DB->DateToCharFunction("B.DATE_SHOW_TO")." DATE_SHOW_TO,
740 B.FLYUNIFORM FLYUNIFORM,
741 B.MAX_SHOW_COUNT MAX_SHOW_COUNT,
742 B.SHOW_COUNT SHOW_COUNT,
743 C.ID CONTRACT_ID,
744 C.WEIGHT CONTRACT_WEIGHT,
745 C.KEYWORDS CONTRACT_KEYWORDS
746 FROM
747 b_adv_type T
748
749 INNER JOIN b_adv_banner B ON (
750 B.ACTIVE='Y'
751 and B.TYPE_SID = T.SID
752 and B.STATUS_SID = 'PUBLISHED'
753 and (B.FOR_NEW_GUEST is null or B.FOR_NEW_GUEST='$new_guest')
754 and (ifnull(B.MAX_SHOW_COUNT,0)>ifnull(B.SHOW_COUNT,0) or ifnull(B.MAX_SHOW_COUNT,0)=0)
755 and (ifnull(B.MAX_CLICK_COUNT,0)>ifnull(B.CLICK_COUNT,0) or ifnull(B.MAX_CLICK_COUNT,0)=0)
756 and (ifnull(B.MAX_VISITOR_COUNT,0)>ifnull(B.VISITOR_COUNT,0) or ifnull(B.MAX_VISITOR_COUNT,0)=0)
757 and (B.DATE_SHOW_FROM<=now() or B.DATE_SHOW_FROM is null or length(B.DATE_SHOW_FROM)<=0)
758 and (B.DATE_SHOW_TO>=now() or B.DATE_SHOW_TO is null or length(B.DATE_SHOW_TO)<=0))
759
760 INNER JOIN b_adv_banner_2_site BS ON (
761 BS.BANNER_ID = B.ID
762 and BS.SITE_ID = '".SITE_ID."')
763
764 INNER JOIN b_adv_contract C ON (
765 C.ID = B.CONTRACT_ID
766 and C.ACTIVE='Y'
767 and (ifnull(C.MAX_SHOW_COUNT,0)>ifnull(C.SHOW_COUNT,0) or ifnull(C.MAX_SHOW_COUNT,0)=0)
768 and (ifnull(C.MAX_CLICK_COUNT,0)>ifnull(C.CLICK_COUNT,0) or ifnull(C.MAX_CLICK_COUNT,0)=0)
769 and (ifnull(C.MAX_VISITOR_COUNT,0)>ifnull(C.VISITOR_COUNT,0) or ifnull(C.MAX_VISITOR_COUNT,0)=0)
770 and (C.DATE_SHOW_FROM<=now() or C.DATE_SHOW_FROM is null or length(C.DATE_SHOW_FROM)<=0)
771 and (C.DATE_SHOW_TO>=now() or C.DATE_SHOW_TO is null or length(C.DATE_SHOW_TO)<=0))
772
773 INNER JOIN b_adv_contract_2_site CS ON (
774 CS.CONTRACT_ID = B.CONTRACT_ID
775 and CS.SITE_ID = '".SITE_ID."')
776
777 INNER JOIN b_adv_contract_2_type CT ON (
778 CT.CONTRACT_ID = C.ID
779 and (CT.TYPE_SID = 'ALL' or CT.TYPE_SID = T.SID))
780
781 INNER JOIN b_adv_banner_2_weekday BW ON (
782 BW.BANNER_ID = B.ID
783 and BW.C_WEEKDAY='".$DB->ForSql($weekday,10)."'
784 and BW.C_HOUR = '$hour')
785
786 INNER JOIN b_adv_contract_2_weekday CW ON (
787 CW.CONTRACT_ID = C.ID
788 and CW.C_WEEKDAY='".$DB->ForSql($weekday,10)."'
789 and CW.C_HOUR = '$hour')
790
791 LEFT JOIN b_adv_banner_2_group UG1 ON (
792 (UG1.BANNER_ID = B.ID
793 and UG1.GROUP_ID in (".$strUserGroups.") and UG1.GROUP_ID<>2)
794 )
795
796 LEFT JOIN b_adv_banner_2_page BP1 ON (
797 BP1.BANNER_ID = B.ID
798 and BP1.SHOW_ON_PAGE='Y')
799
800 LEFT JOIN b_adv_banner_2_page BP2 ON (
801 BP2.BANNER_ID = B.ID
802 and BP2.SHOW_ON_PAGE='N'
803 and '".$DB->ForSQL($url)."' like concat(BP2.PAGE, '%'))
804
805 LEFT JOIN b_adv_contract_2_page CP1 ON (
806 CP1.CONTRACT_ID = C.ID
807 and CP1.SHOW_ON_PAGE='Y')
808
809 LEFT JOIN b_adv_contract_2_page CP2 ON (
810 CP2.CONTRACT_ID = C.ID
811 and CP2.SHOW_ON_PAGE='N'
812 and '".$DB->ForSQL($url)."' like concat(CP2.PAGE, '%'))
813
814 LEFT JOIN b_adv_banner_2_stat_adv BA ON BA.BANNER_ID = B.ID
815 LEFT JOIN b_adv_banner_2_country BC ON BC.BANNER_ID = B.ID AND (
816 (
817 (B.STAT_TYPE is null OR length(B.STAT_TYPE)=0 OR B.STAT_TYPE='COUNTRY')
818 AND BC.COUNTRY_ID='".$DB->ForSql($stat_country_id,2)."'
819 ) OR (
820 B.STAT_TYPE='REGION'
821 AND BC.COUNTRY_ID='".$DB->ForSql($stat_country_id,2)."'
822 AND BC.REGION='".$DB->ForSql($stat_region)."'
823 ) OR (
824 B.STAT_TYPE='CITY'
825 AND BC.CITY_ID='".intval($stat_city_id)."'
826 )
827 )
828
829 WHERE
830 T.ACTIVE = 'Y'
831
832 and (
833 B.STAT_COUNT is null
834 or B.STAT_COUNT = 0
835 or BC.BANNER_ID is not null
836 )
837 and BP2.ID is null
838 and CP2.ID is null
839 and (BP1.ID is null or '".$DB->ForSQL($url)."' like concat(BP1.PAGE, '%'))
840 and (CP1.ID is null or '".$DB->ForSQL($url)."' like concat(CP1.PAGE, '%'))
841 and (BA.STAT_ADV_ID is null or BA.STAT_ADV_ID='".$stat_adv_id."')
842 and (BC.COUNTRY_ID is null or BC.COUNTRY_ID='".$DB->ForSql($stat_country_id,2)."')
843
844 and
845 (
846 (B.SHOW_USER_GROUP = 'Y' and UG1.GROUP_ID is not null)
847 or
848 (B.SHOW_USER_GROUP <> 'Y' and UG1.GROUP_ID is null)
849 )
850
851 ORDER BY B.TYPE_SID desc, C.ID desc
852 ";
853 }
854 else
855 {
856 $strSql = "
857 SELECT DISTINCT
858 B.TYPE_SID,
859 B.ID BANNER_ID,
860 B.WEIGHT BANNER_WEIGHT,
861 B.SHOWS_FOR_VISITOR,
862 B.FIX_SHOW,
863 B.KEYWORDS BANNER_KEYWORDS
864 FROM
865 b_adv_type T
866
867 INNER JOIN b_adv_banner B ON (
868 B.ACTIVE='Y'
869 and B.TYPE_SID = T.SID
870 and B.STATUS_SID = 'PUBLISHED'
871 and (B.FOR_NEW_GUEST is null or B.FOR_NEW_GUEST='$new_guest')
872 and (ifnull(B.MAX_SHOW_COUNT,0)>ifnull(B.SHOW_COUNT,0) or ifnull(B.MAX_SHOW_COUNT,0)=0)
873 and (ifnull(B.MAX_CLICK_COUNT,0)>ifnull(B.CLICK_COUNT,0) or ifnull(B.MAX_CLICK_COUNT,0)=0)
874 and (ifnull(B.MAX_VISITOR_COUNT,0)>ifnull(B.VISITOR_COUNT,0) or ifnull(B.MAX_VISITOR_COUNT,0)=0)
875 and (B.DATE_SHOW_FROM<=now() or B.DATE_SHOW_FROM is null or length(B.DATE_SHOW_FROM)<=0)
876 and (B.DATE_SHOW_TO>=now() or B.DATE_SHOW_TO is null or length(B.DATE_SHOW_TO)<=0))
877
878 INNER JOIN b_adv_banner_2_site BS ON (
879 BS.BANNER_ID = B.ID
880 and BS.SITE_ID = '".SITE_ID."')
881
882 INNER JOIN b_adv_banner_2_weekday BW ON (
883 BW.BANNER_ID = B.ID
884 and BW.C_WEEKDAY='".$DB->ForSql($weekday,10)."'
885 and BW.C_HOUR = '$hour')
886
887 LEFT JOIN b_adv_banner_2_group UG1 ON (
888 (UG1.BANNER_ID = B.ID
889 and UG1.GROUP_ID in (".$strUserGroups.") and UG1.GROUP_ID<>2)
890 )
891
892 LEFT JOIN b_adv_banner_2_page BP1 ON (
893 BP1.BANNER_ID = B.ID
894 and BP1.SHOW_ON_PAGE='Y')
895
896 LEFT JOIN b_adv_banner_2_page BP2 ON (
897 BP2.BANNER_ID = B.ID
898 and BP2.SHOW_ON_PAGE='N'
899 and '".$DB->ForSQL($url)."' like concat(BP2.PAGE, '%'))
900
901 LEFT JOIN b_adv_banner_2_stat_adv BA ON BA.BANNER_ID = B.ID
902 LEFT JOIN b_adv_banner_2_country BC ON BC.BANNER_ID = B.ID AND (
903 (
904 (B.STAT_TYPE is null OR length(B.STAT_TYPE)=0 OR B.STAT_TYPE='COUNTRY')
905 AND BC.COUNTRY_ID='".$DB->ForSql($stat_country_id,2)."'
906 ) OR (
907 B.STAT_TYPE='REGION'
908 AND BC.COUNTRY_ID='".$DB->ForSql($stat_country_id,2)."'
909 AND BC.REGION='".$DB->ForSql($stat_region)."'
910 ) OR (
911 B.STAT_TYPE='CITY'
912 AND BC.CITY_ID='".intval($stat_city_id)."'
913 )
914 )
915
916 WHERE
917 T.ACTIVE = 'Y'
918
919 and (
920 B.STAT_COUNT is null
921 or B.STAT_COUNT = 0
922 or BC.BANNER_ID is not null
923 )
924 and BP2.ID is null
925 and (BP1.ID is null or '".$DB->ForSQL($url)."' like concat(BP1.PAGE, '%'))
926 and (BA.STAT_ADV_ID is null or BA.STAT_ADV_ID='".$stat_adv_id."')
927 and (BC.COUNTRY_ID is null or BC.COUNTRY_ID='".$DB->ForSql($stat_country_id,2)."')
928 and
929 (
930 (B.SHOW_USER_GROUP = 'Y' and UG1.GROUP_ID is not null)
931 or
932 (B.SHOW_USER_GROUP <> 'Y' and UG1.GROUP_ID is null)
933 )
934 ORDER BY B.TYPE_SID desc";
935 }
936 $rs = $DB->Query($strSql, false, $err_mess.__LINE__);
937 return $rs;
938 }
939
940 // периодически вызываемая функция очищающая устаревшие данные по динамике баннера по дням
941 public static function CleanUpDynamics()
942 {
943 set_time_limit(0);
944 ignore_user_abort(true);
945 $err_mess = (CAdvBanner::err_mess())."<br>Function: CleanUpDynamics<br>Line: ";
946 global $DB;
947 $DAYS = intval(COption::GetOptionString("advertising", "BANNER_DAYS"));
948 $strSql = "DELETE FROM b_adv_banner_2_day WHERE to_days(now())-to_days(DATE_STAT)>=$DAYS";
949 $DB->Query($strSql, false, $err_mess.__LINE__);
950 $strSql = "OPTIMIZE TABLE b_adv_banner_2_day";
951 $DB->Query($strSql, false, $err_mess.__LINE__);
952 return "CAdvBanner::CleanUpDynamics();";
953 }
954
955 public static function CleanUpAllDynamics()
956 {
957 set_time_limit(0);
958 ignore_user_abort(true);
959 $err_mess = CAdvBanner::err_mess()."<br>Function: CleanUpAllDynamics<br>Line: ";
960 global $DB;
961 $strSql = "DELETE FROM b_adv_banner_2_day WHERE 1 = 1";
962 $DB->Query($strSql, false, $err_mess.__LINE__);
963 $strSql = "OPTIMIZE TABLE b_adv_banner_2_day";
964 $DB->Query($strSql, false, $err_mess.__LINE__);
965 return "CAdvBanner::CleanUpAllDynamics();";
966 }
967
968 public static function GetDynamicList_SQL($strSqlSearch)
969 {
970 global $DB;
971 $strSql = "
972 SELECT
973 ".$DB->DateToCharFunction("D.DATE_STAT","SHORT")." DATE_STAT,
974 DAYOFMONTH(D.DATE_STAT) DAY,
975 MONTH(D.DATE_STAT) MONTH,
976 YEAR(D.DATE_STAT) YEAR,
977 D.SHOW_COUNT,
978 D.CLICK_COUNT,
979 D.VISITOR_COUNT,
980 D.BANNER_ID,
981 B.CONTRACT_ID,
982 B.GROUP_SID,
983 C.NAME CONTRACT_NAME,
984 C.SORT CONTRACT_SORT,
985 B.NAME BANNER_NAME,
986 B.TYPE_SID BANNER_TYPE_SID
987 FROM
988 b_adv_banner_2_day D
989 INNER JOIN b_adv_banner B ON (D.BANNER_ID = B.ID)
990 INNER JOIN b_adv_contract C ON (B.CONTRACT_ID = C.ID)
991 WHERE
992 $strSqlSearch
993 ORDER BY
994 D.DATE_STAT, B.CONTRACT_ID, B.GROUP_SID, D.BANNER_ID
995 ";
996 return $strSql;
997 }
998}
999
1000/*****************************************************************
1001 Класс "Тип баннера"
1002*****************************************************************/
1003
1005{
1006 public static function err_mess()
1007 {
1008 $module_id = "advertising";
1009 return "<br>Module: ".$module_id."<br>Class: CAdvType<br>File: ".__FILE__;
1010 }
1011}
global $APPLICATION
Определения include.php:80
$module_id
Определения options.php:6
Определения advertising.php:1286
static GetCurUri()
Определения advertising.php:1293
Определения advertising.php:247
static Click($BANNER_ID)
Определения advertising.php:619
static CleanUpDynamics()
Определения advertising.php:941
static Add($arFields)
Определения advertising.php:286
static CleanUpAllDynamics()
Определения advertising.php:955
static GetDynamicList_SQL($strSqlSearch)
Определения advertising.php:968
static err_mess()
Определения advertising.php:248
static getCTRSQL()
Определения advertising.php:266
static addBindField($field, $bannerField, &$modifyStatus)
Определения advertising.php:271
static GetList($by='s_id', $order='desc', $arFilter=[], $is_filtered=null, $CHECK_RIGHTS="Y")
Определения advertising.php:299
static Update($arFields, $BANNER_ID)
Определения advertising.php:254
static GetPageWeights_RS()
Определения advertising.php:703
Определения advertising.php:50
static IsAdmin($USER_ID=false)
Определения advertising.php:134
static IsDemo($USER_ID=false)
Определения advertising.php:146
static CheckFilter($arFilter)
Определения advertising.php:479
static IsManager($USER_ID=false)
Определения advertising.php:153
Определения advertising.php:9
static err_mess()
Определения advertising.php:10
static GetList($by="s_sort", $order="desc", $arFilter=[], $is_filtered=null, $CHECK_RIGHTS="Y")
Определения advertising.php:17
Определения advertising.php:5046
Определения advertising.php:1005
static err_mess()
Определения advertising.php:1006
static GetList($arOrder=array(), $arFilter=array())
Определения city.php:292
$arFields
Определения dblapprove.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
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
$z
Определения options.php:31
$order
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643
</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
const SITE_ID
Определения sonet_set_content_view.php:12
$rows
Определения options.php:264
$rs
Определения action.php:82
$n
Определения update_log.php:107
$arFilter
Определения user_search.php:106
$url
Определения iframe.php:7