X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=index.php;h=71d40506c27d5cd52d2000b8dad41714ecd8fda7;hp=64068373728db048265eaecee9d2ec4ee4cb5a40;hb=d8eac0035f97a64371557e7da8b9730fe28d8788;hpb=d5233803bcd19376ea074e27205a77a0148880ac diff --git a/index.php b/index.php index 6406837..71d4050 100644 --- a/index.php +++ b/index.php @@ -1,415 +1,148 @@ - - -
-
",$message);
- echo " Game ".DB_format_gameid($gameid)." has been cancled. You need to wait longer before you can cancle a game... no game in progress, please input 4 names and email addresses, please make sure that the addresses are correct! aehm... at the moment please just answer everything with no, still need to implement this These are your games that haven't started yet: These are the games you are playing in: And these are your games that are already done: Registered players: Want to start a new game? Visit this page.
To: $To
Subject: $Subject
$message
";
- }
- else
- mail($To,$Subject,$message);
- return;
-}
-
-function parse_status()
-{
- global $game,$history,$player,$hash,$lines;
-
- $game["init"] = 0;
- $game["solo-who"] = -1;
- $game["solo-what"] = "todo";
- $game["wedding"] = -1;
- $game["poverty"] = -1;
- $game["nines"] = -1;
- $game["startplayer"] = 0;
-
- for($i=0;$i<4;$i++)
- {
- $tmp = explode( ":",$lines[$i]);
- $hash[$i] = $tmp[0];
- $player[$tmp[0]]["number"] = $i;
- $player[$tmp[0]]["hash"] = $tmp[0];
- $player[$tmp[0]]["name"] = $tmp[1];
- $player[$tmp[0]]["email"] = $tmp[2];
- $player[$tmp[0]]["option"] = $tmp[3];
- $player[$tmp[0]]["points"] = $tmp[4];
- $player[$tmp[0]]["cards"] = $tmp[5];
- if(ereg("s",$tmp[3])) $game["init"]++;
- if(ereg("P",$tmp[3])) $game["poverty"] = $i;
- if(ereg("N",$tmp[3])) $game["nines"] = $i;
- if(ereg("W",$tmp[3])) $game["wedding"] = $i;
- if(ereg("[OSQJCAH]",$tmp[3]) && ($game["solo-who"]<0) )
- {
- $game["solo-who"] = $i;
- $game["startplayer"] = $i;
- }
-
- }
- /* save the game history */
- for($i=4;$i
\n";
+ echo "perhaps the game has been cancled, check by login in here.";
+ output_footer();
+ DB_close();
+ exit();
+ }
+
+ DB_update_user_timestamp($myid);
+
+ /* get some information from the DB */
+ $gameid = DB_get_gameid_by_hash($me);
+ $myname = DB_get_name_by_hash($me);
+
+ /* check if game really is old enough */
+ $result = mysql_query("SELECT mod_date from Game WHERE id='$gameid' " );
+ $r = mysql_fetch_array($result,MYSQL_NUM);
+ if(time()-strtotime($r[0]) > 60*60*24*30) /* = 1 month */
+ {
+ $message = "Hello, \n\n".
+ "Game ".DB_format_gameid($gameid)." has been cancled since nothing happend for a while and $myname requested it.\n";
- fwrite($output, "$hashC:$PlayerC:$EmailC:::" );
- for(;$i<35;$i++)
- fwrite($output,"$randomNR[$i];" );
- fwrite($output,"$randomNR[35]:" ); $i++;
- fwrite($output,"\n");
+ $userids = DB_get_all_userid_by_gameid($gameid);
+ foreach($userids as $user)
+ {
+ $To = DB_get_email_by_userid($user);
+ mymail($To,$EmailName."game ".DB_format_gameid($gameid)." cancled (timed out)",$message);
+ }
- fwrite($output, "$hashD:$PlayerD:$EmailD:::");
- for(;$i<47;$i++)
- fwrite($output,"$randomNR[$i];" );
- fwrite($output,"$randomNR[47]:" );
- fwrite($output,"\n");
+ /* delete everything from the dB */
+ DB_cancel_game($me);
- fclose($output);
+ echo "
";
- }
- else
- { /* show the hand */
- if($_REQUEST["in"]=="no")
- {
- for($i=0;$i<4;$i++)
- {
- $message = "Hello ".$player[$hash[$i]]["name"].",\n\n".
- "the game has been canceled due to the request of one of the players.\n";
- mymail($player[$hash[$i]]["email"],"[DoKo-Debug] the game has been canceled",$message);
- }
- $output = fopen("status.txt","w");
- if($output)
- fclose($output);
- else
- echo "problem opening file";
- }
- else
+ /* check how many entries in recovery table */
+ $number = DB_get_number_of_passwords_recovery($uid);
+
+ /* if less than N recent ones, add a new one and send out email */
+ if( $number < 5 )
{
- if($_REQUEST["update"]=="card") $player[$b]["option"].="c";
- if($_REQUEST["update"]=="turn") $player[$b]["option"].="t";
-
- $player[$b]["option"].="i";
+ echo "Ok, I send you a new password.
";
+ if($number >1)
+ echo "N.B. You tried this already $number times during the last day and it will only work ".
+ " 5 times during a day.
";
+ echo "The new password will be valid for one day, make sure you reset it to something else.
";
+ echo "Back to the main page.";
- save_status();
+ $TIME = (string) time(); /* to avoid collisions */
+ $hash = md5("Anewpassword".$email.$TIME);
+ $newpw = substr($hash,1,8);
- $allcards = $player[$b]["cards"];
- $mycards = explode(";",$allcards);
+ $message = "Someone (hopefully you) requested a new password. \n".
+ "You can use this email and the following password: \n".
+ " $newpw \n".
+ "to log into the server. The new password is valid for 24h, so make\n".
+ "sure you reset your password to something new. Your old password will\n".
+ " also still be valid until you set a new one\n";
+ mymail($email,$EmailName."recovery ",$message);
- sort($mycards);
- echo "your cards are
";
- foreach($mycards as $card)
- {
- display_card($card);
- }
- echo "
\n";
- ?>
-
";
- }
- else if( ereg("s",$player[$c]["option"]) && $game["init"]<4 )
- {
- echo "just wait for the game to start";
- }
- else if($game["init"]<4)
- {
- if( $_REQUEST["solo"]!="No")
- {
- switch($_REQUEST["solo"])
- {
- case "No trump":
- $player[$c]["option"].="O";
- break;
- case "Normal solo":
- $player[$c]["option"].="S";
- break;
- case "Queen solo":
- $player[$c]["option"].="Q";
- break;
- case "Jack solo":
- $player[$c]["option"].="J";
- break;
- case "Club solo":
- $player[$c]["option"].="C";
- break;
- case "Spade solo":
- $player[$c]["option"].="A";
- break;
- case "Hear solo":
- $player[$c]["option"].="H";
- break;
- }
- }
- else if($_REQUEST["wedding"] == "yes")
- {
- echo "wedding was chosen
";
- $player[$c]["option"].="W";
- }
- else if($_REQUEST["poverty"] == "yes")
- {
- echo "poverty was chosen
";
- $player[$c]["option"].="P";
- }
- else if($_REQUEST["nines"] == "yes")
- {
- echo "nines was chosen
";
- $player[$c]["option"].="N";
+ DB_set_recovery_password($uid,md5($newpw));
}
-
- $message = "you're in. once everyone has filled out the form,".
- "the game will start and you'll get an eamil on your turn\n";
- mymail($player[$c]["email"],"[DoKo-debug] the game will start soon",$message);
-
- $player[$c]["option"].="s";
- save_status();
- if(file_exists("status.txt"))
- $lines = file("status.txt");
else
- die("no file");
- parse_status();
-
- if($game["init"]==4)
{
- $message = "The game can start now, it's your turn, please use this link to play a card:\n".
- $host."?me=".$hash[$game["startplayer"]]."\n";
- mymail($player[$hash[$game["startplayer"]]]["email"],"[DoKo-debug] let's go",$message);
+ echo "Sorry you already tried 5 times during the last 24h.
".
+ "You need to use one of those passwords or wait to get a new one.
";
+ echo "Back to the main page.";
}
-
}
- }
- if($game["init"]==4)
- {
- /* check for sickness*/
- /***** someone has 5 nines and no one is playing solo=> cance5Al game */
- if($game["nines"]>=0 && $game["solo-who"]<0)
+ else
{
- $message = $player[$hash[$game["poverty"]]]["nines"]." has more than 4 nines. Game aborted!\n";
- for($i=0;$i<4;$i++)
- {
- mymail($player[$hash[$i]]["email"],"[DoKo-debug] the game has been canceled",$message);
- }
- $output = fopen("status.txt","w");
- if($output)
- fclose($output);
+ if($email=="")
+ echo "You need to give me an email address!
".
+ "Please try again.";
else
- echo "problem opening file";
- }
+ echo "Couldn't find a player with this email!
".
+ "Please contact Arun, if you think this is a mistake
".
+ "or else try again.";
+ }
+ }
+ else
+ {
+ /* verify password and email */
+ if(strlen($password)!=32)
+ $password = md5($password);
+
+ $ok = 1;
+ $uid = DB_get_userid_by_email_and_password($email,$password);
+ if(!$uid)
+ $ok = 0;
+
+ if($ok)
+ {
+ DB_get_PREF($uid);
- /* who is requesting this*/
- if(!isset($_REQUEST["me"]))
- {
- if(!isset($_REQUEST["recovery"]))
- {
- echo "a game is in progress, but you are not playing.
";
- echo "In case you are playing, but lost your email or can't access the game anymore, please input your email here:
";
-?>
-
-=0)
+ if(myisset("setpref"))
{
- $message = "Please try this link: ".$host."?me=".$hash[$ok]."\n".
- "\n if this doesn't work, contact the admin.\n";
- mymail($recovery,"[DoKo-Debug] recovery ",$message);
- echo "email has been sent.";
+ $setpref=$_REQUEST["setpref"];
+ switch($setpref)
+ {
+ case "germancards":
+ case "englishcards":
+ $result = mysql_query("SELECT * from User_Prefs".
+ " WHERE user_id='$uid' AND pref_key='cardset'" );
+ if( mysql_fetch_array($result,MYSQL_NUM))
+ $result = mysql_query("UPDATE User_Prefs SET value=".DB_quote_smart($setpref).
+ " WHERE user_id='$uid' AND pref_key='cardset'" );
+ else
+ $result = mysql_query("INSERT INTO User_Prefs VALUES(NULL,'$uid','cardset',".
+ DB_quote_smart($setpref).")");
+ echo "Ok, changed you preferences for the cards.\n";
+ break;
+ }
}
- else
- {
- echo "can't find this email address, sorry.";
- };
- }
- }
- else
- {
- $me = $_REQUEST["me"];
+ else if(myisset("passwd"))
+ {
+ if( $_REQUEST["passwd"]=="ask" )
+ {
+ /* reset password form*/
+ output_password_recovery($email,$password);
+ }
+ else if($_REQUEST["passwd"]=="set")
+ {
+ /* reset password */
+ $ok = 1;
- echo "game in progress and you are in it
";
- if($game["solo-who"]>=0)
- echo $player[$hash[$game["solo-who"]]]["name"]." is playing a ".$game["solo-what"]." solo!
";
- else if($game["wedding"]>=0)
- echo $player[$hash[$game["wedding"]]]["name"]." is playing a wedding!
";
-
- foreach($history as $play)
- {
- echo "
";
+ /* check if old password matches */
+ $oldpasswd = md5($_REQUEST["password0"]);
+ if(!( ($password == $oldpasswd) || DB_check_recovery_passwords($oldpasswd,$email) ))
+ $ok = -1;
+ /* check if new passwords are types the same twice */
+ if($_REQUEST["password1"] != $_REQUEST["password2"] )
+ $ok = -2;
+
+ switch($ok)
+ {
+ case '-2':
+ echo "The new passwords don't match.
";
+ break;
+ case '-1':
+ echo "The old password is not correct.
";
+ break;
+ case '1':
+ echo "Changed the password.
";
+ mysql_query("UPDATE User SET password='".md5($_REQUEST["password1"]).
+ "' WHERE id=".DB_quote_smart($uid));
+ break;
+ }
+ /* set password */
+ }
+ }
+ else /* output default user page */
+ {
+ $time = DB_get_user_timestamp($uid);
+ $unixtime = strtotime($time);
+
+ $offset = DB_get_user_timezone($uid);
+ $zone = return_timezone($offset);
+ date_default_timezone_set($zone);
- $trick = explode(":",$play);
-
- $last=-2;
- /* found old trick, display it */
- for($i=0;$i
";
+
+ DB_update_user_timestamp($uid);
+
+ echo "
\n";
+ $result = mysql_query("SELECT Hand.hash,Hand.game_id,Game.mod_date,Game.player from Hand".
+ " LEFT JOIN Game On Hand.game_id=Game.id".
+ " WHERE Hand.user_id='$uid' AND Game.status='pre'" );
+ while( $r = mysql_fetch_array($result,MYSQL_NUM))
+ {
+ echo "game".DB_format_gameid($r[1])." ";
+ if($r[3]==$uid || $r[3]==NULL)
+ echo "(it's your turn)\n";
+ else
+ {
+ $name = DB_get_name_by_userid($r[3]);
+ echo "(it's $name's turn)\n";
+ };
+
+ if(time()-strtotime($r[2]) > 60*60*24*30)
+ echo " The game has been running for over a month.".
+ " Do you want to cancel it? yes".
+ " (clicking here is final and can't be restored)";
+ echo "
";
+ }
+ echo "
";
- }
- }
- }
- else
- echo "seems like you don't have that card
";
-
- }
-
- }
- else if(isset($_REQUEST["win"]) && strlen($history[sizeof($history)-1])>3)
- {
- $win=$_REQUEST["win"];
- $history[]=$win.":\n";
- /* count points of the last trick */
- $points=0;
-
- $tmp = explode(":",$history[sizeof($history)-2]);
- for($i=0;$i<4;$i++)
- {
- $tmp2 = explode("->",$tmp[$i]);
- $c = $tmp2[1];
- $points += card_value($c);
- }
- $player[$hash[$win]]["points"]+=$points;
- echo "
".$player[$hash[$win]]["name"]." won: $points Points
";
-
- save_status();
- }
- echo "
";
+ echo "
\n";
+ $result = mysql_query("SELECT Hand.hash,Hand.game_id,Game.mod_date,Game.player from Hand".
+ " LEFT JOIN Game On Hand.game_id=Game.id".
+ " WHERE Hand.user_id='$uid' AND Game.status='play'" );
+ while( $r = mysql_fetch_array($result,MYSQL_NUM))
+ {
+ echo "game ".DB_format_gameid($r[1])." ";
+ if($r[3])
+ {
+ if($r[3]==$uid)
+ echo "(it's your turn)\n";
+ else
+ {
+ $name = DB_get_name_by_userid($r[3]);
+ echo "(it's $name's turn)\n";
+ };
+ }
+ if(time()-strtotime($r[2]) > 60*60*24*30)
+ echo " The game has been running for over a month.".
+ " Do you want to cancel it? yes".
+ " (clicking here is final and can't be restored)";
+ echo "
";
+ }
+ echo "
Game: \n";
+ $output = array();
+ $result = mysql_query("SELECT hash,game_id from Hand WHERE user_id='$uid' AND status='gameover'" );
+ while( $r = mysql_fetch_array($result,MYSQL_NUM))
+ $output[] = "".DB_format_gameid($r[1])." ";
+ echo implode(", ",$output)."
\n";
+ echo implode(", ",$names)."\n";
+ echo "
";
+ }
+ };
+ output_footer();
+ DB_close();
+ exit();
+ }
+/* default login page */
+ else
+ {
+ $pre[0]=0;$game[0]=0;$done[0]=0;
+ $r=mysql_query("SELECT COUNT(id) FROM Game GROUP BY status");
+ if($r) {
+ $pre = mysql_fetch_array($r,MYSQL_NUM);
+ $game = mysql_fetch_array($r,MYSQL_NUM);
+ $done = mysql_fetch_array($r,MYSQL_NUM);
+ }
- $tmp = explode(":",$history[sizeof($history)-1]);
+ $r=mysql_query("SELECT AVG(datediff(mod_date,create_date)) FROM Game where status='gameover' ");
+ if($r)
+ $avgage= mysql_fetch_array($r,MYSQL_NUM);
+ else
+ $avgage[0]=0;
- if(sizeof($tmp)==5)
- {
- ?>
-
-the next player
";
-
- if(strlen(trim($player[$me]["cards"]))==0)
- {
- echo "
game over, count points
";
- for($i=0;$i<4;$i++)
- {
- echo $player[$hash[$i]]["name"]." got ".$player[$hash[$i]]["points"]."
";
- }
- }
- }
- if($hash[$next]==$me && strlen(trim($player[$me]["cards"]))>0 )
- {
-
- echo "ITS YOUR TURN
";
- $allcards = trim($player[$me]["cards"]);
- $mycards = explode(";",$allcards);
-
- sort($mycards);
- echo "your cards are
";
- foreach($mycards as $card)
- {
- display_link_card($card,$me);
- }
- echo "
\n";
- }
- echo "
";
-
- }
- }
- }
+output_footer();
- }
+DB_close();
+/*
+ *Local Variables:
+ *mode: php
+ *mode: hs-minor
+ *End:
+ */
?>
-