public function __construct(EntityBlueprint $blueprint, $timezone_offset = NULL) { $this->blueprint = $blueprint; /* // Init timezone offsets */ if (!empty($timezone_offset)) { $this->timezone_offset_select = $timezone_offset; $this->timezone_offset_modify = $timezone_offset; } else { // timezone_offset_select $this->timezone_offset_select = BPTimezone::getOffset(); // timezone_offset_modify // DO NOT USE User Session's or BPConfig timezone preference for INSERT/UPDATE // php's date() function will return datetimes in (php) systems timezone regardless of users Session or BPConfig // To modify DATETIME's in the users timezone of preference (e.g. when visitor inputs a time using UI) // client code should either (1) explicitly construct EntityDAO with $timezone_offset param // or (2) manually create/convert DATETIMES (in php) in the users preferred timezone $timezone_offset_modify = BPTimezone::getOffsetForTimezone(date_default_timezone_get()); if (!empty($timezone_offset_modify)) { $this->timezone_offset_modify = $timezone_offset_modify; } else { $this->timezone_offset_modify = BPTimezone::UTC; } } }
public static function getOffset() { $tag = "BPTimezone::getOffset()"; $session_timezone = Session::user("_TIMEZONE"); // Overrides Session::user("_TIMEZONE_OFFSET") $session_timezone_offset = Session::user("_TIMEZONE_OFFSET"); $config_timezone = isset(BPConfig::$timezone) ? BPConfig::$timezone : ""; // Overrides $timezone_offset $config_timezone_offset = isset(BPConfig::$timezone_offset) ? BPConfig::$timezone_offset : 0; $default_timezone = date_default_timezone_get(); if (!empty($session_timezone)) { $offset = BPTimezone::getOffsetForTimezone($session_timezone); Log::debug("{$tag}: Returning offset from Session::user(_TIMEZONE): {$offset}"); return $offset; } else { if (!empty($session_timezone_offset)) { Log::debug("{$tag}: Returning offset from Session::user(_TIMEZONE_OFFSET) {$session_timezone_offset}"); return $session_timezone_offset; } else { if (!empty($config_timezone)) { $offset = BPTimezone::getOffsetForTimezone($config_timezone); Log::debug("{$tag}: Returning offset from BPConfig::timezone: {$offset}"); return $offset; } else { if (!empty($config_timezone_offset)) { Log::debug("{$tag}: Returning offset from BPConfig::timezone_offset {$config_timezone_offset}"); return $config_timezone_offset; } else { if (!empty($default_timezone)) { $offset = BPTimezone::getOffsetForTimezone($default_timezone); Log::debug("{$tag}: Returning offset from default timezone: {$offset}"); return $offset; } else { Log::debug("{$tag}: Returning offset for UTC:" . BPTimezone::UTC); return BPTimezone::UTC; } } } } } }