diff options
author | Arun Persaud <arun@nubati.net> | 2009-01-30 21:05:32 -0800 |
---|---|---|
committer | Arun Persaud <arun@nubati.net> | 2009-01-30 21:05:32 -0800 |
commit | c1585e23cb3ea757674c234c9193889b4f2f2090 (patch) | |
tree | 3f87836cef1a81e400e4a660c0433ad4080acc97 | |
parent | ee08bf05ddb0bb5722b0f8b1569d7ab4473a798d (diff) | |
download | e-DoKo-c1585e23cb3ea757674c234c9193889b4f2f2090.tar.gz e-DoKo-c1585e23cb3ea757674c234c9193889b4f2f2090.tar.bz2 e-DoKo-c1585e23cb3ea757674c234c9193889b4f2f2090.zip |
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).
-rw-r--r-- | css/standard018.css (renamed from css/standard017.css) | 7 | ||||
-rw-r--r-- | include/db.php | 23 | ||||
-rw-r--r-- | include/functions.php | 51 | ||||
-rw-r--r-- | include/output.php | 2 | ||||
-rw-r--r-- | include/preferences.php | 97 | ||||
-rw-r--r-- | include/user.php | 21 |
6 files changed, 193 insertions, 8 deletions
diff --git a/css/standard017.css b/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 " <div class=\"table".($pos-1)."\">\n"; - if(!$debug) - echo " $name \n"; + + if($debug) + echo " <a href=\"".$INDEX."?action=game&me=".$hash."\">"; + if($vacation = check_vacation($user)) + { + $start = $vacation[0]; + $stop = substr($vacation[1],0,10); + $comment = $vacation[2]; + + $title = "begin: $start end: $stop $comment"; + echo " <span class=\"vacation\" title=\"$title\">$name (on vacation until $stop)</span> \n"; + } else - echo " <a href=\"".$INDEX."?action=game&me=".$hash."\">$name</a>\n"; + echo " $name \n"; + if($debug) + echo"</a>\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() <title>e-Doko</title> <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type" /> <link rel="shortcut icon" type="image/x-icon" href="pics/edoko-favicon.png" /> - <link rel="stylesheet" type="text/css" href="css/standard017.css" /> + <link rel="stylesheet" type="text/css" href="css/standard018.css" /> <script type="text/javascript" src="include/game.js"> </script> </head> <body onload="high_last();"> 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 " <form action=\"index.php?action=prefs\" method=\"post\">\n"; echo " <h2>Your settings are</h2>\n"; echo " <fieldset>\n"; echo " <legend>Game-related</legend>\n"; - echo " <table>\n"; + +echo " <tr><td>Vacation: </td>\n"; +if($PREF['vacation_start']) + $value = substr($PREF['vacation_start'],0,10); + else + $value = ''; +echo " <td>start:<input type=\"text\" id=\"vacation_start\" name=\"vacation_start\" size=\"10\" maxlength=\"10\" value=\"$value\" /></td>\n"; +if($PREF['vacation_stop']) + $value = substr($PREF['vacation_stop'],0,10); + else + $value = ''; +echo " <td>stop:<input type=\"text\" id=\"vacation_stop\" name=\"vacation_stop\" size=\"10\" maxlength=\"10\" value=\"$value\" /></td>\n"; +if($PREF['vacation_comment']) + $value = $PREF['vacation_comment']; +else + $value = ''; +echo " <td>comment:<input type=\"text\" id=\"vacation_comment\" name=\"vacation_comment\" size=\"10\" maxlength=\"50\" value=\"$value\" />"; +if($changed_vacation == 1) echo "changed"; +if($changed_vacation == -1) echo "wrong date format"; +echo "</td></tr>\n"; +echo "<tr><td></td><td>use YYYY-MM-DD</td><td>use '-' in start field to unset vacation</td></tr>\n"; echo " <tr><td>Notification: </td><td>\n"; echo " <select id=\"notify\" name=\"notify\" size=\"1\">\n"; if($PREF['email']=="emailaddict") diff --git a/include/user.php b/include/user.php index 3b5303c..6cc9637 100644 --- a/include/user.php +++ b/include/user.php @@ -107,6 +107,15 @@ else /* display all games the user has played */ echo "<div class=\"user\">"; + + if($myvacation = check_vacation($myid)) + { + $vac_start = $myvacation[0]; + $vac_stop = $myvacation[1]; + $vac_comment = $myvacation[2]; + echo "<p class=\"vacation\">Enjoy your vacation (don't forgot to change your settings once you're back). Between $vac_start and $vac_stop other users will see the following message: $vac_comment.</p>\n"; + } + echo "<h4>These are all your games:</h4>\n"; /* output legend */ echo "<p>Session: <br />\n"; @@ -164,10 +173,20 @@ else { $name = DB_get_name('userid',$r[3]); $gameid = $r[1]; + /* check if we need to send out a reminder */ if(DB_get_reminder($r[3],$gameid)==0) if(time()-strtotime($r[2]) > 60*60*24*7) echo "<a href=\"$INDEX?action=reminder&me=".$r[0]."\">Send a reminder.</a>"; - echo "(it's $name's turn)\n"; + + /* check vacaction status of this user */ + if($vacation=check_vacation($r[3])) + { + $stop = substr($vacation[1],0,10); + $title = 'begin:'.substr($vacation[0],0,10).' end:'.$vacation[1].' '.$vacation[2]; + echo "(it's <span class=\"vacation\" title=\"$title\">$name's (on vacation until $stop)</span> turn)\n"; + } + else + echo "(it's $name's turn)\n"; }; if(time()-strtotime($r[2]) > 60*60*24*30) echo "<a href=\"$INDEX?action=cancel&me=".$r[0]."\">Cancel?</a>". |