• Модуль: advertising
  • Путь к файлу: ~/bitrix/modules/advertising/classes/general/advertising.php
  • Класс: CAdvContract_all
  • Вызов: CAdvContract_all::Set
static function Set($arFields, $CONTRACT_ID, $CHECK_RIGHTS="Y")
{
	$err_mess = (CAdvContract_all::err_mess())."
Function: Set
Line: "; global $DB, $USER; if (CAdvContract::CheckFields($arFields, $CONTRACT_ID, $CHECK_RIGHTS)) { if ($CHECK_RIGHTS=="Y") { $USER_ID = intval($USER->GetID()); $isAdmin = CAdvContract::IsAdmin(); } else { if (is_object($USER)) $USER_ID = intval($USER->GetID()); else $USER_ID = 0; $isAdmin = true; } $check_activity = "N"; $arFields_i = array(); $arrKeys = array_keys($arFields); if ($isAdmin) { if (in_array("SHOW_COUNT", $arrKeys)) { $check_activity = "Y"; $arFields_i["SHOW_COUNT"] = intval($arFields["SHOW_COUNT"]); } if (in_array("VISITOR_COUNT", $arrKeys)) { $check_activity = "Y"; $arFields_i["VISITOR_COUNT"] = intval($arFields["VISITOR_COUNT"]); } if (in_array("CLICK_COUNT", $arrKeys)) { $check_activity = "Y"; $arFields_i["CLICK_COUNT"] = intval($arFields["CLICK_COUNT"]); } if (in_array("ACTIVE", $arrKeys) && ($arFields["ACTIVE"]=="Y" || $arFields["ACTIVE"]=="N")) { $check_activity = "Y"; $arFields_i["ACTIVE"] = "'".$arFields["ACTIVE"]."'"; } if (in_array("WEIGHT", $arrKeys)) $arFields_i["WEIGHT"] = intval($arFields["WEIGHT"]); if (in_array("ADMIN_COMMENTS", $arrKeys)) $arFields_i["ADMIN_COMMENTS"] = "'".$DB->ForSql($arFields["ADMIN_COMMENTS"],2000)."'"; if (in_array("KEYWORDS", $arrKeys)) $arFields_i["KEYWORDS"] = "'".$DB->ForSql($arFields["KEYWORDS"], 2000)."'";; if (in_array("MAX_SHOW_COUNT", $arrKeys)) { $check_activity = "Y"; if ($arFields["MAX_SHOW_COUNT"] <> '') $arFields_i["MAX_SHOW_COUNT"] = intval($arFields["MAX_SHOW_COUNT"]); else $arFields_i["MAX_SHOW_COUNT"] = "null"; } if (in_array("MAX_VISITOR_COUNT", $arrKeys)) { $check_activity = "Y"; if ($arFields["MAX_VISITOR_COUNT"] <> '') $arFields_i["MAX_VISITOR_COUNT"] = intval($arFields["MAX_VISITOR_COUNT"]); else $arFields_i["MAX_VISITOR_COUNT"] = "null"; } if (in_array("MAX_CLICK_COUNT", $arrKeys)) { $check_activity = "Y"; if ($arFields["MAX_CLICK_COUNT"] <> '') $arFields_i["MAX_CLICK_COUNT"] = intval($arFields["MAX_CLICK_COUNT"]); else $arFields_i["MAX_CLICK_COUNT"] = "null"; } if (in_array("DATE_SHOW_FROM", $arrKeys)) { $check_activity = "Y"; if ($arFields["DATE_SHOW_FROM"] <> '') { $arFields_i["DATE_SHOW_FROM"] = $DB->CharToDateFunction($arFields["DATE_SHOW_FROM"]); } else $arFields_i["DATE_SHOW_FROM"] = "null"; } if (in_array("DATE_SHOW_TO", $arrKeys)) { $check_activity = "Y"; if ($arFields["DATE_SHOW_TO"] <> '') { $time = ""; if(defined("FORMAT_DATE") && mb_strlen($arFields["DATE_SHOW_TO"]) <= mb_strlen(FORMAT_DATE)) { $time = " 23:59:59"; } $arFields_i["DATE_SHOW_TO"] = $DB->CharToDateFunction($arFields["DATE_SHOW_TO"].$time); } else { $arFields_i["DATE_SHOW_TO"] = "null"; } } if (in_array("DEFAULT_STATUS_SID", $arrKeys)) { $arrStatus = CAdvBanner::GetStatusList("N"); $arrV = array_values($arrStatus["reference_id"]); if (in_array($arFields["DEFAULT_STATUS_SID"], $arrV)) { $arFields_i["DEFAULT_STATUS_SID"] = "'".$DB->ForSql($arFields["DEFAULT_STATUS_SID"],255)."'"; } } if (in_array("SORT", $arrKeys)) $arFields_i["SORT"] = intval($arFields["SORT"]); if (in_array("NAME", $arrKeys)) $arFields_i["NAME"] = "'".$DB->ForSql($arFields["NAME"],255)."'"; if (in_array("DESCRIPTION", $arrKeys)) $arFields_i["DESCRIPTION"] = "'".$DB->ForSql($arFields["DESCRIPTION"],2000)."'"; } $arFields_i["EMAIL_COUNT"] = 0; $str_PREV_LAMP = ""; if (intval($CONTRACT_ID)>0) { $rsContract = CAdvContract::GetByID($CONTRACT_ID); $arContract = $rsContract->Fetch(); $str_PREV_LAMP = $arContract["LAMP"]; if (in_array("DATE_MODIFY", $arrKeys) && CheckDateTime($arFields["DATE_MODIFY"])) $arFields_i["DATE_MODIFY"] = $DB->CharToDateFunction($arFields["DATE_MODIFY"]); else $arFields_i["DATE_MODIFY"] = $DB->GetNowFunction(); if (in_array("MODIFIED_BY", $arrKeys)) $arFields_i["MODIFIED_BY"] = intval($arFields["MODIFIED_BY"]); else $arFields_i["MODIFIED_BY"] = $USER_ID; $DB->Update("b_adv_contract",$arFields_i,"WHERE ID='".intval($CONTRACT_ID)."'",$err_mess.__LINE__); } elseif ($isAdmin) { $check_activity = "Y"; if (in_array("DATE_CREATE", $arrKeys) && CheckDateTime($arFields["DATE_CREATE"])) $arFields_i["DATE_CREATE"] = $DB->CharToDateFunction($arFields["DATE_CREATE"]); else $arFields_i["DATE_CREATE"] = $DB->GetNowFunction(); if (in_array("CREATED_BY", $arrKeys)) $arFields_i["CREATED_BY"] = intval($arFields["CREATED_BY"]); else $arFields_i["CREATED_BY"] = $USER_ID; if (in_array("DATE_MODIFY", $arrKeys) && CheckDateTime($arFields["DATE_MODIFY"])) $arFields_i["DATE_MODIFY"] = $DB->CharToDateFunction($arFields["DATE_MODIFY"]); else $arFields_i["DATE_MODIFY"] = $DB->GetNowFunction(); if (in_array("MODIFIED_BY", $arrKeys)) $arFields_i["MODIFIED_BY"] = intval($arFields["MODIFIED_BY"]); else $arFields_i["MODIFIED_BY"] = $USER_ID; $CONTRACT_ID = $DB->Insert("b_adv_contract",$arFields_i, $err_mess.__LINE__); } $CONTRACT_ID = intval($CONTRACT_ID); if ($CONTRACT_ID>0) { if ($isAdmin) { if (in_array("arrSITE", $arrKeys)) { CAdvContract::DeleteSiteLink($CONTRACT_ID); if (is_array($arFields["arrSITE"])) { $arrSite = array_unique($arFields["arrSITE"]); foreach($arrSite as $sid) { if (trim($sid) <> '') { $strSql = "INSERT INTO b_adv_contract_2_site(CONTRACT_ID, SITE_ID) VALUES ($CONTRACT_ID, '".$DB->ForSql($sid, 2)."')"; $DB->Query($strSql, false, $err_mess.__LINE__); } } } } if (in_array("arrSHOW_PAGE", $arrKeys)) { CAdvContract::DeletePageLink($CONTRACT_ID, " and SHOW_ON_PAGE='Y'"); if (is_array($arFields["arrSHOW_PAGE"])) { $arrPage = array_unique($arFields["arrSHOW_PAGE"]); foreach($arrPage as $page) { $page = trim($page); if ($page <> '') { $arFields_i = array( "CONTRACT_ID" => $CONTRACT_ID, "PAGE" => "'".$DB->ForSql($page, 255)."'", "SHOW_ON_PAGE" => "'Y'" ); $DB->Insert("b_adv_contract_2_page",$arFields_i, $err_mess.__LINE__); } } } } if (in_array("arrNOT_SHOW_PAGE", $arrKeys)) { CAdvContract::DeletePageLink($CONTRACT_ID, " and SHOW_ON_PAGE='N'"); if (is_array($arFields["arrNOT_SHOW_PAGE"])) { $arrPage = array_unique($arFields["arrNOT_SHOW_PAGE"]); foreach($arrPage as $page) { $page = trim($page); if ($page <> '') { $arFields_i = array( "CONTRACT_ID" => $CONTRACT_ID, "PAGE" => "'".$DB->ForSql($page, 255)."'", "SHOW_ON_PAGE" => "'N'" ); $DB->Insert("b_adv_contract_2_page",$arFields_i, $err_mess.__LINE__); } } } } if (in_array("arrTYPE", $arrKeys)) { CAdvContract::DeleteTypeLink($CONTRACT_ID); if (is_array($arFields["arrTYPE"])) { $arrType = array_unique($arFields["arrTYPE"]); foreach($arrType as $type) { if (trim($type) <> '') { $strSql = "INSERT INTO b_adv_contract_2_type(CONTRACT_ID, TYPE_SID) VALUES ($CONTRACT_ID, '".$DB->ForSql($type, 255)."')"; $DB->Query($strSql, false, $err_mess.__LINE__); } } } } if (in_array("arrWEEKDAY", $arrKeys)) { CAdvContract::DeleteWeekdayLink($CONTRACT_ID); if (is_array($arFields["arrWEEKDAY"])) { $arrWeekday = array_keys($arFields["arrWEEKDAY"]); $arrWeekday = array_unique($arrWeekday); if (is_array($arrWeekday) && count($arrWeekday)>0) { foreach ($arrWeekday as $weekday) { if (is_array($arFields["arrWEEKDAY"][$weekday]) && count($arFields["arrWEEKDAY"][$weekday])>0) { $arrHour = $arFields["arrWEEKDAY"][$weekday]; array_walk( $arrHour, function (&$item) { $item = (int)$item; } ); $arrHour = array_unique($arrHour); foreach($arrHour as $hour) { if ($hour>=0 && $hour<=23) { $strSql = "INSERT INTO b_adv_contract_2_weekday (CONTRACT_ID, C_WEEKDAY, C_HOUR) VALUES (".$CONTRACT_ID.", '".$DB->ForSql($weekday, 10)."', ".$hour.")"; $DB->Query($strSql, false, $err_mess.__LINE__); } } } } } } } } if (in_array("arrUSER_VIEW", $arrKeys)) { CAdvContract::DeleteUserLink($CONTRACT_ID, " and PERMISSION = 'VIEW'"); if (is_array($arFields["arrUSER_VIEW"])) { $arrUser = array_unique($arFields["arrUSER_VIEW"]); foreach($arrUser as $user_id) { if (intval($user_id)>0) { $arFields_i = array( "CONTRACT_ID" => $CONTRACT_ID, "USER_ID" => intval($user_id), "PERMISSION" => "'VIEW'" ); $DB->Insert("b_adv_contract_2_user",$arFields_i, $err_mess.__LINE__); } } } } if (in_array("arrUSER_ADD", $arrKeys)) { CAdvContract::DeleteUserLink($CONTRACT_ID, " and PERMISSION = 'ADD'"); if (is_array($arFields["arrUSER_ADD"])) { $arrUser = array_unique($arFields["arrUSER_ADD"]); foreach($arrUser as $user_id) { if (intval($user_id)>0) { $arFields_i = array( "CONTRACT_ID" => $CONTRACT_ID, "USER_ID" => intval($user_id), "PERMISSION" => "'ADD'" ); $DB->Insert("b_adv_contract_2_user",$arFields_i, $err_mess.__LINE__); } } } } if ($isAdmin) { if (in_array("arrUSER_EDIT", $arrKeys)) { CAdvContract::DeleteUserLink($CONTRACT_ID, " and PERMISSION = 'EDIT'"); if (is_array($arFields["arrUSER_EDIT"])) { $arrUser = array_unique($arFields["arrUSER_EDIT"]); foreach($arrUser as $user_id) { if (intval($user_id)>0) { $arFields_i = array( "CONTRACT_ID" => $CONTRACT_ID, "USER_ID" => intval($user_id), "PERMISSION" => "'EDIT'" ); $DB->Insert("b_adv_contract_2_user",$arFields_i, $err_mess.__LINE__); } } } } } if ($check_activity=="Y") { CTimeZone::Disable(); $rsContract = CAdvContract::GetByID($CONTRACT_ID); CTimeZone::Enable(); $arContract = $rsContract->Fetch(); $str_CURRENT_LAMP = $arContract["LAMP"]; if ($str_PREV_LAMP!=$str_CURRENT_LAMP) { $mess = ($str_CURRENT_LAMP=="red") ? "< ".GetMessage("AD_CONTRACT_NOT_ACTIVE")." >" : "< ".GetMessage("AD_CONTRACT_ACTIVE")." >"; CAdvContract::SendEMail($arContract, $mess); } if ($str_CURRENT_LAMP=="red") { $arFields = array("EMAIL_COUNT" => "EMAIL_COUNT + 1"); $DB->Update("b_adv_contract",$arFields,"WHERE ID='".$CONTRACT_ID."'",$err_mess.__LINE__); } } } } return $CONTRACT_ID; }