summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun Persaud <arun@nubati.net>2009-01-30 21:05:32 -0800
committerArun Persaud <arun@nubati.net>2009-01-30 21:05:32 -0800
commitc1585e23cb3ea757674c234c9193889b4f2f2090 (patch)
tree3f87836cef1a81e400e4a660c0433ad4080acc97
parentee08bf05ddb0bb5722b0f8b1569d7ab4473a798d (diff)
downloade-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.php23
-rw-r--r--include/functions.php51
-rw-r--r--include/output.php2
-rw-r--r--include/preferences.php97
-rw-r--r--include/user.php21
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&amp;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&amp;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&amp;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&amp;me=".$r[0]."\">Cancel?</a>".