From c1585e23cb3ea757674c234c9193889b4f2f2090 Mon Sep 17 00:00:00 2001 From: Arun Persaud Date: Fri, 30 Jan 2009 21:05:32 -0800 Subject: [PATCH 1/1] NEW FEATURE: vacation support users can specify a vacation start and end date and a message. Once they are on vacation their name will be shown in a different color at the table and on the user page (in case it is their turn). --- css/{standard017.css => standard018.css} | 7 +- include/db.php | 23 ++++++ include/functions.php | 51 ++++++++++++- include/output.php | 2 +- include/preferences.php | 97 +++++++++++++++++++++++- include/user.php | 21 ++++- 6 files changed, 193 insertions(+), 8 deletions(-) rename css/{standard017.css => standard018.css} (99%) diff --git a/css/standard017.css b/css/standard018.css similarity index 99% rename from css/standard017.css rename to css/standard018.css index c9524d8..d1eeb25 100644 --- a/css/standard017.css +++ b/css/standard018.css @@ -570,7 +570,7 @@ table.stats th { border-bottom: solid 0.2em #000 } text-align: center; } -.login fieldset { +fieldset { border: 2px solid #000; padding: 0.5em 0.5em 0.75em; background-color: #eee; @@ -594,4 +594,9 @@ table.stats th { border-bottom: solid 0.2em #000 } .newbiehint { background-color: #fee; +} + +.vacation { + color: #666; + background-color: #fc3; } \ No newline at end of file diff --git a/include/db.php b/include/db.php index 27d639e..b8bcea8 100644 --- a/include/db.php +++ b/include/db.php @@ -763,6 +763,29 @@ function DB_get_PREF($myid) else $PREF['open_for_games']='yes'; + /* Vacation start */ + $r = DB_query_array("SELECT value FROM User_Prefs". + " WHERE user_id='$myid' AND pref_key='vacation start'" ); + if($r) + $PREF['vacation_start'] = $r[0]; + else + $PREF['vacation_start'] = NULL; + + /* Vacation stop */ + $r = DB_query_array("SELECT value FROM User_Prefs". + " WHERE user_id='$myid' AND pref_key='vacation stop'" ); + if($r) + $PREF['vacation_stop'] = $r[0]; + else + $PREF['vacation_stop'] = NULL; + + /* Vacation comment */ + $r = DB_query_array("SELECT value FROM User_Prefs". + " WHERE user_id='$myid' AND pref_key='vacation comment'" ); + if($r) + $PREF['vacation_comment'] = $r[0]; + else + $PREF['vacation_comment'] = ""; return $PREF; } diff --git a/include/functions.php b/include/functions.php index 044c6c7..b4c344d 100644 --- a/include/functions.php +++ b/include/functions.php @@ -767,10 +767,22 @@ function display_table () $timenow = strtotime(date("Y-m-d H:i:s")); echo "
\n"; - if(!$debug) - echo " $name \n"; + + if($debug) + echo " "; + if($vacation = check_vacation($user)) + { + $start = $vacation[0]; + $stop = substr($vacation[1],0,10); + $comment = $vacation[2]; + + $title = "begin: $start end: $stop $comment"; + echo " $name (on vacation until $stop) \n"; + } else - echo " $name\n"; + echo " $name \n"; + if($debug) + echo"\n"; /* add hints for poverty, wedding, solo, etc */ if( $gametype != "solo") @@ -1162,5 +1174,38 @@ function getCache($cacheFile, $expireTime) return false; } +function check_vacation($userid) +{ + /* get start date */ + $result = DB_query_array("SELECT value FROM User_Prefs". + " WHERE user_id='$userid' AND pref_key='vacation start'" ); + if($result) + $start = $result[0]; + else + return NULL; + + /* get end date */ + $result = DB_query_array("SELECT value FROM User_Prefs". + " WHERE user_id='$userid' AND pref_key='vacation stop'" ); + if($result) + $stop = $result[0]; + else + return NULL; + + /* get comment */ + $result = DB_query_array("SELECT value FROM User_Prefs". + " WHERE user_id='$userid' AND pref_key='vacation comment'" ); + if($result) + $comment = $result[0]; + else + $comment = ''; + + /* check if user is on vacation. TODO: use user's timezone */ + if( (time() - strtotime($start) >0) && + (strtotime($stop) - time() >0)) + return array ($start,$stop,$comment); + else + return NULL; +} ?> diff --git a/include/output.php b/include/output.php index 485daf9..6823b4d 100644 --- a/include/output.php +++ b/include/output.php @@ -298,7 +298,7 @@ function output_header() e-Doko - + diff --git a/include/preferences.php b/include/preferences.php index 6557330..a319130 100644 --- a/include/preferences.php +++ b/include/preferences.php @@ -7,7 +7,7 @@ if(!isset($HOST)) $name = $_SESSION["name"]; $email = DB_get_email('name',$name); -$myid = DB_get_userid('email',$email); +$myid = DB_get_userid('email',$email); if(!$myid) return; @@ -33,6 +33,79 @@ DB_update_user_timestamp($myid); * update the database and track changes with a variable, so that * we can later highlight the changed value */ +if(myisset('vacation_start','vacation_stop','vacation_comment')) + { + $vacation_start = $_REQUEST['vacation_start'].' 00:00:00'; + $vacation_stop = $_REQUEST['vacation_stop'].' 23:59:59'; + $vacation_comment = $_REQUEST['vacation_comment']; + + /* check if everything is valid */ + if(!strtotime($vacation_start)) + $changed_vacation = -1; + if(!strtotime($vacation_stop)) + $changed_vacation = -1; + + /* test if we should delete the entry */ + if($vacation_start == '- 00:00:00') + { + $result = DB_query("DELETE FROM User_Prefs". + " WHERE user_id='$myid' AND pref_key='vacation start'" ); + $result = DB_query("DELETE FROM User_Prefs". + " WHERE user_id='$myid' AND pref_key='vacation stop'" ); + $result = DB_query("DELETE FROM User_Prefs". + " WHERE user_id='$myid' AND pref_key='vacation comment'" ); + $changed_vacation = 1; + } + /* change in database if format is ok */ + else if($changed_vacation>=0) + { + /* only change if different from current value */ + if($vacation_start!=$PREF['vacation_start']) + { + $result = DB_query("SELECT * from User_Prefs". + " WHERE user_id='$myid' AND pref_key='vacation start'" ); + if( DB_fetch_array($result)) + $result = DB_query("UPDATE User_Prefs SET value=".DB_quote_smart($vacation_start). + " WHERE user_id='$myid' AND pref_key='vacation start'" ); + else + $result = DB_query("INSERT INTO User_Prefs VALUES(NULL,'$myid','vacation start',". + DB_quote_smart($vacation_start).")"); + + $changed_vacation = 1; + } + + /* same for the stop date */ + if($vacation_stop!=$PREF['vacation_stop']) + { + $result = DB_query("SELECT * from User_Prefs". + " WHERE user_id='$myid' AND pref_key='vacation stop'" ); + if( DB_fetch_array($result)) + $result = DB_query("UPDATE User_Prefs SET value=".DB_quote_smart($vacation_stop). + " WHERE user_id='$myid' AND pref_key='vacation stop'" ); + else + $result = DB_query("INSERT INTO User_Prefs VALUES(NULL,'$myid','vacation stop',". + DB_quote_smart($vacation_stop).")"); + + $changed_vacation = 1; + } + + /* does the user want to add a comment? */ + if($vacation_comment!=$PREF['vacation_comment']) + { + $result = DB_query("SELECT * from User_Prefs". + " WHERE user_id='$myid' AND pref_key='vacation comment'" ); + if( DB_fetch_array($result)) + $result = DB_query("UPDATE User_Prefs SET value=".DB_quote_smart($vacation_comment). + " WHERE user_id='$myid' AND pref_key='vacation comment'" ); + else + $result = DB_query("INSERT INTO User_Prefs VALUES(NULL,'$myid','vacation comment',". + DB_quote_smart($vacation_comment).")"); + + $changed_vacation = 1; + } + } + } + if(myisset("timezone")) { $newtimezone = $_REQUEST['timezone']; @@ -174,8 +247,28 @@ echo "
\n"; echo "

Your settings are

\n"; echo "
\n"; echo " Game-related\n"; - echo " \n"; + +echo " \n"; +if($PREF['vacation_start']) + $value = substr($PREF['vacation_start'],0,10); + else + $value = ''; +echo " \n"; +if($PREF['vacation_stop']) + $value = substr($PREF['vacation_stop'],0,10); + else + $value = ''; +echo " \n"; +if($PREF['vacation_comment']) + $value = $PREF['vacation_comment']; +else + $value = ''; +echo " \n"; +echo "\n"; echo "
Vacation: start:stop:comment:"; +if($changed_vacation == 1) echo "changed"; +if($changed_vacation == -1) echo "wrong date format"; +echo "
use YYYY-MM-DDuse '-' in start field to unset vacation
Notification: \n"; echo "