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

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

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

//    CTimeZone::GetOffset()
//    /bitrix/modules/main/classes/general/time.php: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, или иной формат общения, но проще всего воспользоваться штатным инструментом:

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