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; }
$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"); $lAdmin->InitFilter($FilterArr); 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 != '' && $find_type_f == "id" ? $find : $find_id, "ID_EXACT_MATCH" => $find_id_exact_match, "LAMP" => $find_lamp, "SITE" => $find_site, "VISITOR_COUNT_1" => $find_visitor_count_1, "VISITOR_COUNT_2" => $find_visitor_count_2, "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 != '' && $find_type_f == "name" ? $find : $find_name, "NAME_EXACT_MATCH" => $find_name_exact_match, "CODE" => $find != '' && $find_type_f == "code" ? $find : $find_code, "CODE_EXACT_MATCH" => $find_code_exact_match, "COMMENTS" => $find_comments, "COMMENTS_EXACT_MATCH" => $find_comments_exact_match); if ($lAdmin->EditAction()) { foreach ($FIELDS as $ID => $arFields) { $ID = IntVal($ID); $ifrsBanner = CAdvBanner::GetByID($ID);
$rsBanner = CAdvBanner::GetByID($ID); if ($arBanner = $rsBanner->Fetch()) { $CONTRACT_ID = $arBanner["CONTRACT_ID"]; } } if ($CONTRACT_ID <= 0) { $CONTRACT_ID = 1; } $rsContract = CAdvContract::GetByID($CONTRACT_ID, "N"); if (!$rsContract || !($arContract = $rsContract->Fetch())) { require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_admin_after.php"; CAdminMessage::ShowMessage(GetMessage("AD_ERROR_INCORRECT_CONTRACT_ID")); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php"; die; } else { $arrPERM = CAdvContract::GetUserPermissions($CONTRACT_ID); $arrPERM = is_array($arrPERM[$CONTRACT_ID]) ? $arrPERM[$CONTRACT_ID] : array(); if (!$isDemo) { if (count($arrPERM) <= 0) { $APPLICATION->AuthForm(GetMessage("AD_ERROR_NOT_ENOUGH_PERMISSIONS_CONTRACT")); } if (!in_array("ADD", $arrPERM)) { $isEditMode = false; } } if ($action == "view") { $isEditMode = false; } $arrCONTRACT_TYPE = CAdvContract::GetTypeArray($CONTRACT_ID); $isOwner = CAdvContract::IsOwner($CONTRACT_ID); }