CAdvContract :: Set: Bitrix method

      
<?php 
//  CAdvContract :: Set()
//  /dist/bitrix/modules/advertising/classes/general/advertising.php:665

    
public static function Set($arFields$CONTRACT_ID$CHECK_RIGHTS="Y")
    {
        
$err_mess = (CAdvContract_all::err_mess())."<br>Function: Set<br>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 (
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_VISITOR_COUNT"$arrKeys))
                {
                    
$check_activity "Y";
                    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("MAX_CLICK_COUNT"$arrKeys))
                {
                    
$check_activity "Y";
                    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))
                {
                    
$check_activity "Y";
                    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))
                {
                    
$check_activity "Y";
                    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("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 (
strlen(trim($sid))>0)
                                {
                                    
$strSql "INSERT INTO b_adv_contract_2_site(CONTRACT_ID, SITE_ID) VALUES ($CONTRACT_ID, '".$DB->ForSql($sid2)."')";
                                    
$DB->Query($strSqlfalse$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 (
strlen($page)>0)
                                {
                                    
$arFields_i = array(
                                        
"CONTRACT_ID"    => $CONTRACT_ID,
                                        
"PAGE"            => "'".$DB->ForSql($page255)."'",
                                        
"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 (
strlen($page)>0)
                                {
                                    
$arFields_i = array(
                                        
"CONTRACT_ID"    => $CONTRACT_ID,
                                        
"PAGE"            => "'".$DB->ForSql($page255)."'",
                                        
"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 (
strlen(trim($type))>0)
                                {
                                    
$strSql "INSERT INTO b_adv_contract_2_type(CONTRACT_ID, TYPE_SID) VALUES ($CONTRACT_ID, '".$DB->ForSql($type255)."')";
                                    
$DB->Query($strSqlfalse$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($arrHourcreate_function("&\$item""\$item=intval(\$item);"));
                                        
$arrHour array_unique($arrHour);
                                        foreach(
$arrHour as $hour)
                                        {
                                            if (
$hour>=&& $hour<=23)
                                            {
                                                
$strSql "INSERT INTO b_adv_contract_2_weekday (CONTRACT_ID, C_WEEKDAY, C_HOUR) VALUES (".$CONTRACT_ID.", '".$DB->ForSql($weekday10)."', ".$hour.")";
                                                
$DB->Query($strSqlfalse$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;
    }