function GetList(&$by, &$order, $arFilter = array(), &$is_filtered, $CHECK_RIGHTS = "Y") { $err_mess = CAdvType_all::err_mess() . "<br>Function: GetList<br>Line: "; global $DB; $arSqlSearch = array(); if ($CHECK_RIGHTS == "Y") { $isAdmin = CAdvContract::IsAdmin(); $isDemo = CAdvContract::IsDemo(); $isManager = CAdvContract::IsManager(); $isAdvertiser = CAdvContract::IsAdvertiser(); } else { $isAdmin = true; $isDemo = true; $isManager = true; $isAdvertiser = true; } if ($isAdmin || $isDemo || $isManager || $isAdvertiser) { if (CAdvType::CheckFilter($arFilter)) { if (is_array($arFilter)) { $filter_keys = array_keys($arFilter); for ($i = 0, $n = count($filter_keys); $i < $n; $i++) { $key = $filter_keys[$i]; $val = $arFilter[$filter_keys[$i]]; if (is_array($val)) { if (count($val) <= 0) { continue; } } else { if (strlen($val) <= 0 || $val === "NOT_REF") { continue; } } $match_value_set = in_array($key . "_EXACT_MATCH", $filter_keys) ? true : false; $key = strtoupper($key); switch ($key) { case "SID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("T.SID", $val, $match); break; case "DATE_MODIFY_1": $arSqlSearch[] = "T.DATE_MODIFY>=" . $DB->CharToDateFunction($val, "SHORT"); break; case "DATE_MODIFY_2": $arSqlSearch[] = "T.DATE_MODIFY<=" . $DB->CharToDateFunction($val . " 23:59:59", "FULL"); break; case "ACTIVE": $arSqlSearch[] = $val == "Y" ? "T.ACTIVE='Y'" : "T.ACTIVE='N'"; break; case "NAME": case "DESCRIPTION": $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("T." . $key, $val, $match); break; } } } } if ($by == "s_sid") { $strSqlOrder = " ORDER BY T.SID "; } elseif ($by == "s_date_modify") { $strSqlOrder = " ORDER BY T.DATE_MODIFY "; } elseif ($by == "s_modified_by") { $strSqlOrder = " ORDER BY T.MODIFIED_BY "; } elseif ($by == "s_date_create") { $strSqlOrder = " ORDER BY T.DATE_CREATE "; } elseif ($by == "s_created_by") { $strSqlOrder = " ORDER BY T.CREATED_BY "; } elseif ($by == "s_active") { $strSqlOrder = " ORDER BY T.ACTIVE "; } elseif ($by == "s_name") { $strSqlOrder = " ORDER BY T.NAME "; } elseif ($by == "s_banners") { $strSqlOrder = " ORDER BY BANNER_COUNT "; } elseif ($by == "s_description") { $strSqlOrder = " ORDER BY T.DESCRIPTION "; } else { $strSqlOrder = " ORDER BY T.SORT "; $by = "s_sort"; } if ($order != "desc") { $strSqlOrder .= " asc "; $order = "asc"; } else { $strSqlOrder .= " desc "; $order = "desc"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strContracts = ""; if (!$isAdmin && !$isDemo && !$isManager) { $strContracts = "0"; $arPermissions = CAdvContract::GetUserPermissions(); foreach ($arPermissions as $contract_id => $arContractPerms) { if (is_array($arContractPerms) && !empty($arContractPerms)) { $strContracts .= "," . $contract_id; } } } $strSql = "\n\t\t\t\tSELECT\n\t\t\t\t\tT.SID,\n\t\t\t\t\tT.ACTIVE,\n\t\t\t\t\tT.SORT,\n\t\t\t\t\tT.NAME,\n\t\t\t\t\tT.DESCRIPTION,\n\t\t\t\t\t" . $DB->DateToCharFunction("T.DATE_CREATE") . "\tDATE_CREATE,\n\t\t\t\t\t" . $DB->DateToCharFunction("T.DATE_MODIFY") . "\tDATE_MODIFY,\n\t\t\t\t\tT.CREATED_BY,\n\t\t\t\t\tT.MODIFIED_BY,\n\t\t\t\t\tcount(distinct B.ID)\t\t\t\t\t\t\tBANNER_COUNT\n\t\t\t\tFROM\n\t\t\t\t\tb_adv_type T\n\t\t\t\t\tLEFT JOIN b_adv_banner B ON (B.TYPE_SID=T.SID" . ($strContracts == "" ? "" : " AND B.CONTRACT_ID IN (" . $strContracts . ")") . ")\n\t\t\t\tWHERE\n\t\t\t\t{$strSqlSearch} " . ($strContracts == "" ? "" : "and exists(select 'x' from b_adv_contract_2_type CT where (CT.TYPE_SID=T.SID OR CT.TYPE_SID='ALL') AND CT.CONTRACT_ID IN (" . $strContracts . ")) ") . " and T.SID<>'ALL'\n\t\t\t\tGROUP BY\n\t\t\t\t\tT.SID, T.ACTIVE, T.SORT, T.NAME, T.DESCRIPTION,\tT.DATE_CREATE, T.DATE_MODIFY, T.CREATED_BY, T.MODIFIED_BY\n\t\t\t\t{$strSqlOrder}\n\t\t\t\t"; $res = $DB->Query($strSql, false, $err_mess . __LINE__); $is_filtered = IsFiltered($strSqlSearch); return $res; } return null; }
<?php ############################################## # Bitrix: SiteManager # # Copyright (c) 2002-2006 Bitrix # # http://www.bitrixsoft.com # # mailto:admin@bitrixsoft.com # ############################################## require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_before.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/advertising/prolog.php"; require_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/advertising/include.php"; $isDemo = CAdvContract::IsDemo(); $isManager = CAdvContract::IsManager(); $isAdvertiser = CAdvContract::IsAdvertiser(); $isAdmin = CAdvContract::IsAdmin(); if (!$isAdmin && !$isDemo && !$isManager && !$isAdvertiser) { $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); } //$DONT_USE_CONTRACT = COption::GetOptionString("advertising", "DONT_USE_CONTRACT", "N"); IncludeModuleLangFile(__FILE__); $sTableID = "tbl_adv_banner_list"; // инициализация сортировки $oSort = new CAdminSorting($sTableID, "s_id", "desc"); // инициализация списка $lAdmin = new CAdminList($sTableID, $oSort); /*************************************************************************** Обработка GET | POST ****************************************************************************/ // массив доступов по всем контрактам для текущего пользователя $arrPERM = CAdvContract::GetUserPermissions(); $FilterArr = array("find", "find_type_f", "find_id", "find_id_exact_match", "find_lamp", "find_site", "find_visitor_count_1", "find_visitor_count_2", "find_show_count_1", "find_show_count_2", "find_click_count_1", "find_click_count_2", "find_ctr_1", "find_ctr_2", "find_contract_id", "find_contract", "find_contract_exact_match", "find_group", "find_group_exact_match", "find_status_sid", "find_type_sid", "find_type", "find_type_exact_match", "find_name", "find_name_exact_match", "find_code", "find_code_exact_match", "find_comments", "find_comments_exact_match");
/** * <p>Функция предназначена для получения списка баннеров.</p> * * * * * @param varchar &$by Идентификатор позволяющий задать имя поля для сортировки. * Допустимы следующие значения: <ul> <li>s_id - по ID </li> <li>s_lamp - по * индикатору </li> <li>s_name - по имени баннера </li> <li>s_type_sid - по типу * баннера </li> <li>s_contract_id - по ID контракта </li> <li>s_group_sid - по имени группы * </li> <li>s_show_count - по количеству показов </li> <li>s_max_show_count - по * максимальному количеству показов </li> <li>s_date_last_show - по дате * последнего показа </li> <li>s_click_count - по количеству кликов на баннер * </li> <li>s_max_click_count - по максимальному количеству кликов </li> * <li>s_date_last_click - по дате последнего клика </li> <li>s_active - по флагу * активности </li> <li>s_weight - по весу баннера </li> <li>s_status_sid - по статусу * баннера </li> <li>s_date_show_from - по дате начала показов </li> <li>s_date_show_to - по * дате окончания показов </li> <li>s_ctr - по CTR баннера</li> </ul> * * * * @param varchar &$order Порядок сортировки. Допустимы следующие значения: <ul> <li>desc - по * убыванию (значение по умолчанию) </li> <li>asc - по возрастанию</li> </ul> * * * * @param array $arFilter = array() Массив для фильтрации значений. Необязательный параметр. В * массиве допустимы следующие индексы: <ul> <li>ID - ID баннера * (допускается <a href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>) * </li> <li>ID_EXACT_MATCH - "Y" - при фильтрации по ID баннера будет искаться * точное совпадение (по умолчанию); "N" - в противном случае будет * искаться вхождение </li> <li>ACTIVE - активность, значения Y/N</li> <li>LAMP - * значение индикатора: "red", "green" </li> <li>LANG - двухсимвольный * идентификатор языковой части сайта в которой будет показываться * баннер </li> <li>SHOW_COUNT_1 - левая часть интервала для числа показов </li> * <li>SHOW_COUNT_2 - правая часть интервала для числа показов </li> <li>CLICK_COUNT_1 - * левая часть интервала для числа кликов </li> <li>CLICK_COUNT_2 - правая * часть интервала для числа кликов </li> <li>CTR_1 - левая часть интервала * для CTR баннера </li> <li>CTR_2 - правая часть интервала для CTR баннера </li> * <li>GROUP - имя группы баннера (допускается <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>) </li> <li>GROUP_EXACT_MATCH * - "Y" - при фильтрации по имени группы будет искаться точное * совпадение; "N" - в противном случае будет искаться вхождение (по * умолчанию) </li> <li>STATUS_SID - символьный код статуса (допускается <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>); символьный * код статуса может принимать следующие значения: <ul> <li>PUBLISHED - * баннер подтвержден и опубликован</li> <li>READY - баннер на * рассмотрении</li> <li>REJECTED - баннер отклонен</li> </ul> </li> <li>CONTRACT_ID - ID * контракта (допускается <a href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная * логика</a>) </li> <li>CONTRACT_ID_EXACT_MATCH - "Y" - при фильтрации по ID контракта * будет искаться точное совпадение (по умолчанию); "N" - в противном * случае будет искаться вхождение </li> <li>CONTRACT - ID, имя, описание * контракта (допускается <a href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная * логика</a>) </li> <li>CONTRACT_EXACT_MATCH - "Y" - при фильтрации по ID, имени, * описанию контракта будет искаться точное совпадение; "N" - в * противном случае будет искаться вхождение (по умолчанию) </li> * <li>TYPE_SID - символьный код типа баннера (допускается <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>) </li> * <li>TYPE_SID_EXACT_MATCH - "Y" - при фильтрации по символьному коду типа * баннера будет искаться точное совпадение (по умолчанию); "N" - в * противном случае будет искаться вхождение </li> <li>NAME - имя баннера * (допускается <a href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>) * </li> <li>NAME_EXACT_MATCH - "Y" - при фильтрации по имени баннера будет * искаться точное совпадение; "N" - в противном случае будет искаться * вхождение (по умолчанию) </li> <li>CODE - код баннера (допускается <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>) </li> <li>CODE_EXACT_MATCH * - "Y" - при фильтрации по коду баннера будет искаться точное * совпадение; "N" - в противном случае будет искаться вхождение (по * умолчанию) </li> <li>COMMENTS - комментарий к баннеру (допускается <a * href="http://dev.1c-bitrix.ru/user_help/general/filter.php">сложная логика</a>) </li> * <li>COMMENTS_EXACT_MATCH - "Y" - при фильтрации по комментарию к баннеру будет * искаться точное совпадение; "N" - в противном случае будет искаться * вхождение (по умолчанию) </li> <li>SITE - для фильтрации по сайтам.</li> </ul> * * * * @param boolean &$is_filtered Переменная возвращающая true в том случае если список баннеров * отфильтрован по какому либо критерию; либо false в противном случае. * * * * @param char(1) $CHECK_RIGHTS = "Y" Параметр проверяет уровень доступа к модулю Реклама * (администратор рекламы, рекламодатель и т.д.). Если параметр * определён как "N", то считается, что текущий пользователь обладает * административными правами доступа к модулю Реклама. Если * параметр пропущен либо равен "Y", то функция проверяет уровень * доступа к модулю. Необязательный параметр. * * * * @return record * * * <h4>Example</h4> * <pre> * <? * $FilterArr = Array( * "find_id", * "find_id_exact_match", * "find_lamp", * "find_lang", * "find_show_count_1", * "find_show_count_2", * "find_click_count_1", * "find_click_count_2", * "find_ctr_1", * "find_ctr_2", * "find_contract_id", * "find_contract", * "find_contract_exact_match", * "find_group", * "find_group_exact_match", * "find_status_sid", * "find_type_sid", * "find_type", * "find_type_exact_match", * "find_name", * "find_name_exact_match", * "find_code", * "find_code_exact_match", * "find_comments", * "find_comments_exact_match" * ); * if (strlen($set_filter)>0) InitFilterEx($FilterArr,"ADV_BANNER_LIST","set"); * else InitFilterEx($FilterArr,"ADV_BANNER_LIST","get"); * if (strlen($del_filter)>0) DelFilterEx($FilterArr,"ADV_BANNER_LIST"); * InitBVar($find_id_exact_match); * InitBVar($find_status_exact_match); * InitBVar($find_group_exact_match); * InitBVar($find_contract_exact_match); * InitBVar($find_type_exact_match); * InitBVar($find_name_exact_match); * InitBVar($find_code_exact_match); * InitBVar($find_comments_exact_match); * $arFilter = Array( * "ID" => $find_id, * "ID_EXACT_MATCH" => $find_id_exact_match, * "LAMP" => $find_lamp, * "LANG" => $find_lang, * "SHOW_COUNT_1" => $find_show_count_1, * "SHOW_COUNT_2" => $find_show_count_2, * "CLICK_COUNT_1" => $find_click_count_1, * "CLICK_COUNT_2" => $find_click_count_2, * "CTR_1" => $find_ctr_1, * "CTR_2" => $find_ctr_2, * "GROUP" => $find_group, * "GROUP_EXACT_MATCH" => $find_group_exact_match, * "STATUS_SID" => $find_status_sid, * "CONTRACT_ID" => $find_contract_id, * "CONTRACT" => $find_contract, * "CONTRACT_EXACT_MATCH" => $find_contract_exact_match, * "TYPE_SID" => $find_type_sid, * "TYPE" => $find_type, * "TYPE_EXACT_MATCH" => $find_type_exact_match, * "NAME" => $find_name, * "NAME_EXACT_MATCH" => $find_name_exact_match, * "CODE" => $find_code, * "CODE_EXACT_MATCH" => $find_code_exact_match, * "COMMENTS" => $find_comments, * "COMMENTS_EXACT_MATCH" => $find_comments_exact_match * ); * $rsBanners = <b>CAdvBanner::GetList</b>($by, $order, $arFilter, $is_filtered, "N"); * $rsBanners->NavStart(20); * $rsBanners->NavPrint("Баннеры"); * while($arBanner = $rsBanners->NavNext(true, "f_")) * { * echo "<pre>"; print_r($arBanner); echo "</pre>"; * } * ?> * </bo * <? * Array * ( * [LAMP] => green * [ID] => 88 * [CONTRACT_ID] => 1 * [TYPE_SID] => TOP * [GROUP_SID] => * [STATUS_SID] => PUBLISHED * [STATUS_COMMENTS] => * [NAME] => * [ACTIVE] => Y * [LID] => * [WEIGHT] => 100 * [MAX_SHOW_COUNT] => 300 * [MAX_CLICK_COUNT] => 100 * [SHOW_COUNT] => 102 * [CLICK_COUNT] => 4 * [IMAGE_ID] => 1032 * [IMAGE_ALT] => * [URL] => http://www.1c-bitrix.ru?banner_param=<code>#EVENT_GID#</code> * [URL_TARGET] => _parent * [CODE] => <TABLE class=smalltext cellSpacing=0 cellPadding=0 width=145> * <TR> * <TD></TD> * <TD> * <DIV align=center> * <A class=righthead href="/ru/partners/partnership.php">Партнёрская программа</A> * </DIV> * </TD></TR> * <TR> * <TD></TD> * <TD height=8></TD></TR> * <TR> * <TD width=5></TD> * <TD vAlign=bottom> * <DIV align=center> * <A href="/ru/partners/partnership.php"> * <IMG height=95 src="/images/advert/free.gif" width=100 border=0></A> * </DIV></TD></TR> * <TR> * <TD></TD> * <TD height=5></TD></TR> * <TR> * <TD></TD> * <TD>Разработчики сайтов и интеграторы получают:<BR> * <B><FONT class=smalltext> * <IMG height=8 src="/images/list_bullet.gif" width=8> * </FONT></B> * <FONT color=#ff5a31>скидки до 50%</FONT> <BR> * <B><FONT class=smalltext> * <IMG height=8 src="/images/list_bullet.gif" width=8> * </FONT></B> * <FONT color=#ff5a31>бесплатную копиию</FONT> * </TD></TR> * <TR> * <TD></TD> * <TD height=5></TD></TR> * <TR> * <TD></TD> * <TD> * <DIV align=right> * <A class=bottomlinks href="/ru/partners/partnership.php">Подробнее</A> * <IMG height=7 src="/images/main_button_more_3.gif" width=7> * </DIV></TD></TR></TABLE> * [CODE_TYPE] => html * [STAT_EVENT_1] => * [STAT_EVENT_2] => * [STAT_EVENT_3] => * [FOR_NEW_GUEST] => * [COMMENTS] => * [CREATED_BY] => 2 * [MODIFIED_BY] => 2 * [CTR] => 3.92 * [DATE_LAST_SHOW] => 24.06.2004 17:39:50 * [DATE_LAST_CLICK] => 24.06.2004 14:47:53 * [DATE_SHOW_FROM] => 10.06.2004 * [DATE_SHOW_TO] => 07.07.2007 * [DATE_CREATE] => 10.06.2004 11:25:59 * [DATE_MODIFY] => 24.06.2004 14:33:56 * [CONTRACT_NAME] => Default * [TYPE_NAME] => Top banner * ) * ?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/advertising/classes/cadvbanner/getlist.php * @author Bitrix */ public static function GetList(&$by, &$order, $arFilter = array(), &$is_filtered, $CHECK_RIGHTS = "Y") { $err_mess = CAdvBanner::err_mess() . "<br>Function: GetList<br>Line: "; global $DB, $USER, $APPLICATION; if ($CHECK_RIGHTS == "Y") { $USER_ID = intval($USER->GetID()); $isAdmin = CAdvContract::IsAdmin(); $isDemo = CAdvContract::IsDemo(); $isManager = CAdvContract::IsManager(); $isAdvertiser = CAdvContract::IsAdvertiser(); } else { if (is_object($USER)) { $USER_ID = intval($USER->GetID()); } else { $USER_ID = 0; } $isAdmin = true; $isDemo = true; $isManager = true; $isAdvertiser = true; } $arSqlSearch = array(); $strSqlSearch = ""; $DONT_USE_CONTRACT = COption::GetOptionString("advertising", "DONT_USE_CONTRACT", "N"); if ($DONT_USE_CONTRACT == "Y") { $lamp = "\n\t\t\t\tif ((\n\t\t\t\t\t(B.DATE_SHOW_FROM<=now() or B.DATE_SHOW_FROM is null or length(B.DATE_SHOW_FROM)<=0) and\n\t\t\t\t\t(B.DATE_SHOW_TO>=now() or B.DATE_SHOW_TO is null or length(B.DATE_SHOW_TO)<=0) and\n\t\t\t\t\t(ifnull(B.MAX_SHOW_COUNT,0)>ifnull(B.SHOW_COUNT,0) or ifnull(B.MAX_SHOW_COUNT,0)=0) and\n\t\t\t\t\t(ifnull(B.MAX_CLICK_COUNT,0)>ifnull(B.CLICK_COUNT,0) or ifnull(B.MAX_CLICK_COUNT,0)=0) and\n\t\t\t\t\t(ifnull(B.MAX_VISITOR_COUNT,0)>ifnull(B.VISITOR_COUNT,0) or ifnull(B.MAX_VISITOR_COUNT,0)=0) and\n\t\t\t\t\t(B.ACTIVE='Y') and\n\t\t\t\t\t(B.STATUS_SID='PUBLISHED') and\n\t\t\t\t\t(T.ACTIVE='Y')\n\t\t\t\t\t),\n\t\t\t\t\t'green',\n\t\t\t\t\t'red')\n\t\t\t\t"; } else { $lamp = "\n\t\t\t\tif ((\n\t\t\t\t\t(B.DATE_SHOW_FROM<=now() or B.DATE_SHOW_FROM is null or length(B.DATE_SHOW_FROM)<=0) and\n\t\t\t\t\t(B.DATE_SHOW_TO>=now() or B.DATE_SHOW_TO is null or length(B.DATE_SHOW_TO)<=0) and\n\t\t\t\t\t(ifnull(B.MAX_SHOW_COUNT,0)>ifnull(B.SHOW_COUNT,0) or ifnull(B.MAX_SHOW_COUNT,0)=0) and\n\t\t\t\t\t(ifnull(B.MAX_CLICK_COUNT,0)>ifnull(B.CLICK_COUNT,0) or ifnull(B.MAX_CLICK_COUNT,0)=0) and\n\t\t\t\t\t(ifnull(B.MAX_VISITOR_COUNT,0)>ifnull(B.VISITOR_COUNT,0) or ifnull(B.MAX_VISITOR_COUNT,0)=0) and\n\t\t\t\t\t(B.ACTIVE='Y') and\n\t\t\t\t\t(B.STATUS_SID='PUBLISHED') and\n\t\t\t\t\t(T.ACTIVE='Y') and\n\t\t\t\t\t(C.DATE_SHOW_FROM<=now() or C.DATE_SHOW_FROM is null or length(C.DATE_SHOW_FROM)<=0) and\n\t\t\t\t\t(C.DATE_SHOW_TO>=now() or C.DATE_SHOW_TO is null or length(C.DATE_SHOW_TO)<=0) and\n\t\t\t\t\t(ifnull(C.MAX_SHOW_COUNT,0)>ifnull(C.SHOW_COUNT,0) or ifnull(C.MAX_SHOW_COUNT,0)=0) and\n\t\t\t\t\t(ifnull(C.MAX_CLICK_COUNT,0)>ifnull(C.CLICK_COUNT,0) or ifnull(C.MAX_CLICK_COUNT,0)=0) and\n\t\t\t\t\t(ifnull(C.MAX_VISITOR_COUNT,0)>ifnull(C.VISITOR_COUNT,0) or ifnull(C.MAX_VISITOR_COUNT,0)=0) and\n\t\t\t\t\t(C.ACTIVE='Y')\n\t\t\t\t\t),\n\t\t\t\t\t'green',\n\t\t\t\t\t'red')\n\t\t\t\t"; } if (is_array($arFilter)) { $filter_keys = array_keys($arFilter); for ($i = 0, $n = count($filter_keys); $i < $n; $i++) { $key = $filter_keys[$i]; $val = $arFilter[$filter_keys[$i]]; if (is_array($val) && count($val) <= 0) { continue; } if ($val == '' || $val == "NOT_REF") { continue; } $match_value_set = in_array($key . "_EXACT_MATCH", $filter_keys) ? true : false; $key = strtoupper($key); switch ($key) { case "ID": $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("B.ID", $val, $match); break; case "LAMP": $arSqlSearch[] = " " . $lamp . " = '" . $DB->ForSQL($val) . "'"; break; case "SITE": if (is_array($val)) { $val = implode(" | ", $val); } $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("BS.SITE_ID", $val, $match); $left_join = "LEFT JOIN b_adv_banner_2_site BS ON (B.ID = BS.BANNER_ID)"; break; case "DATE_MODIFY_1": $arSqlSearch[] = "B.DATE_MODIFY>=" . $DB->CharToDateFunction($val, "SHORT"); break; case "DATE_MODIFY_2": $arSqlSearch[] = "B.DATE_MODIFY<" . $DB->CharToDateFunction($val, "SHORT") . " + INTERVAL 1 DAY"; break; case "DATE_CREATE_1": $arSqlSearch[] = "B.DATE_CREATE>=" . $DB->CharToDateFunction($val, "SHORT"); break; case "DATE_CREATE_2": $arSqlSearch[] = "B.DATE_CREATE<" . $DB->CharToDateFunction($val, "SHORT") . " + INTERVAL 1 DAY"; break; case "DATE_SHOW_FROM_1": $arSqlSearch[] = "B.DATE_SHOW_FROM>=" . $DB->CharToDateFunction($val, "SHORT"); break; case "DATE_SHOW_FROM_2": $arSqlSearch[] = "B.DATE_SHOW_FROM<" . $DB->CharToDateFunction($val, "SHORT") . " + INTERVAL 1 DAY"; break; case "DATE_SHOW_TO_1": $arSqlSearch[] = "B.DATE_SHOW_TO>=" . $DB->CharToDateFunction($val, "SHORT"); break; case "DATE_SHOW_TO_2": $arSqlSearch[] = "B.DATE_SHOW_TO<" . $DB->CharToDateFunction($val, "SHORT") . " + INTERVAL 1 DAY"; break; case "ACTIVE": case "FIX_SHOW": $arSqlSearch[] = $val == "Y" ? "B." . $key . "='Y'" : "B." . $key . "='N'"; break; case "WEIGHT_1": $arSqlSearch[] = "ifnull(B.WEIGHT,0)>='" . intval($val) . "'"; break; case "WEIGHT_2": $arSqlSearch[] = "ifnull(B.WEIGHT,0)<='" . intval($val) . "'"; break; case "MAX_VISITOR_COUNT_1": $arSqlSearch[] = "ifnull(B.MAX_VISITOR_COUNT,0)>='" . intval($val) . "'"; break; case "MAX_VISITOR_COUNT_2": $arSqlSearch[] = "ifnull(B.MAX_VISITOR_COUNT,0)<='" . intval($val) . "'"; break; case "VISITOR_COUNT_1": $arSqlSearch[] = "ifnull(B.VISITOR_COUNT,0)>='" . intval($val) . "'"; break; case "VISITOR_COUNT_2": $arSqlSearch[] = "ifnull(B.VISITOR_COUNT,0)<='" . intval($val) . "'"; break; case "MAX_SHOW_COUNT_1": $arSqlSearch[] = "ifnull(B.MAX_SHOW_COUNT,0)>='" . intval($val) . "'"; break; case "MAX_SHOW_COUNT_2": $arSqlSearch[] = "ifnull(B.MAX_SHOW_COUNT,0)<='" . intval($val) . "'"; break; case "SHOW_COUNT_1": $arSqlSearch[] = "ifnull(B.SHOW_COUNT,0)>='" . intval($val) . "'"; break; case "SHOW_COUNT_2": $arSqlSearch[] = "ifnull(B.SHOW_COUNT,0)<='" . intval($val) . "'"; break; case "MAX_CLICK_COUNT_1": $arSqlSearch[] = "ifnull(B.MAX_CLICK_COUNT,0)>='" . intval($val) . "'"; break; case "MAX_CLICK_COUNT_2": $arSqlSearch[] = "ifnull(B.MAX_CLICK_COUNT,0)<='" . intval($val) . "'"; break; case "CLICK_COUNT_1": $arSqlSearch[] = "ifnull(B.CLICK_COUNT,0)>='" . intval($val) . "'"; break; case "CLICK_COUNT_2": $arSqlSearch[] = "ifnull(B.CLICK_COUNT,0)<='" . intval($val) . "'"; break; case "CTR_1": $arSqlSearch[] = "if(B.SHOW_COUNT<=0,0,round((B.CLICK_COUNT*100)/B.SHOW_COUNT,2))>='" . DoubleVal(str_replace(',', '.', $val)) . "'"; break; case "CTR_2": $arSqlSearch[] = "if(B.SHOW_COUNT<=0,0,round((B.CLICK_COUNT*100)/B.SHOW_COUNT,2))<='" . DoubleVal(str_replace(',', '.', $val)) . "'"; break; case "GROUP": $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("B.GROUP_SID", $val, $match); break; case "STATUS": case "STATUS_SID": if (is_array($val)) { $val = implode(" | ", $val); } $arSqlSearch[] = GetFilterQuery("B.STATUS_SID", $val, "N"); break; case "CONTRACT_ID": if (is_array($val)) { $val = implode(" | ", $val); } $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("B.CONTRACT_ID", $val, $match); break; case "CONTRACT": if (is_array($val)) { $val = implode(" | ", $val); } $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("B.CONTRACT_ID, C.NAME, C.DESCRIPTION", $val, $match); break; case "TYPE_SID": if (is_array($val)) { $val = implode(" | ", $val); } $match = $arFilter[$key . "_EXACT_MATCH"] == "N" && $match_value_set ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("B.TYPE_SID", $val, $match); break; case "TYPE": if (is_array($val)) { $val = implode(" | ", $val); } $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("B.TYPE_SID, T.NAME, T.DESCRIPTION", $val, $match); break; case "SHOW_USER_GROUP": if ($val == "Y") { $arSqlSearch[] = "B.SHOW_USER_GROUP='Y'"; } else { $arSqlSearch[] = "B.SHOW_USER_GROUP <> 'Y'"; } break; case "NAME": case "CODE": case "COMMENTS": $match = $arFilter[$key . "_EXACT_MATCH"] == "Y" && $match_value_set ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("B." . $key, $val, $match); break; // совместимость со старой версией // совместимость со старой версией case "LANG": case "FIRST_SITE_ID": $arSqlSearch[] = GetFilterQuery("B.FIRST_SITE_ID", $val, "N"); break; } } } if ($by == "s_id") { $strSqlOrder = " ORDER BY B.ID "; } elseif ($by == "s_lamp") { $strSqlOrder = " ORDER BY LAMP "; } elseif ($by == "s_name") { $strSqlOrder = " ORDER BY B.NAME "; } elseif ($by == "s_type_sid") { $strSqlOrder = " ORDER BY B.TYPE_SID "; } elseif ($by == "s_contract_id") { $strSqlOrder = " ORDER BY B.CONTRACT_ID "; } elseif ($by == "s_group_sid") { $strSqlOrder = " ORDER BY B.GROUP_SID "; } elseif ($by == "s_visitor_count") { $strSqlOrder = " ORDER BY B.VISITOR_COUNT "; } elseif ($by == "s_max_visitor_count") { $strSqlOrder = " ORDER BY ifnull(B.MAX_VISITOR_COUNT,0) "; } elseif ($by == "s_show_count") { $strSqlOrder = " ORDER BY B.SHOW_COUNT "; } elseif ($by == "s_max_show_count") { $strSqlOrder = " ORDER BY ifnull(B.MAX_SHOW_COUNT,0) "; } elseif ($by == "s_date_last_show") { $strSqlOrder = " ORDER BY B.DATE_LAST_SHOW "; } elseif ($by == "s_click_count") { $strSqlOrder = " ORDER BY B.CLICK_COUNT "; } elseif ($by == "s_max_click_count") { $strSqlOrder = " ORDER BY ifnull(B.MAX_CLICK_COUNT,0) "; } elseif ($by == "s_date_last_click") { $strSqlOrder = " ORDER BY B.DATE_LAST_CLICK "; } elseif ($by == "s_active") { $strSqlOrder = " ORDER BY B.ACTIVE "; } elseif ($by == "s_weight") { $strSqlOrder = " ORDER BY B.WEIGHT "; } elseif ($by == "s_status_sid") { $strSqlOrder = " ORDER BY B.STATUS_SID "; } elseif ($by == "s_date_show_from") { $strSqlOrder = " ORDER BY B.DATE_SHOW_FROM "; } elseif ($by == "s_date_show_to") { $strSqlOrder = " ORDER BY B.DATE_SHOW_TO "; } elseif ($by == "s_dropdown") { $strSqlOrder = " ORDER BY B.CONTRACT_ID desc, B.ID "; } elseif ($by == "s_ctr") { $strSqlOrder = " ORDER BY CTR "; } elseif ($by == "s_date_create") { $strSqlOrder = " ORDER BY B.DATE_CREATE "; } elseif ($by == "s_date_modify") { $strSqlOrder = " ORDER BY B.DATE_MODIFY "; } else { $strSqlOrder = " ORDER BY B.ID "; $by = "s_id"; } if ($order != "asc") { $strSqlOrder .= " desc "; $order = "desc"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); if ($isAdmin || $isDemo || $isManager) { $strSql = "\n\t\t\t\tSELECT DISTINCT\n\t\t\t\t\t{$lamp}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLAMP,\n\t\t\t\t\tB.*,\n\t\t\t\t\tB.FIRST_SITE_ID,\n\t\t\t\t\tB.FIRST_SITE_ID\t\t\t\t\t\t\t\t\t\t\t\t\t\tLID,\n\t\t\t\t\tif(B.SHOW_COUNT<=0,0,round((B.CLICK_COUNT*100)/B.SHOW_COUNT,2))\t\tCTR,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_LAST_SHOW") . "\t\t\t\t\t\tDATE_LAST_SHOW,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_LAST_CLICK") . "\t\t\t\t\tDATE_LAST_CLICK,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_SHOW_FROM") . "\t\t\tDATE_SHOW_FROM,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_SHOW_TO") . "\t\t\t\tDATE_SHOW_TO,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_SHOW_FIRST") . "\t\t\tDATE_SHOW_FIRST,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_CREATE") . "\t\t\t\t\t\tDATE_CREATE,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_MODIFY") . "\t\t\t\t\t\tDATE_MODIFY,\n\t\t\t\t\tC.NAME\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCONTRACT_NAME,\n\t\t\t\t\tT.NAME\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTYPE_NAME\n\t\t\t\tFROM\n\t\t\t\t\tb_adv_banner B\n\t\t\t\tINNER JOIN b_adv_type T ON (T.SID = B.TYPE_SID)\n\t\t\t\tINNER JOIN b_adv_contract C ON (C.ID = B.CONTRACT_ID)\n\t\t\t\t{$left_join}\n\t\t\t\tWHERE\n\t\t\t\t{$strSqlSearch}\n\t\t\t\t{$strSqlOrder}\n\t\t\t\t"; } else { $strSql = "\n\t\t\t\tSELECT DISTINCT\n\t\t\t\t\t{$lamp}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tLAMP,\n\t\t\t\t\tB.*,\n\t\t\t\t\tB.FIRST_SITE_ID,\n\t\t\t\t\tB.FIRST_SITE_ID\t\t\t\t\t\t\t\t\t\t\t\t\t\tLID,\n\t\t\t\t\tif(B.SHOW_COUNT<=0,0,round((B.CLICK_COUNT*100)/B.SHOW_COUNT,2))\t\tCTR,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_LAST_SHOW") . "\t\t\t\t\t\tDATE_LAST_SHOW,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_LAST_CLICK") . "\t\t\t\t\tDATE_LAST_CLICK,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_SHOW_FROM") . "\t\t\tDATE_SHOW_FROM,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_SHOW_TO") . "\t\t\t\tDATE_SHOW_TO,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_SHOW_FIRST") . "\t\t\tDATE_SHOW_FIRST,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_CREATE") . "\t\t\t\t\t\tDATE_CREATE,\n\t\t\t\t\t" . $DB->DateToCharFunction("B.DATE_MODIFY") . "\t\t\t\t\t\tDATE_MODIFY,\n\t\t\t\t\tC.NAME\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tCONTRACT_NAME,\n\t\t\t\t\tT.NAME\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tTYPE_NAME\n\t\t\t\tFROM\n\t\t\t\t\tb_adv_banner B\n\t\t\t\tINNER JOIN b_adv_type T ON (T.SID = B.TYPE_SID)\n\t\t\t\tINNER JOIN b_adv_contract C ON (C.ID = B.CONTRACT_ID)\n\t\t\t\tINNER JOIN b_adv_contract_2_user CU ON (CU.CONTRACT_ID=C.ID and CU.USER_ID={$USER_ID})\n\t\t\t\t{$left_join}\n\t\t\t\tWHERE\n\t\t\t\t{$strSqlSearch}\n\t\t\t\t{$strSqlOrder}\n\t\t\t\t"; } $res = $DB->Query($strSql, false, $err_mess . __LINE__); $is_filtered = IsFiltered($strSqlSearch); return $res; }