/** * Bitrix Framework * @package bitrix * @subpackage advertising * @copyright 2001-2013 Bitrix */ /** * Bitrix vars * @global CUser $USER * @global CMain $APPLICATION * @global CDatabase $DB * @global $by * @global $order */ use Bitrix\Main\Loader; require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php"); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/advertising/prolog.php"); Loader::includeModule('advertising'); $isDemo = CAdvContract::IsDemo(); $isManager = CAdvContract::IsManager(); $isAdvertiser = CAdvContract::IsAdvertiser(); $isAdmin = CAdvContract::IsAdmin(); if(!$isAdmin && !$isDemo && !$isManager && !$isAdvertiser) $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); IncludeModuleLangFile(__FILE__); $sTableID = "tbl_adv_banner_list"; $oSort = new CAdminSorting($sTableID, "s_id", "desc"); $lAdmin = new CAdminList($sTableID, $oSort); $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); if($ifarBanner = $ifrsBanner->Fetch()) $ifCONTRACT_ID = $ifarBanner["CONTRACT_ID"]; if(is_array($arrPERM[$ifCONTRACT_ID]) && in_array("ADD", $arrPERM[$ifCONTRACT_ID])) { $DB->StartTransaction(); if(!$lAdmin->IsUpdated($ID)) continue; if(!CAdvBanner::Set($arFields, $ID)) { $lAdmin->AddUpdateError(GetMessage("SAVE_ERROR").$ID.": ".$ob->LAST_ERROR, $ID); $DB->Rollback(); } $DB->Commit(); } else $lAdmin->AddUpdateError(GetMessage("ADV_NO_RIGHTS_EDIT"), $ID); } } // обработка действий групповых и одиночных if(($arID = $lAdmin->GroupAction())) { if($_REQUEST['action_target']=='selected') { $arID = array(); $rsData = CAdvBanner::GetList('', '', $arFilter); while($arRes = $rsData->Fetch()) $arID[] = $arRes['ID']; } foreach($arID as $ID) { if(intval($ID)<=0) continue; $ID = intval($ID); $ifrsBanner = CAdvBanner::GetByID($ID); if($ifarBanner = $ifrsBanner->Fetch()) $ifCONTRACT_ID = $ifarBanner["CONTRACT_ID"]; if(is_array($arrPERM[$ifCONTRACT_ID]) && in_array("ADD", $arrPERM[$ifCONTRACT_ID])) { switch($_REQUEST['action']) { case "delete": @set_time_limit(0); $DB->StartTransaction(); if(!CAdvBanner::Delete($ID)) { $DB->Rollback(); $lAdmin->AddGroupError(GetMessage("DELETE_ERROR"), $ID); } $DB->Commit(); break; case "activate": case "deactivate": $cData = new CAdvBanner; $arFields = array("ACTIVE"=>($_REQUEST['action']=="activate"?"Y":"N")); if(!$cData->Set($arFields, $ID)) $lAdmin->AddGroupError(GetMessage("MAIN_EDIT_ERROR").$cData->LAST_ERROR, $ID); break; case "copy": $cData = new CAdvBanner; if(!$cData->Copy($ID)) $lAdmin->AddGroupError(GetMessage("MAIN_EDIT_ERROR").$cData->LAST_ERROR, $ID); break; } } else $lAdmin->AddUpdateError(GetMessage("ADV_NO_RIGHTS_EDIT"), $ID); } } global $by, $order; $rsBanners = CAdvBanner::GetList($by, $order, $arFilter); $rsData = new CAdminResult($rsBanners, $sTableID); $rsData->NavStart(); $lAdmin->NavText($rsData->GetNavPrint(GetMessage("AD_PAGES"))); $lAdmin->AddHeaders(array( array("id"=>"ID", "content"=>"ID", "sort"=>"s_id", "default"=>true, "align"=>"right"), array("id"=>"LAMP", "content"=>GetMessage("AD_LAMP"), "sort"=>"s_lamp", "default"=>true, "align" => "center"), array("id"=>"NAME", "content"=>GetMessage("AD_NAME"), "sort"=>"s_name", "default"=>true), array("id"=>"TYPE_SID", "content"=>GetMessage("AD_TYPE"), "sort"=>"s_type_sid", "default"=>true), array("id"=>"ACTIVE", "content"=>GetMessage("AD_ACTIVE"), "sort"=>"s_active", "default"=>true), array("id"=>"WEIGHT", "content"=>GetMessage("AD_WEIGHT"), "sort"=>"s_weight", "default"=>true, "align"=>"right"), array("id"=>"GROUP_SID", "content"=>GetMessage("AD_GROUP"), "sort"=>"s_group_sid"), array("id"=>"CONTRACT_ID", "content"=>GetMessage("AD_CONTRACT"), "sort"=>"s_contract_id"), array("id"=>"SITE", "content"=>GetMessage("AD_SITE"), "default"=>true), array("id"=>"STATUS_SID", "content"=>GetMessage("AD_STATUS"), "sort"=>"s_status_sid", "default"=>true), array("id"=>"DATE_CREATE", "content"=>GetMessage("ad_list_created"), "title"=>GetMessage("ad_list_created_title"), "sort"=>"s_date_create"), array("id"=>"DATE_MODIFY", "content"=>GetMessage("ad_list_modified"), "title"=>GetMessage("ad_list_modified_title"), "sort"=>"s_date_modify"), array("id"=>"VISITOR_COUNT", "content"=>GetMessage("AD_VISITOR_COUNT"), "sort"=>"s_visitor_count", "align"=>"right"), array("id"=>"MAX_VISITOR_COUNT", "content"=>GetMessage("AD_VISITOR_COUNT_MAX"), "sort"=>"s_max_visitor_count", "align"=>"right"), array("id"=>"SHOW_COUNT", "content"=>GetMessage("AD_SHOW_COUNT"), "sort"=>"s_show_count", "default"=>true, "align"=>"right"), array("id"=>"MAX_SHOW_COUNT", "content"=>GetMessage("AD_SHOW_COUNT_MAX"), "sort"=>"s_max_show_count", "align"=>"right"), array("id"=>"SHOW_COUNT_LAST_SHOW", "content"=>GetMessage("AD_DATE_LAST_SHOW"), "sort"=>"s_date_last_show"), array("id"=>"CLICK_COUNT", "content"=>GetMessage("AD_CLICK_COUNT"), "sort"=>"s_click_count", "align"=>"right"), array("id"=>"MAX_CLICK_COUNT", "content"=>GetMessage("AD_CLICK_COUNT_MAX"), "sort"=>"s_max_click_count", "align"=>"right"), array("id"=>"CLICK_COUNT_LAST_CLICK", "content"=>GetMessage("AD_DATE_LAST_CLICK"), "sort"=>"s_date_last_click"), array("id"=>"CTR", "content"=>"CTR (%)", "sort"=>"s_ctr", "align"=>"right"), array("id"=>"FIRST_SHOW", "content"=>GetMessage("AD_FIRST_SHOW_DATE"), "sort"=>"s_firstd_c"), array("id"=>"UNIFORM_COEF", "content"=>GetMessage("AD_UNIFORM_COEF_VIEW"), "sort"=>"s_uniform_c", "align"=>"right"), array("id"=>"COMMENTS", "content"=>GetMessage("AD_COMMENTS")), )); $arrUserPerm = array(); $canAdd = false;// хоть один баннер может быть отредатирован, добавлен илу удален $canAddbanner = false;// баннер может быть удален, отредактирован, добавлен $arrContractSite = array(); $type_id = array(); $rsTypies = CAdvType::GetList(); while ($arType = $rsTypies->Fetch()) { $type_id[$arType["SID"]] = htmlspecialcharsbx($arType["NAME"]); } $contract_id = array(); $rsContract = CAdvContract::GetList(); while ($arContract = $rsContract->Fetch()) { $contract_id[$arContract["ID"]] = $arContract["NAME"]; $arrContractSite[$arContract["ID"]] = CAdvContract::GetSiteArray($arContract["ID"]); } $arrStatus = CAdvBanner::GetStatusList(); $arrSites = array(); $rs = CSite::GetList(); while ($ar = $rs->Fetch()) $arrSites[$ar["ID"]] = $ar; while($arRes = $rsData->NavNext(true, "f_")) { $lamp_alt = GetMessage("AD_".mb_strtoupper($f_LAMP)."_ALT"); $lamp = '
'; $arrUserPerm = is_array($arrPERM[$f_CONTRACT_ID]) ? $arrPERM[$f_CONTRACT_ID] : array(); $canAddbanner = in_array("ADD", $arrUserPerm) ? true : false; $row =& $lAdmin->AddRow($f_ID, $arRes, "adv_banner_edit.php?ID=".$f_ID."&CONTRACT_ID=".$f_CONTRACT_ID."&lang=".LANGUAGE_ID, GetMessage("ADV_EDIT_TITLE")); $row->AddViewField("ID", ''.$f_ID.''); $row->AddViewField("LAMP", $lamp); $sites = ""; $arrSITE = CAdvBanner::GetSiteArray($f_ID); if (is_array($arrSITE)) { foreach($arrSITE as $sid) { if (in_array($sid, $arrContractSite[$f_CONTRACT_ID])) { if ($isAdmin) $sites .= htmlspecialcharsbx($arrSites[$sid]["NAME"]).' ['.htmlspecialcharsbx($sid).']