diff --git a/README.md b/README.md index 2e1e305..61c2bd5 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ under DWTWL 2.55 license: https://soundragon.su/license/license.html https://wordpress.org/plugins/discordian-date-function/ -This plugin allows WordPress to easily show Erisian dates instead of the standard Gregorian dates. No theme changes are required. +This plugin allows WordPress to easily show Erisian dates and time (decimal) instead of the standard Gregorian dates. No theme changes are required. This functional based on the Discordian Date plugin by Dan Johnson. -Also provides a widget which displays the current date according to the Discordian calendar, with notification of more than 70 holydays. +Also provides a widget which displays the current date according to the Discordian calendar, with notification of more than 70 holidays. And you can add the shortcode [todаy_ddate] in posts or pages for show the Discordian date of today. diff --git a/ddatefunc.php b/ddatefunc.php index b6f9fed..b7df061 100644 --- a/ddatefunc.php +++ b/ddatefunc.php @@ -2,8 +2,8 @@ /* Plugin Name: Discordian Date Function Plugin URI: https://is3.soundragon.su/discordian-date-function -Description: Convert dates in Wordpress to customizable Discordian dates. Also, this plugin provides shortcode and widget used to display the current erisian date with notification of 70 holydays. Based on the Discordian Date plugin by Dan Johnson. -Version: 0.555 +Description: Convert dates in Wordpress to customizable Discordian dates and time (decimal). Also, this plugin provides shortcode and widget used to display the current erisian date with notification of 70 holydays. Based on the Discordian Date plugin by Dan Johnson. +Version: 2.5 Author: ivan zlax Author URI: https://is3.soundragon.su/about */ @@ -19,17 +19,31 @@ function get_ddate($content, $format = "", $originalRequest = null) { switch ($originalRequest) { case "get_the_date": + case "get_the_time": $post = get_post( $format ); - $standard_date = getdate (mysql2date( 'U', $post->post_date )); + if ( get_option('dtime_convert') == '1' ) + $standard_date = utcm5_convert(mysql2date( 'U', $post->post_date_gmt )); + else + $standard_date = getdate (mysql2date( 'U', $post->post_date )); break; case "get_comment_date": + case "get_comment_time": $comment = get_comment( $format ); - $standard_date = getdate (mysql2date( 'U', $comment->comment_date )); + if ( get_option('dtime_convert') == '1' ) + $standard_date = utcm5_convert(mysql2date( 'U', $comment->comment_date_gmt )); + else + $standard_date = getdate (mysql2date( 'U', $comment->comment_date )); break; case "now": - $standard_date = getdate(); + if ( get_option('dtime_convert') == '1' ) + $standard_date = utcm5_convert(getdate()[0]); + else + $standard_date = getdate(); } + if ($originalRequest == "get_comment_time") return dtime_convert($standard_date); + if ($originalRequest == "get_the_time") return dtime_convert($standard_date); + $dyear=$standard_date["year"]+1166; $gyear=$standard_date["year"]; $yday=$standard_date["yday"]; @@ -77,6 +91,9 @@ function get_ddate($content, $format = "", $originalRequest = null) { $patterns[7] = '%GN'; $patterns[8] = '%GD'; $patterns[9] = '%GW'; + $patterns[10] = '%DT'; + $patterns[11] = '%CT'; + $patterns[12] = '%UT'; $replacements = array(); $replacements[0] = $dyear; $replacements[1] = $name_season; @@ -92,11 +109,40 @@ function get_ddate($content, $format = "", $originalRequest = null) { $replacements[7] = $standard_date["mon"]; $replacements[8] = $standard_date["mday"]; $replacements[9] = $standard_date["weekday"]; + $replacements[10] = dtime_convert($standard_date); + $replacements[11] = $standard_date["hours"] . ":" . str_pad($standard_date["minutes"], 2, '0', STR_PAD_LEFT); + $replacements[12] = $standard_date[0]; $ddate = str_replace($patterns, $replacements, get_option('ddatefunc_string')); } return $ddate; } +function dtime_convert($standard_date) { + $standard_msday = $standard_date["hours"]*3600000+$standard_date["minutes"]*60000+$standard_date["seconds"]*1000; + $discordian_sday = round($standard_msday/864); + $discordian_minutes = $discordian_sday%10000; + $dtime = floor($discordian_sday/10000) . ":" . str_pad(floor($discordian_minutes/100), 2, '0', STR_PAD_LEFT); + return $dtime; +} + +function utcm5_convert($standard_date) { + // Easter Island Winter Time Zone offset (-5*60*60) + $utcm5_date = array(); + $utcm5_date[0] = $standard_date; + $unixtime_utcm5 = $standard_date-18000; + $utcm5_date["seconds"] = gmdate("s", $unixtime_utcm5); + $utcm5_date["minutes"] = gmdate("i", $unixtime_utcm5); + $utcm5_date["hours"] = gmdate("G", $unixtime_utcm5); + $utcm5_date["mday"] = gmdate("j", $unixtime_utcm5); + $utcm5_date["wday"] = gmdate("w", $unixtime_utcm5); + $utcm5_date["mon"] = gmdate("n", $unixtime_utcm5); + $utcm5_date["year"] = gmdate("Y", $unixtime_utcm5); + $utcm5_date["yday"] = gmdate("z", $unixtime_utcm5); + $utcm5_date["weekday"] = gmdate("l", $unixtime_utcm5); + $utcm5_date["month"] = gmdate("F", $unixtime_utcm5); + return $utcm5_date; +} + class Discordian_Date_Widget extends WP_Widget { function Discordian_Date_Widget() { @@ -269,9 +315,15 @@ class Discordian_Date_Widget extends WP_Widget { function get_the_ddate_post($content, $format = null) { return get_ddate($content, $format, "get_the_date"); } +function get_the_dtime_post($content, $format = null) { + return get_ddate($content, $format, "get_the_time"); } + function get_the_ddate_comment($content, $format = null) { return get_ddate($content, $format, "get_comment_date"); } +function get_the_dtime_comment($content, $format = null) { + return get_ddate($content, $format, "get_comment_time"); } + function register_ddatefunc_widget() { register_widget( 'Discordian_Date_Widget' ); } @@ -300,10 +352,18 @@ function ddatefunc_admin() { echo '
'.__('Settings saved.').'