From a28cbfa660f2ff982f1cdcee41c09cec772d84af Mon Sep 17 00:00:00 2001 From: Arun Persaud Date: Sun, 16 Dec 2007 14:54:06 +0100 Subject: [PATCH] BUGFIX: time display used wrong timezones. also optimized things a bit Got rid of a few db-queries for getting the right timezone. The timezone was also set after the timefunction was called and therefore the timezone didn't have any effect. --- create_database.sql | 2 +- functions.php | 33 +++++++-------------------------- index.php | 17 ----------------- output.php | 29 +++++++++++++++++++++++------ register.php | 7 ++++--- stats.php | 11 ----------- 6 files changed, 35 insertions(+), 64 deletions(-) diff --git a/create_database.sql b/create_database.sql index d7b7e20..ed6d3f6 100644 --- a/create_database.sql +++ b/create_database.sql @@ -260,7 +260,7 @@ CREATE TABLE `User` ( `fullname` varchar(64) default NULL, `email` varchar(64) default NULL, `password` varchar(32) default NULL, - `timezone` tinyint(2) default NULL, + `timezone` varchar(64) default 'Europe/London', `last_login` timestamp NOT NULL default '0000-00-00 00:00:00', UNIQUE KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; diff --git a/functions.php b/functions.php index 16ca508..c835f89 100644 --- a/functions.php +++ b/functions.php @@ -390,26 +390,6 @@ function display_cards($me,$myturn) return; } -function return_timezone($offset) -{ - switch($offset) - { - case '1': - $zone = "Europe/Berlin"; - break; - case '-8': - $zone = "America/Vancouver"; - break; - case '13': - $zone = "Pacific/Auckland"; - break; - default: - $zone = "Europe/London"; - } - - return $zone; -} - function have_suit($cards,$c) { global $CARDS; @@ -669,7 +649,8 @@ function display_table () " Hand.sickness as sickness, ". " Hand.point_call, ". " User.last_login, ". - " Hand.hash ". + " Hand.hash, ". + " User.timezone ". "FROM Hand ". "LEFT JOIN User ON User.id=Hand.user_id ". "WHERE Hand.game_id='".$gameid."' ". @@ -685,12 +666,12 @@ function display_table () $party = $r[3]; $sickness = $r[4]; $call = $r[5]; - $lastlogin = strtotime($r[6]); $hash = $r[7]; + $timezone = $r[8]; + date_default_timezone_set($timezone); + $timenow = strtotime(date("Y-m-d H:i:s")); + $lastlogin = strtotime($r[6]); - $offset = DB_get_user_timezone($user); - $zone = return_timezone($offset); - date_default_timezone_set($zone); echo "
\n"; if(!$debug) @@ -790,7 +771,7 @@ function display_table () } echo "
\n"; - echo " local time\n"; + echo " local time\n"; echo " last login\n"; echo "
\n"; diff --git a/index.php b/index.php index 8acb871..6584f0e 100644 --- a/index.php +++ b/index.php @@ -1153,13 +1153,8 @@ else if(myisset("me")) $seq = $r[2]; $trick = $r[3]; $comment = $r[4]; - $timeplayed = strtotime($r[5]); $user = $r[6]; - $offset = DB_get_user_timezone($user); - $zone = return_timezone($offset); - date_default_timezone_set($zone); - /* check if first schweinchen has been played */ if( $GAME["schweinchen"] && ($r[0] == 19 || $r[0] == 20) ) $GAME["schweinchen"]++; @@ -2057,24 +2052,12 @@ else if( myisset("email","password") || isset($_SESSION["name"]) ) } else /* output default user page */ { - $time = DB_get_user_timestamp($myid); - $unixtime = strtotime($time); - - $offset = DB_get_user_timezone($myid); - $zone = return_timezone($offset); - date_default_timezone_set($zone); - $myname = DB_get_name_by_email($email); $_SESSION["name"] = $myname; - if(isset($_SESSION["name"])) - output_status($_SESSION["name"]); - /* display links to settings */ output_user_settings(); - echo "
last login: ".date("r",$unixtime)."
"; - DB_update_user_timestamp($myid); display_user_menu(); diff --git a/output.php b/output.php index 8dc0c2e..29fd8f3 100644 --- a/output.php +++ b/output.php @@ -267,7 +267,7 @@ function output_home_page($pre,$game,$done,$avgtime) echo "$done games have been completed on this server. Average time of a game: $avgtime days

"; ?> -

Please register, in case you haven't done that yet
+

Please register, in case you have not done that yet
or login with you email-address or name and password here:

@@ -333,8 +333,29 @@ function output_header()

Welcome to E-Doko (beta)

-
\n"; + echo $name; + echo " logout\n"; + echo "
"; + + /* last logon time */ + $myid = DB_get_userid_by_name($name); + $zone = DB_get_user_timezone($myid); + date_default_timezone_set($zone); + + $time = DB_get_user_timestamp($myid); + $unixtime = strtotime($time); + + echo "
last login: ".date("r",$unixtime)."
"; + }; + + echo "
"; return; } @@ -365,10 +386,6 @@ function output_footer() function output_status($name) { - echo "
\n"; - echo $name; - echo " logout\n"; - echo "
"; return; } diff --git a/register.php b/register.php index 827e77e..7c3a373 100644 --- a/register.php +++ b/register.php @@ -71,9 +71,10 @@ if(myisset("Rfullname","Remail","Rpassword","Rtimezone") ) (If your timezone is not listed, just select whatever you want and email the admin your correct time zone.) diff --git a/stats.php b/stats.php index ba32a92..68a09af 100644 --- a/stats.php +++ b/stats.php @@ -52,17 +52,6 @@ else if( isset($_SESSION["name"]) ) { DB_get_PREF($myid); - $time = DB_get_user_timestamp($myid); - $unixtime = strtotime($time); - - $offset = DB_get_user_timezone($myid); - $zone = return_timezone($offset); - date_default_timezone_set($zone); - - output_status($name); - - echo "
last login: ".date("r",$unixtime)."
"; - DB_update_user_timestamp($myid); display_user_menu(); -- 2.34.1