File "ActionScheduler_TimezoneHelper.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/woocommerce/packages/action-scheduler/classes/abstracts/ActionScheduler_TimezoneHelper.php
File size: 3.46 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

abstract class ActionScheduler_TimezoneHelper
{
    private static $local_timezone = NULL;
    public static function set_local_timezone(DateTime $date)
    {
        if (!is_a($date, 'ActionScheduler_DateTime')) {
            $date = as_get_datetime_object($date->format('U'));
        }
        if (get_option('timezone_string')) {
            $date->setTimezone(new DateTimeZone(self::get_local_timezone_string()));
        } else {
            $date->setUtcOffset(self::get_local_timezone_offset());
        }
        return $date;
    }
    protected static function get_local_timezone_string($reset = false)
    {
        $timezone = get_option('timezone_string');
        if ($timezone) {
            return $timezone;
        }
        $utc_offset = intval(get_option('gmt_offset', 0));
        if (0 === $utc_offset) {
            return 'UTC';
        }
        $utc_offset *= 3600;
        $timezone = timezone_name_from_abbr('', $utc_offset);
        if ($timezone) {
            return $timezone;
        }
        foreach (timezone_abbreviations_list() as $abbr) {
            foreach ($abbr as $city) {
                if ((bool) date('I') === (bool) $city['dst'] && $city['timezone_id'] && intval($city['offset']) === $utc_offset) {
                    return $city['timezone_id'];
                }
            }
        }
        return '';
    }
    protected static function get_local_timezone_offset()
    {
        $timezone = get_option('timezone_string');
        if ($timezone) {
            $timezone_object = new DateTimeZone($timezone);
            return $timezone_object->getOffset(new DateTime('now'));
        } else {
            return floatval(get_option('gmt_offset', 0)) * HOUR_IN_SECONDS;
        }
    }
    public static function get_local_timezone($reset = FALSE)
    {
        _deprecated_function(__FUNCTION__, '2.1.0', 'ActionScheduler_TimezoneHelper::set_local_timezone()');
        if ($reset) {
            self::$local_timezone = NULL;
        }
        if (!isset(self::$local_timezone)) {
            $tzstring = get_option('timezone_string');
            if (empty($tzstring)) {
                $gmt_offset = get_option('gmt_offset');
                if ($gmt_offset == 0) {
                    $tzstring = 'UTC';
                } else {
                    $gmt_offset *= HOUR_IN_SECONDS;
                    $tzstring = timezone_name_from_abbr('', $gmt_offset, 1);
                    if (false === $tzstring) {
                        $tzstring = timezone_name_from_abbr('', $gmt_offset, 0);
                    }
                    if (false === $tzstring) {
                        $is_dst = date('I');
                        foreach (timezone_abbreviations_list() as $abbr) {
                            foreach ($abbr as $city) {
                                if ($city['dst'] == $is_dst && $city['offset'] == $gmt_offset) {
                                    if (null === $city['timezone_id']) {
                                        continue;
                                    }
                                    $tzstring = $city['timezone_id'];
                                    break 2;
                                }
                            }
                        }
                    }
                    if (false === $tzstring) {
                        $tzstring = 'UTC';
                    }
                }
            }
            self::$local_timezone = new DateTimeZone($tzstring);
        }
        return self::$local_timezone;
    }
}