示例#1
0
 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);
示例#3
0
    $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);
}