Поддержка серверов

CTimeZone::GetOffset: метод Битрикс

Постоянная ссылка: http://bxapi.ru/src/?id=162224

<?php 
//    /bitrix/modules/main/classes/general/time.phpCTimeZone::GetOffset()
//    153:

    
public static function GetOffset($USER_ID null$forced false)
    {
        global 
$USER;

        if(
$forced)
        {
            if(!
self::OptionEnabled())
            {
                return 
0;
            }
        }
        else
        {
            if(!
self::Enabled())
            {
                return 
0;
            }
        }

        try 
//possible DateTimeZone incorrect timezone
        
{
            
$localTime = new DateTime();
            
$localOffset $localTime->getOffset();
            
$userOffset $localOffset;

            
$autoTimeZone $userZone '';
            
$factOffset 0;
            if(
$USER_ID !== null)
            {
                
$dbUser CUser::GetByID($USER_ID);
                if((
$arUser $dbUser->Fetch()))
                {
                    
$autoTimeZone trim($arUser["AUTO_TIME_ZONE"]);
                    
$userZone $arUser["TIME_ZONE"];
                    
$factOffset intval($arUser["TIME_ZONE_OFFSET"]);
                }
            }
            elseif(
is_object($USER))
            {
                
$autoTimeZone trim($USER->GetParam("AUTO_TIME_ZONE"));
                
$userZone $USER->GetParam("TIME_ZONE");
            }

            if(
$autoTimeZone == "N")
            {
                
//manually set time zone
                
$userTime = ($userZone <> ""? new DateTime(null, new DateTimeZone($userZone)) : $localTime);
                
$userOffset $userTime->getOffset();
            }
            else
            {
                if(
self::IsAutoTimeZone($autoTimeZone))
                {
                    if(
$USER_ID !== null)
                    {
                        
//auto time zone from DB
                        
return $factOffset;
                    }
                    if((
$cookie self::GetCookieValue()) !== null)
                    {
                        
//auto time zone from cookie
                        
$userOffset = -($cookie)*60;
                    }
                    elseif(
is_object($USER))
                    {
                        
//auto time zone from the session, set on Authorize
                        
return intval($USER->GetParam("TIME_ZONE_OFFSET"));
                    }
                }
                else
                {
                    
//default server time zone
                    
$serverZone COption::GetOptionString("main""default_time_zone""");
                    
$serverTime = ($serverZone <> ""? new DateTime(null, new DateTimeZone($serverZone)) : $localTime);
                    
$userOffset $serverTime->getOffset();
                }
            }
        }
        catch(
Exception $e)
        {
            return 
0;
        }
        return 
$userOffset $localOffset;
    }

Блог разработчика

9 Августа 2016 ResizeImageGet и простой водяной знак налету

Сегодня поговорим о том как проще всего воткнуть водяной знак на картинки в Битрикс. Например, на все изображения каталога.

21 Июля 2016 Добавление вкладки в CRM коробки Битрикс24

В этом посте я покажу, как легко и просто добавить вкладку в сущность CRM. И не просто добавить, а вывести там свой контент.

21 Июля 2016 Как просто обращаться из коробки Битрикс24 на сайт на базе Битрикс

К примеру вам хочется внутренним скриптом дернуть с сайта-магазина информацию, которая там, в свою очередь, закрыта некоторыми правами. Например, админскими. Можно конечно мутить свой REST, или иной формат общения, но проще всего воспользоваться штатным инструментом:

Текст сообщения*
Загрузить изображение