Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
vibes
/
includes
/
system
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * Timezone handling * * Handles all timezone operations and detection. * * @package System * @author Pierre Lannoy <https://pierre.lannoy.fr/>. * @since 1.0.0 */ namespace Vibes\System; use Vibes\System\Environment; /** * Define the timezone functionality. * * Handles all timezone operations and detection. * * @package System * @author Pierre Lannoy <https://pierre.lannoy.fr/>. * @since 1.0.0 */ class Timezone extends \DateTimeZone { /** * Determine time zone from WordPress options and return as object. * Inspired by https://github.com/Rarst/wpdatetime repository. * * @param string $timezone_string The timezone identifier. * @param string $offset Optional. The offset of the timezone. * @return static */ private static function get( $timezone_string, $offset = '0' ) { if ( ! empty( $timezone_string ) ) { return new static( $timezone_string ); } $sign = $offset < 0 ? '-' : '+'; $hours = (int) $offset; $minutes = abs( ( $offset - (int) $offset ) * 60 ); $offset = sprintf( '%s%02d:%02d', $sign, abs( $hours ), $minutes ); return new static( $offset ); } /** * Get the timezone for the current site * * @return static */ public static function site_get() { return self::get( get_option( 'timezone_string' ), get_option( 'gmt_offset' ) ); } /** * Get the timezone for a specific site * * @param int $id Optional. The blog id. * @return static */ public static function site_get_for( $id = 1 ) { if ( Environment::is_wordpress_multisite() ) { return self::get( get_blog_option( $id, 'timezone_string' ), get_blog_option( $id, 'gmt_offset' ) ); } return self::site_get(); } /** * Get the timezone for the network * * @return static */ public static function network_get() { if ( Environment::is_wordpress_multisite() ) { return self::site_get_for( 1 ); } return self::site_get(); } }