FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
latepoint
/
lib
/
helpers
Edit File: wp_datetime.php
<?php class OsWpDateTime extends DateTime { function __construct( ?string $time = 'now', ?DateTimeZone $timezone = null ) { $timezone = ( $timezone instanceof DateTimeZone ) ? $timezone : OsTimeHelper::get_wp_timezone(); try { if ( empty( $time ) ) { $time = 'now'; } parent::__construct( $time, $timezone ); } catch ( Exception $e ) { OsDebugHelper::log( 'Error parsing date: ' . $e->getMessage(), 'date_parsing' ); return parent::__construct( 'now', $timezone ); } } public static function datetime_in_utc( DateTime $datetime, $format = false ) { $utc_datetime = clone $datetime; $utc_datetime->setTimezone( new DateTimeZone( 'UTC' ) ); return $format ? $utc_datetime->format( $format ) : $utc_datetime; } public static function date_to_db_format( $date_string, $default = '' ) { if ( empty( $date_string ) ) { return $default; } try { $date = self::os_createFromFormat( OsSettingsHelper::get_date_format(), $date_string ); return $date->format( 'Y-m-d' ); } catch ( Exception $e ) { return $default; } } public static function date_from_db_format( $date_string, $default = '' ) { if ( empty( $date_string ) ) { return $default; } try { $timezone = new DateTimeZone( 'UTC' ); $date = self::os_createFromFormat( 'Y-m-d', $date_string, $timezone ); return $date->format( OsSettingsHelper::get_date_format() ); } catch ( Exception $e ) { return $default; } } public static function os_createFromFormat( $format, $datetime_string, $timezone = false ) { $timezone = ( $timezone ) ? $timezone : OsTimeHelper::get_wp_timezone(); return self::createFromFormat( $format, $datetime_string, $timezone ); } // TODO will be deprecated, moved to GCal addon public static function os_get_start_of_google_event( $google_event ) { if ( ! empty( $google_event->start->dateTime ) ) { $date_string = $google_event->start->dateTime; $date_format = \DateTime::RFC3339; $timezone = new DateTimeZone( $google_event->start->timeZone ); } else { // Full day event $date_string = $google_event->start->date . ' 00:00:00'; $date_format = LATEPOINT_DATETIME_DB_FORMAT; $timezone = false; } return self::os_createFromFormat( $date_format, $date_string, $timezone ); } // TODO will be deprecated, moved to GCal addon public static function os_get_end_of_google_event( $google_event ) { if ( ! empty( $google_event->end->dateTime ) ) { $date_string = $google_event->end->dateTime; $date_format = \DateTime::RFC3339; return self::os_createFromFormat( $date_format, $date_string ); } else { // Full day event // !important, in full day events of Google Calendar - start day is inclusive and the end day is exclusive https://stackoverflow.com/questions/34992747/google-calendar-json-api-full-day-events-always-one-day-longer $date_string = $google_event->end->date . ' 23:59:59'; $date_format = LATEPOINT_DATETIME_DB_FORMAT; $temp_date = self::os_createFromFormat( $date_format, $date_string ); // move back 1 day to accomodate Google rule that end date is 1 day ahead of actual end date of a full day event $temp_date->modify( '-1 day' ); return $temp_date; } } }
Save
Back