CAdvBanner::Set: Bitrix method

      
<?php 
//  CAdvBanner :: Set()
//  /dist/bitrix/modules/advertising/classes/general/advertising.php:2083

    
public static function Set($arFields$BANNER_ID$CHECK_RIGHTS="Y")
    {
        
$err_mess = (CAdvBanner_all::err_mess())."<br>Function: Set<br>Line: ";
        global 
$DB$USER$APPLICATION$strError;
        
$BANNER_ID intval($BANNER_ID);
        if (
CAdvBanner::CheckFields($arFields$BANNER_ID$CHECK_RIGHTS))
        {
            if (
$CHECK_RIGHTS=="Y")
            {
                
$USER_ID intval($USER->GetID());
                
$isAdmin CAdvContract::IsAdmin();
                
$isManager CAdvContract::IsManager();
                
$CHECK_CONTRACT_RIGHTS "Y";
                if (
$isManager)
                    
$CHECK_CONTRACT_RIGHTS "N";
            }
            else
            {
                
$USER_ID 0;
                
$isAdmin $isManager true;
                
$CHECK_CONTRACT_RIGHTS "N";
            }

            if (
$BANNER_ID <= 0)
                
$events GetModuleEvents("advertising""OnBeforeBannerAdd"true);
            else
                
$events GetModuleEvents("advertising""OnBeforeBannerUpdate"true);

            foreach (
$events as $arEvent)
            {
                if (
ExecuteModuleEventEx($arEvent, array(&$arFields)) === false)
                {
                    if (
$err $APPLICATION->GetException())
                        
$strError .= $err->GetString()."<br />";
                    else
                        
$strError .= GetMessage("AD_ERROR_ON_HANDLER", array ("#HANDLER#" => $arEvent['MESSAGE_ID']))."<br />";

                    return 
false;
                }
            }

            
$arFields_i = array();
            
$arrKeys array_keys($arFields);

            
$arBanner = array();
            if (
$BANNER_ID>0)
            {
                
$rsBanner CAdvBanner::GetByID($BANNER_ID$CHECK_RIGHTS);
                
$arBanner $rsBanner->Fetch();
                if (!
in_array("CONTRACT_ID"$arrKeys))
                    
$CONTRACT_ID intval($arBanner["CONTRACT_ID"]);
                else
                    
$CONTRACT_ID intval($arFields["CONTRACT_ID"]);
            }
            else
            {
                
$CONTRACT_ID intval($arFields["CONTRACT_ID"]);
            }

            
$modify_status "N";

            if (
$CONTRACT_ID>0)
            {
                if (
$BANNER_ID<=&& (!$isAdmin || !$isManager || in_array("STATUS_SID"$arrKeys)))
                    
$modify_status "Y";

                
$rsContract CAdvContract::GetByID($CONTRACT_ID$CHECK_CONTRACT_RIGHTS);
                
$arContract $rsContract->Fetch();

                if ((
$isAdmin || $isManager) && in_array("RESET_VISITOR_COUNT"$arrKeys) && $arFields["RESET_VISITOR_COUNT"])
                {
                    
$arFields_i["VISITOR_COUNT"] = 0;
                    
// если баннер уже показывался то
                    
if (intval($arBanner["VISITOR_COUNT"])>0)
                    {
                        
// уменьшим счетчик у контракта
                        
$value intval($arContract["VISITOR_COUNT"]) - intval($arBanner["VISITOR_COUNT"]);
                        
$value = ($value<0) ? $value;
                        
CAdvContract::Set(array("VISITOR_COUNT" => $value), $arContract["ID"], $CHECK_CONTRACT_RIGHTS);
                    }
                }

                if ((
$isAdmin || $isManager) && in_array("RESET_SHOW_COUNT"$arrKeys) && $arFields["RESET_SHOW_COUNT"])
                {
                    
$arFields_i["SHOW_COUNT"] = 0;
                    
// если баннер уже показывался то
                    
if (intval($arBanner["SHOW_COUNT"])>0)
                    {
                        
// уменьшим счетчик у контракта
                        
$value intval($arContract["SHOW_COUNT"]) - intval($arBanner["SHOW_COUNT"]);
                        
$value = ($value<0) ? $value;
                        
CAdvContract::Set(array("SHOW_COUNT" => $value), $arContract["ID"], $CHECK_CONTRACT_RIGHTS);
                    }
                }

                if ((
$isAdmin || $isManager) && in_array("FIX_CLICK"$arrKeys) && ($arFields["FIX_CLICK"]=="Y" || $arFields["FIX_CLICK"]=="N"))
                    
$arFields_i["FIX_CLICK"] = "'".$arFields["FIX_CLICK"]."'";

                if ((
$isAdmin || $isManager) && in_array("FIX_SHOW"$arrKeys) && ($arFields["FIX_SHOW"]=="Y" || $arFields["FIX_SHOW"]=="N"))
                    
$arFields_i["FIX_SHOW"] = "'".$arFields["FIX_SHOW"]."'";

                if ((
$isAdmin || $isManager) && in_array("FLYUNIFORM"$arrKeys) && ($arFields["FLYUNIFORM"]=="Y" || $arFields["FLYUNIFORM"]=="N"))
                    
$arFields_i["FLYUNIFORM"] = "'".$arFields["FLYUNIFORM"]."'";

                if ((
$isAdmin || $isManager) && in_array("RESET_CLICK_COUNT"$arrKeys) && $arFields["RESET_CLICK_COUNT"])
                {
                    
$arFields_i["CLICK_COUNT"] = 0;
                    
// если на баннер уже кликали то
                    
if (intval($arBanner["CLICK_COUNT"])>0)
                    {
                        
// уменьшим счетчик у контракта
                        
$value intval($arContract["CLICK_COUNT"]) - intval($arBanner["CLICK_COUNT"]);
                        
$value = ($value<0) ? $value;
                        
CAdvContract::Set(array("CLICK_COUNT" => $value), $arContract["ID"], $CHECK_CONTRACT_RIGHTS);
                    }
                }

                if ((
$isAdmin || $isManager) && in_array("KEYWORDS"$arrKeys))
                    
$arFields_i["KEYWORDS"] = "'".$DB->ForSql($arFields["KEYWORDS"], 2000)."'";;

                if (
in_array("CONTRACT_ID"$arrKeys) && intval($arFields["CONTRACT_ID"])>0)
                    
$arFields_i["CONTRACT_ID"] = intval($arFields["CONTRACT_ID"]);

                if (
in_array("TYPE_SID"$arrKeys) && strlen($arFields["TYPE_SID"])>0)
                {
                    
$arFields_i["TYPE_SID"] = "'".$DB->ForSql($arFields["TYPE_SID"],255)."'";
                    if (
"'".$DB->ForSql($arBanner["TYPE_SID"],255)."'"!=$arFields_i["TYPE_SID"])
                        
$modify_status "Y";
                }

                if (
in_array("NAME"$arrKeys))
                    
$arFields_i["NAME"] = "'".$DB->ForSql($arFields["NAME"],255)."'";

                if (
in_array("GROUP_SID"$arrKeys))
                    
$arFields_i["GROUP_SID"] = "'".$DB->ForSql($arFields["GROUP_SID"],255)."'";

                if (
in_array("ACTIVE"$arrKeys) && ($arFields["ACTIVE"]=="Y" || $arFields["ACTIVE"]=="N"))
                    
$arFields_i["ACTIVE"] = "'".$arFields["ACTIVE"]."'";

                if (
in_array("WEIGHT"$arrKeys))
                    
$arFields_i["WEIGHT"] = intval($arFields["WEIGHT"]);

                if (
in_array("MAX_VISITOR_COUNT"$arrKeys))
                {
                    if (
strlen($arFields["MAX_VISITOR_COUNT"])>0)
                        
$arFields_i["MAX_VISITOR_COUNT"] = intval($arFields["MAX_VISITOR_COUNT"]);
                    else
                        
$arFields_i["MAX_VISITOR_COUNT"] = "null";
                }

                if (
in_array("SHOWS_FOR_VISITOR"$arrKeys))
                {
                    if (
strlen($arFields["SHOWS_FOR_VISITOR"])>0)
                        
$arFields_i["SHOWS_FOR_VISITOR"] = intval($arFields["SHOWS_FOR_VISITOR"]);
                    else
                        
$arFields_i["SHOWS_FOR_VISITOR"] = "null";
                }

                if (
in_array("MAX_SHOW_COUNT"$arrKeys))
                {
                    if (
strlen($arFields["MAX_SHOW_COUNT"])>0)
                        
$arFields_i["MAX_SHOW_COUNT"] = intval($arFields["MAX_SHOW_COUNT"]);
                    else
                        
$arFields_i["MAX_SHOW_COUNT"] = "null";
                }

                if (
in_array("MAX_CLICK_COUNT"$arrKeys))
                {
                    if (
strlen($arFields["MAX_CLICK_COUNT"])>0)
                        
$arFields_i["MAX_CLICK_COUNT"] = intval($arFields["MAX_CLICK_COUNT"]);
                    else
                        
$arFields_i["MAX_CLICK_COUNT"] = "null";
                }

                if (
in_array("DATE_SHOW_FROM"$arrKeys))
                {
                    if (
strlen($arFields["DATE_SHOW_FROM"])>0)
                        
$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))
                {
                    if (
strlen($arFields["DATE_SHOW_TO"])>0)
                    {
                        
$time "";
                        if(
defined("FORMAT_DATE") && strlen($arFields["DATE_SHOW_TO"]) <= 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("DATE_SHOW_FIRST"$arrKeys))
                    
$arFields_i["DATE_SHOW_FIRST"] = "null";

                if (
in_array("arrIMAGE_ID"$arrKeys) && is_array($arFields["arrIMAGE_ID"]))
                {
                    
$arIMAGE $arFields["arrIMAGE_ID"];
                    
$arIMAGE["MODULE_ID"] = "advertising";
                    if (
$BANNER_ID>0)
                    {
                        
$z $DB->Query("SELECT IMAGE_ID FROM b_adv_banner WHERE ID='$BANNER_ID'"false$err_mess.__LINE__);
                        
$zr $z->Fetch();
                        
$arIMAGE["old_file"] = $zr["IMAGE_ID"];
                    }
                    if (
strlen($arIMAGE["name"])>|| strlen($arIMAGE["del"])>0)
                    {
                        
$subdir COption::GetOptionString("advertising""UPLOAD_SUBDIR");
                        
$fid CFile::SaveFile($arIMAGE$subdir);
                        if (
intval($fid)>0)
                        {
                            
$arFields_i["IMAGE_ID"] = intval($fid);
                        }
                        else
                        {
                            
$arFields_i["IMAGE_ID"] = "null";
                        }
                        if (
intval($arBanner["IMAGE_ID"])!=intval($arFields_i["IMAGE_ID"]))
                        {
                            
$modify_status "Y";
                        }
                    }
                }

                if (
in_array("TEMPLATE_FILES"$arrKeys) && is_array($arFields["TEMPLATE_FILES"]))
                {
                    if (
$BANNER_ID>0)
                    {
                        
$z $DB->Query("SELECT TEMPLATE_FILES FROM b_adv_banner WHERE ID='$BANNER_ID'"false$err_mess.__LINE__);
                        
$zr $z->Fetch();
                        if (
CheckSerializedData($zr['TEMPLATE_FILES']))
                            
$zr unserialize($zr['TEMPLATE_FILES']);
                        else
                            
$zr = array();
                    }
                    
$subdir COption::GetOptionString("advertising""UPLOAD_SUBDIR");
                    
$arTemplateFiles = array();
                    
$cnt 0;
                    foreach (
$arFields["TEMPLATE_FILES"] as $tfk => $tfv)
                    {
                        if (
is_array($tfv))
                        {
                            foreach(
$tfv as $k => $arFile)
                            {
                                
$arFile["MODULE_ID"] = "advertising";
                                if(isset(
$zr[$arFile['lastKey']][$k]))
                                    
$arFile["old_file"] = $zr[$arFile['lastKey']][$k];

                                if (
strlen($arFile["name"])>|| strlen($arFile["description"])>|| isset($arFile["del"]) && strlen($arFile["del"])>0)
                                {
                                    
$fid CFile::SaveFile($arFile$subdir);

                                    if (
$fid === false && strlen($arFile["description"]) > && strlen($arFile["old_file"]) > 0)
                                    {
                                        
$arTemplateFiles[$cnt][$k] = intval($arFile["old_file"]);
                                        continue;
                                    }

                                    if (
intval($fid)>0)
                                    {
                                        
$arTemplateFiles[$cnt][$k] = intval($fid);
                                    }
                                    else
                                    {
                                        
$arTemplateFiles[$cnt][$k] = "null";
                                    }
                                    if (
intval($zr[$arFile['lastKey']][$k]) != intval($arTemplateFiles[$cnt][$k]))
                                    {
                                        
$modify_status "Y";
                                    }
                                }
                                else
                                {
                                    
$arTemplateFiles[$cnt][$k] = $zr[$arFile['lastKey']][$k];
                                }
                            }
                        }
                        
$cnt++;
                    }
                    
$arFields_i["TEMPLATE_FILES"] = "'".$DB->ForSql(serialize($arTemplateFiles),2000)."'";
                }

                if (
in_array("IMAGE_ALT"$arrKeys))
                {
                    
$arFields_i["IMAGE_ALT"] = "'".$DB->ForSql($arFields["IMAGE_ALT"],255)."'";
                    if (
"'".$DB->ForSql($arBanner["IMAGE_ALT"],255)."'"!=$arFields_i["IMAGE_ALT"])
                    {
                        
$modify_status "Y";
                    }
                }

                if (
in_array("URL"$arrKeys))
                {
                    
$arFields_i["URL"] = "'".$DB->ForSql($arFields["URL"])."'";
                    if (
"'".$DB->ForSql($arBanner["URL"],2000)."'" != $arFields_i["URL"])
                    {
                        
$modify_status "Y";
                    }
                }

                if (
in_array("URL_TARGET"$arrKeys))
                {
                    
$arFields_i["URL_TARGET"] = "'".$DB->ForSql($arFields["URL_TARGET"], 255)."'";
                    if (
"'".$DB->ForSql($arBanner["URL_TARGET"], 255)."'" != $arFields_i["URL_TARGET"])
                    {
                        
$modify_status "Y";
                    }
                }

                if (
in_array("NO_URL_IN_FLASH"$arrKeys) && ($arFields["NO_URL_IN_FLASH"]=="Y" || $arFields["NO_URL_IN_FLASH"]=="N"))
                {
                    
$arFields_i["NO_URL_IN_FLASH"] = "'".$arFields["NO_URL_IN_FLASH"]."'";
                    if (
$arBanner["NO_URL_IN_FLASH"]!=$arFields_i["NO_URL_IN_FLASH"])
                    {
                        
$modify_status "Y";
                    }
                }

                if (
in_array("CODE"$arrKeys))
                {
                    
$arFields_i["CODE"] = $arFields["CODE"];
                    if (
$arBanner["CODE"] != $arFields_i["CODE"])
                    {
                        
$modify_status "Y";
                    }
                }

                if (
in_array("FLASH_JS"$arrKeys) && ($arFields["FLASH_JS"]=="Y" || $arFields["FLASH_JS"]=="N"))
                {
                    
$arFields_i["FLASH_JS"] = "'".$arFields["FLASH_JS"]."'";
                    if (
"'" $arBanner["FLASH_JS"] . "'" != $arFields_i["FLASH_JS"])
                    {
                        
$modify_status "Y";
                    }
                }

                if (
in_array("FLASH_VER"$arrKeys))
                {
                    
$arFields_i["FLASH_VER"] = "'".$DB->ForSQL($arFields["FLASH_VER"], 20)."'";
                    if (
"'".$DB->ForSQL($arBanner["FLASH_VER"], 20)."'" != $arFields_i["FLASH_VER"])
                    {
                        
$modify_status "Y";
                    }
                }

                if (
in_array("arrFlashIMAGE_ID"$arrKeys) && is_array($arFields["arrFlashIMAGE_ID"]))
                {
                    
$arrFlashIMAGE $arFields["arrFlashIMAGE_ID"];
                    
$arrFlashIMAGE["MODULE_ID"] = "advertising";
                    if (
$BANNER_ID>0)
                    {
                        
$z $DB->Query("SELECT FLASH_IMAGE FROM b_adv_banner WHERE ID='$BANNER_ID'"false$err_mess.__LINE__);
                        if(
$zr $z->Fetch())
                        {
                            
$arrFlashIMAGE["old_file"] = $zr["FLASH_IMAGE"];
                        }
                    }
                    if (
strlen($arrFlashIMAGE["name"])>|| strlen($arrFlashIMAGE["del"])>0)
                    {
                        
$subdir COption::GetOptionString("advertising""UPLOAD_SUBDIR");
                        
$fid CFile::SaveFile($arrFlashIMAGE$subdir);
                        if (
intval($fid)>0)    $arFields_i["FLASH_IMAGE"] = intval($fid);
                        else 
$arFields_i["FLASH_IMAGE"] = "null";
                        if (
intval($arBanner["FLASH_IMAGE"])!=intval($arFields_i["FLASH_IMAGE"]))
                        {
                            
$modify_status "Y";
                        }
                    }
                }

                if (
in_array("AD_TYPE"$arrKeys))
                {
                    
$arFields_i["AD_TYPE"] = "'".$DB->ForSql($arFields["AD_TYPE"],20)."'";
                    if (
"'".$DB->ForSql($arBanner["AD_TYPE"], 20)."'"!=$arFields_i["AD_TYPE"])
                    {
                        
$modify_status "Y";
                    }
                }

                if (
in_array("TEMPLATE"$arrKeys))
                {
                    
$arFields_i["TEMPLATE"] = CAdvBanner::addBindField($arFields["TEMPLATE"], $arBanner["TEMPLATE"], $modify_status);
                }

                if (
in_array("FLASH_TRANSPARENT"$arrKeys))
                {
                    
$arFields_i["FLASH_TRANSPARENT"] = "'".$DB->ForSql($arFields["FLASH_TRANSPARENT"],11)."'";
                    if (
"'".$DB->ForSql($arBanner["FLASH_TRANSPARENT"],11)."'"!=$arFields_i["FLASH_TRANSPARENT"])
                    {
                        
$modify_status "Y";
                    }
                }

                if (
in_array("CODE_TYPE"$arrKeys))
                {
                    
$arFields_i["CODE_TYPE"] = ($arFields["CODE_TYPE"]=="text") ? "'text'" "'html'";
                    
$value = ($arBanner["CODE_TYPE"]=="text") ? "'text'" "'html'";
                    if (
$value!=$arFields_i["CODE_TYPE"])
                    {
                        
$modify_status "Y";
                    }
                }

                if (
in_array("STAT_EVENT_1"$arrKeys))
                    
$arFields_i["STAT_EVENT_1"] = "'".$DB->ForSql($arFields["STAT_EVENT_1"],255)."'";

                if (
in_array("STAT_EVENT_2"$arrKeys))
                    
$arFields_i["STAT_EVENT_2"] = "'".$DB->ForSql($arFields["STAT_EVENT_2"],255)."'";

                if (
in_array("STAT_EVENT_3"$arrKeys))
                    
$arFields_i["STAT_EVENT_3"] = "'".$DB->ForSql($arFields["STAT_EVENT_3"],255)."'";

                if (
in_array("FOR_NEW_GUEST"$arrKeys))
                {
                    if (
$arFields["FOR_NEW_GUEST"]=="Y" || $arFields["FOR_NEW_GUEST"]=="N")
                    {
                        
$arFields_i["FOR_NEW_GUEST"] = "'".$arFields["FOR_NEW_GUEST"]."'";
                    }
                    elseif (
$arFields["FOR_NEW_GUEST"]=="NOT_REF" || $arFields["FOR_NEW_GUEST"]=="ALL" || strlen($arFields["FOR_NEW_GUEST"])<=0)
                    {
                        
$arFields_i["FOR_NEW_GUEST"] = "null";
                    }
                }

                if (
in_array("COMMENTS"$arrKeys))
                    
$arFields_i["COMMENTS"] = "'".$DB->ForSql($arFields["COMMENTS"],2000)."'";

                if ((
$isAdmin || $isManager) && in_array("STATUS_COMMENTS"$arrKeys))
                {
                    
$arFields_i["STATUS_COMMENTS"] = "'".$DB->ForSql($arFields["STATUS_COMMENTS"],2000)."'";
                }

                
$email_notify "N";

                if (
$modify_status=="Y" || (in_array("STATUS_SID"$arrKeys) && ($isAdmin || $isManager)))
                {
                    
$new_status = ($isAdmin || $isManager) ? $arFields["STATUS_SID"] : $arContract["DEFAULT_STATUS_SID"];
                    
$arFields_i["STATUS_SID"] = "'".$DB->ForSql($new_status,255)."'";

                    
// если статус изменился то
                    
if ("'".$DB->ForSql($arBanner["STATUS_SID"],255)."'"!=$arFields_i["STATUS_SID"])
                    {
                        
$email_notify "Y";
                    }
                }

                if (
in_array("arrSITE"$arrKeys))
                {
                    
$arFields_i["FIRST_SITE_ID"] = "''";
                    if (
is_array($arFields["arrSITE"]))
                    {
                        
$arrSITE array_unique($arFields["arrSITE"]);
                        
reset($arrSITE);
                        list(, 
$site_id) = each($arrSITE);
                        
$arFields_i["FIRST_SITE_ID"] = "'".$DB->ForSql($site_id,2)."'";
                    }
                }

                if (
in_array("SHOW_USER_GROUP"$arrKeys))
                {
                    if(
$arFields["SHOW_USER_GROUP"] == "Y" && (in_array("arrUSERGROUP"$arrKeys) && count($arFields["arrUSERGROUP"])>0))
                        
$SHOW_USER_GROUP "Y";
                    else
                        
$SHOW_USER_GROUP "N";
                    
$arFields_i["SHOW_USER_GROUP"] = "'".$DB->ForSql($SHOW_USER_GROUP,1)."'";
                }

                if (
in_array("STAT_TYPE"$arrKeys))
                {
                    if(
$arFields["STAT_TYPE"] === "CITY")
                        
$arFields_i["STAT_TYPE"] = "'CITY'";
                    elseif(
$arFields["STAT_TYPE"] === "REGION")
                        
$arFields_i["STAT_TYPE"] = "'REGION'";
                    else
                        
$arFields_i["STAT_TYPE"] = "'COUNTRY'";
                }

                if (
intval($BANNER_ID)>0)
                {
                    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;

                    
CAdvBanner::Update($arFields_i$BANNER_ID);
                }
                else
                {
                    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;

                    
$BANNER_ID CAdvBanner::Add($arFields_i);
                }

                if (
defined('BX_COMP_MANAGED_CACHE'))
                {
                    
$taggedCache Application::getInstance()->getTaggedCache();
                    
$taggedCache->clearByTag('advertising_banner_type_'.$arFields['TYPE_SID']);
                }

                
$BANNER_ID intval($BANNER_ID);

                if (
$BANNER_ID>0)
                {
                    if (
in_array("arrSITE"$arrKeys))
                    {
                        
CAdvBanner::DeleteSiteLink($BANNER_ID);
                        if (
is_array($arFields["arrSITE"]))
                        {
                            
$arrSITE array_unique($arFields["arrSITE"]);
                            
reset($arrSITE);
                            foreach(
$arrSITE as $sid)
                            {
                                if (
strlen(trim($sid))>0)
                                {
                                    
$strSql "INSERT INTO b_adv_banner_2_site (BANNER_ID, SITE_ID) VALUES ($BANNER_ID, '".$DB->ForSql($sid2)."')";
                                    
$DB->Query($strSqlfalse$err_mess.__LINE__);
                                }
                            }
                        }
                    }

                    if (
in_array("arrSHOW_PAGE"$arrKeys))
                    {
                        
CAdvBanner::DeletePageLink($BANNER_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 (
strlen($page)>0)
                                {
                                    
$arFields_i = array(
                                        
"BANNER_ID"        => $BANNER_ID,
                                        
"PAGE"            => "'".$DB->ForSql($page255)."'",
                                        
"SHOW_ON_PAGE"    => "'Y'"
                                        
);
                                    
$DB->Insert("b_adv_banner_2_page",$arFields_i$err_mess.__LINE__);
                                }
                            }
                        }
                    }

                    if (
in_array("arrNOT_SHOW_PAGE"$arrKeys))
                    {
                        
CAdvBanner::DeletePageLink($BANNER_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 (
strlen($page)>0)
                                {
                                    
$arFields_i = array(
                                        
"BANNER_ID"        => $BANNER_ID,
                                        
"PAGE"            => "'".$DB->ForSql($page255)."'",
                                        
"SHOW_ON_PAGE"    => "'N'"
                                        
);
                                    
$DB->Insert("b_adv_banner_2_page",$arFields_i$err_mess.__LINE__);
                                }
                            }
                        }
                    }

                    if (
in_array("arrCOUNTRY"$arrKeys))
                    {
                        
$iCounter 0;
                        
CAdvBanner::DeleteCountryLink($BANNER_ID);
                        if (
is_array($arFields["arrCOUNTRY"]))
                        {
                            
$arrCOUNTRY = array();
                            foreach(
$arFields["arrCOUNTRY"] as $COUNTRY)
                            {
                                if(
is_array($COUNTRY))
                                {
                                    
$COUNTRY["COUNTRY_ID"] = trim($COUNTRY["COUNTRY_ID"]);
                                    if(
strlen($COUNTRY["COUNTRY_ID"]) <= 0)
                                        continue;
                                    
$key $COUNTRY["COUNTRY_ID"]."|".$COUNTRY["REGION"]."|".$COUNTRY["CITY_ID"];
                                    
$strInsert "'".$DB->ForSQL($COUNTRY["COUNTRY_ID"], 2)."', ".(strlen($COUNTRY["REGION"]) <= 0"null""'".$DB->ForSQL($COUNTRY["REGION"], 200)."'").", ".(intval($COUNTRY["CITY_ID"]) <= 0"null"intval($COUNTRY["CITY_ID"]))."";
                                }
                                else
                                {
                                    
$COUNTRY trim($COUNTRY);
                                    if(
strlen($COUNTRY) <= 0)
                                        continue;
                                    
$key $COUNTRY."||";
                                    
$strInsert "'".$DB->ForSQL($COUNTRY2)."', null, null";
                                }
                                
$arrCOUNTRY[$key] = $strInsert;
                            }
                            foreach(
$arrCOUNTRY as $strInsert)
                            {
                                
$strSql "INSERT INTO b_adv_banner_2_country (BANNER_ID, COUNTRY_ID, REGION, CITY_ID) VALUES ($BANNER_ID, ".$strInsert.")";
                                
$DB->Query($strSqlfalse$err_mess.__LINE__);
                                
$iCounter++;
                            }
                        }
                        
$DB->Query("UPDATE b_adv_banner SET STAT_COUNT = ".$iCounter." WHERE ID = ".$BANNER_ID);
                    }

                    if (
in_array("arrSTAT_ADV"$arrKeys))
                    {
                        
CAdvBanner::DeleteStatAdvLink($BANNER_ID);
                        if (
is_array($arFields["arrSTAT_ADV"]))
                        {
                            
$arrSTAT_ADV array_unique($arFields["arrSTAT_ADV"]);
                            foreach(
$arrSTAT_ADV as $aid)
                            {
                                if (
intval($aid)>0)
                                {
                                    
$strSql "INSERT INTO b_adv_banner_2_stat_adv (BANNER_ID, STAT_ADV_ID) VALUES ($BANNER_ID, '".intval($aid)."')";
                                    
$DB->Query($strSqlfalse$err_mess.__LINE__);
                                }
                            }
                        }
                    }

                    if (
in_array("arrWEEKDAY"$arrKeys))
                    {
                        
CAdvBanner::DeleteWeekdayLink($BANNER_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($arrHourcreate_function("&\$item""\$item=intval(\$item);"));
                                        
$arrHour array_unique($arrHour);
                                        foreach(
$arrHour as $hour)
                                        {
                                            if (
$hour>=&& $hour<=23)
                                            {
                                                
$strSql "INSERT INTO b_adv_banner_2_weekday (BANNER_ID, C_WEEKDAY, C_HOUR) VALUES ($BANNER_ID, '".$DB->ForSql($weekday10)."', $hour)";
                                                
$DB->Query($strSqlfalse$err_mess.__LINE__);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    if (
in_array("arrUSERGROUP"$arrKeys))
                    {
                        
CAdvBanner::DeleteGroupLink($BANNER_ID);
                        if (
is_array($arFields["arrUSERGROUP"]))
                        {
                            
$arrGROUPS array_unique($arFields["arrUSERGROUP"]);
                            foreach(
$arrGROUPS as $uid)
                            {
                                if (
intval($uid)>0)
                                {
                                    
$strSql "INSERT INTO b_adv_banner_2_group (BANNER_ID, GROUP_ID) VALUES ($BANNER_ID, ".IntVal($uid).")";
                                    
$DB->Query($strSqlfalse$err_mess.__LINE__);
                                }
                            }
                        }
                    }

                    
// если необходимо оповестить
                    
$SEND_EMAIL $arFields["SEND_EMAIL"] == "N" "N" "Y";
                    if (
$email_notify == "Y" && (!$isAdmin || !$isManager || $SEND_EMAIL == "Y"))
                    {
                        
// получаем данные по баннеру
                        
CTimeZone::Disable();
                        
$rsBanner CAdvBanner::GetByID($BANNER_ID$CHECK_RIGHTS);
                        
CTimeZone::Enable();

                        if (
$arBanner=$rsBanner->Fetch())
                        {
                            
$BCC = array();
                            
$OWNER_EMAIL = array();
                            
$ADD_EMAIL = array();
                            
$STAT_EMAIL = array();
                            
$EDIT_EMAIL = array();

                            
$MANAGER_EMAIL CAdvContract::GetManagerEmails();
                            
$ADMIN_EMAIL CAdvContract::GetAdminEmails();
                            
$ADMIN_EMAIL array_merge($MANAGER_EMAIL$ADMIN_EMAIL);
                            
$ADMIN_EMAIL array_unique($ADMIN_EMAIL);
                            
CAdvContract::GetOwnerEmails($CONTRACT_ID$OWNER_EMAIL$ADD_EMAIL$STAT_EMAIL$EDIT_EMAIL);

                            
$CREATED_BY $MODIFIED_BY 0;
                            if (
intval($arBanner["CREATED_BY"])>0)
                            {
                                
$rsUser CUser::GetByID($arBanner["CREATED_BY"]);
                                if (
$arUser $rsUser->Fetch())
                                {
                                    
$CREATED_BY "[".$arUser["ID"]."] (".$arUser["LOGIN"].") ".$arUser["NAME"]." ".$arUser["LAST_NAME"];
                                }
                            }
                            if (
intval($arBanner["MODIFIED_BY"])==intval($arBanner["CREATED_BY"]) && intval($arBanner["CREATED_BY"])>0)
                            {
                                
$MODIFIED_BY $CREATED_BY;
                            }
                            elseif (
intval($arBanner["MODIFIED_BY"])>0)
                            {
                                
$rsUser CUser::GetByID($arBanner["MODIFIED_BY"]);
                                if (
$arUser $rsUser->Fetch())
                                {
                                    
$MODIFIED_BY "[".$arUser["ID"]."] (".$arUser["LOGIN"].") ".$arUser["NAME"]." ".$arUser["LAST_NAME"];
                                }
                            }

                            
$arImage CFile::GetFileArray($arBanner["IMAGE_ID"]);
                            if (
$arImage)
                                
$IMAGE_LINK CHTTP::URN2URI($arImage["SRC"]);
                            else
                                
$IMAGE_LINK "";

                            
$arImage CFile::GetFileArray($arBanner["FLASH_IMAGE"]);
                            if (
$arImage)
                                
$FLASHIMAGE_LINK CHTTP::URN2URI($arImage["SRC"]);
                            else
                                
$FLASHIMAGE_LINK "";

                            
$EMAIL_TO $OWNER_EMAIL;
                            if (
count($EMAIL_TO)<=0)
                            {
                                
$EMAIL_TO $ADMIN_EMAIL;
                            }
                            else 
$BCC $ADMIN_EMAIL;

                            
$arEventFields = array(
                                
"ID"                    => $arBanner["ID"],
                                
"EMAIL_TO"            => implode(","$EMAIL_TO),
                                
"ADMIN_EMAIL"            => implode(","$ADMIN_EMAIL),
                                
"ADD_EMAIL"            => implode(","$ADD_EMAIL),
                                
"STAT_EMAIL"            => implode(","$STAT_EMAIL),
                                
"EDIT_EMAIL"            => implode(","$EDIT_EMAIL),
                                
"OWNER_EMAIL"            => implode(","$OWNER_EMAIL),
                                
"BCC"                => implode(","$BCC),
                                
"CONTRACT_ID"            => $CONTRACT_ID,
                                
"CONTRACT_NAME"        => $arContract["NAME"],
                                
"TYPE_SID"            => $arBanner["TYPE_SID"],
                                
"TYPE_NAME"            => $arBanner["TYPE_NAME"],
                                
"STATUS"                => ( ( strlen$arBanner["STATUS_SID"] ) > ) ? GetMessage"AD_STATUS_" $arBanner["STATUS_SID"] ) : "" ),
                                
"STATUS_COMMENTS"        => $arBanner["STATUS_COMMENTS"],
                                
"NAME"                => $arBanner["NAME"],
                                
"GROUP_SID"            => $arBanner["GROUP_SID"],
                                
"INDICATOR"            => GetMessage("AD_"strtoupper($arBanner["LAMP"])."_BANNER_STATUS"),
                                
"ACTIVE"                => $arBanner["ACTIVE"],
                                
"MAX_SHOW_COUNT"        => $arBanner["MAX_SHOW_COUNT"],
                                
"SHOW_COUNT"            => $arBanner["SHOW_COUNT"],
                                
"MAX_CLICK_COUNT"        => $arBanner["MAX_CLICK_COUNT"],
                                
"CLICK_COUNT"            => $arBanner["CLICK_COUNT"],
                                
"DATE_LAST_SHOW"        => $arBanner["DATE_LAST_SHOW"],
                                
"DATE_LAST_CLICK"        => $arBanner["DATE_LAST_CLICK"],
                                
"DATE_SHOW_FROM"        => $arBanner["DATE_SHOW_FROM"],
                                
"DATE_SHOW_TO"            => $arBanner["DATE_SHOW_TO"],
                                
"IMAGE_LINK"            => $IMAGE_LINK,
                                
"IMAGE_ALT"            => $arBanner["IMAGE_ALT"],
                                
"URL"                => $arBanner["URL"],
                                
"URL_TARGET"            => $arBanner["URL_TARGET"],
                                
"NO_URL_IN_FLASH"        => $arBanner["NO_URL_IN_FLASH"],
                                
"CODE"                => $arBanner["CODE"],
                                
"CODE_TYPE"            => $arBanner["CODE_TYPE"],
                                
"COMMENTS"            => $arBanner["COMMENTS"],
                                
"DATE_CREATE"            => $arBanner["DATE_CREATE"],
                                
"CREATED_BY"            => $CREATED_BY,
                                
"DATE_MODIFY"            => $arBanner["DATE_MODIFY"],
                                
"MODIFIED_BY"            => $MODIFIED_BY,
                                
"AD_TYPE"                => $arBanner["AD_TYPE"],
                                
"TEMPLATE"                => unserialize($arBanner["TEMPLATE"]),
                                
"FLASH_TRANSPARENT" => $arBanner["FLASH_TRANSPARENT"],
                                
"FLASH_IMAGE_LINK" => $FLASHIMAGE_LINK,
                                
"FLASH_JS" => $arBanner["FLASH_JS"],
                                
"FLASH_VER" => $arBanner["FLASH_VER"],
                            );
                            
$arrSITE CAdvBanner::GetSiteArray($arBanner["ID"]);
                            
CEvent::Send("ADV_BANNER_STATUS_CHANGE"$arrSITE$arEventFields);
                        }
                    }
                }
            }
        }
        return 
$BANNER_ID;
    }