X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=index.php;h=c56560782e144977b467a9fdc3006abc61cf8ff3;hp=aec7c7d1ef7f27808183fab71876b442a927bf79;hb=092ae96405d4da11bc392dc92e7e103ce48b6045;hpb=1f6dbb2039311c94e7932fac52626442d215d2b5 diff --git a/index.php b/index.php index aec7c7d..c565607 100644 --- a/index.php +++ b/index.php @@ -6,40 +6,45 @@ include_once("output.php"); /* html output only */ include_once("db.php"); /* database only */ include_once("functions.php"); /* the rest */ -/* check if some variables are set in the config file, else set defaults */ -if(!isset($EmailName)) - $EmailName="[DoKo] "; - -/* in case work has to be done on the database or other section we can - * shut down the server and tell people to come back later - */ -if(0) - { - output_header(); - echo "Working on the database...please check back in a few mintues"; - output_footer(); - exit(); - } +config_check(); if(DB_open()<0) { output_header(); - echo "Database error, can't connect..."; + echo "Database error, can't connect... Please wait a while and try again. ". + "If the problem doesn't go away feel free to contact $ADMIN_NAME at $ADMIN_EMAIL."; output_footer(); exit(); } +/* start a session, if it is not already running */ +session_start(); + /* done major error checking, output header of HTML page */ output_header(); /* check if we want to start a new game */ -if(myisset("new")) +if(myisset("logout")) { - $names = DB_get_all_names(); - output_form_for_new_game($names); + session_unset(); + session_destroy(); + $_SESSION = array(); + echo "you are now logged out!"; + } +else if(myisset("new")) + { + if( isset($_SESSION["name"]) ) + { + $names = DB_get_all_names(); + output_form_for_new_game($names); + } + else + { + echo "Please log in."; + } } /*check if everything is ready to set up a new game */ - else if( myisset("PlayerA", "PlayerB","PlayerC","PlayerD","dullen","schweinchen" )) + else if( myisset("PlayerA", "PlayerB","PlayerC","PlayerD","dullen","schweinchen","call" )) { $PlayerA = $_REQUEST["PlayerA"]; $PlayerB = $_REQUEST["PlayerB"]; @@ -48,7 +53,8 @@ if(myisset("new")) $dullen = $_REQUEST["dullen"]; $schweinchen = $_REQUEST["schweinchen"]; - + $call = $_REQUEST["call"]; + $EmailA = DB_get_email_by_name($PlayerA); $EmailB = DB_get_email_by_name($PlayerB); $EmailC = DB_get_email_by_name($PlayerC); @@ -70,17 +76,7 @@ if(myisset("new")) /* create random numbers */ $randomNR = create_array_of_random_numbers($useridA,$useridB,$useridC,$useridD); $randomNRstring = join(":",$randomNR); - - /* get ruleset information or create new one */ - $ruleset = DB_get_ruleset($dullen,$schweinchen); - if($ruleset <0) - { - echo "Error defining ruleset: $ruleset"; - output_footer(); - DB_close(); - exit(); - }; - + /* create game */ $followup = NULL; if(myisset("followup") ) @@ -90,7 +86,7 @@ if(myisset("new")) $ruleset = DB_get_ruleset_by_gameid($followup); /* just copy ruleset from old game, this way no manipulation is possible */ if($session) - mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1','1','pre',". + mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1',NULL,'pre',". "'$ruleset','$session' ,NULL)"); else { @@ -98,13 +94,28 @@ if(myisset("new")) $max = DB_get_max_session(); $max++; mysql_query("UPDATE Game SET session='".$max."' WHERE id=".DB_quote_smart($followup)); - mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1','1','pre',". + mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1',NULL,'pre',". "'$ruleset','$max' ,NULL)"); } } else - mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1','1','pre', ". - "'$ruleset',NULL ,NULL)"); + { + /* get ruleset information or create new one */ + $ruleset = DB_get_ruleset($dullen,$schweinchen,$call); + if($ruleset <0) + { + myerror("Error defining ruleset: $ruleset"); + output_footer(); + DB_close(); + exit(); + }; + /* get max session */ + $max = DB_get_max_session(); + $max++; + + mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1',NULL,'pre', ". + "'$ruleset','$max' ,NULL)"); + } $game_id = mysql_insert_id(); /* create hash */ @@ -179,26 +190,26 @@ else if(myisset("cancle","me")) /* 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 $gameid has been cancled since nothing happend for a while and $myname requested it.\n"; + "Game ".DB_format_gameid($gameid)." has been cancled since nothing happend for a while and $myname requested it.\n"; $userids = DB_get_all_userid_by_gameid($gameid); foreach($userids as $user) { $To = DB_get_email_by_userid($user); - mymail($To,$EmailName."game $gameid cancled (timed out)",$message); + mymail($To,$EmailName."game ".DB_format_gameid($gameid)." cancled (timed out)",$message); } /* delete everything from the dB */ DB_cancel_game($me); - echo "
Game $gameid has been cancled.
Game ".DB_format_gameid($gameid)." has been cancled.
You need to wait longer before you can cancle a game...
\n"; @@ -220,6 +231,9 @@ else if(myisset("me")) exit(); } + if(isset($_SESSION["name"])) + output_status($_SESSION["name"]); + /* the user had done something, update the timestamp */ DB_update_user_timestamp($myid); @@ -235,7 +249,6 @@ else if(myisset("me")) DB_get_PREF($myid); /* end set pref */ - /* get rule set for this game */ $result = mysql_query("SELECT * FROM Rulesets". " LEFT JOIN Game ON Game.ruleset=Rulesets.id ". @@ -246,7 +259,6 @@ else if(myisset("me")) $RULES["schweinchen"] = $r[3]; $RULES["call"] = $r[4]; - /* get some infos about the game */ $gametype = DB_get_gametype_by_gameid($gameid); $gamestatus = DB_get_game_status_by_gameid($gameid); @@ -256,19 +268,88 @@ else if(myisset("me")) $gametype = DB_get_solo_by_gameid($gameid); $GT = $gametype." ".$GT; } + + /* does anyone have both foxes */ + $GAME["schweinchen"]=0; + for($i=1;$i<5;$i++) + { + $hash = DB_get_hash_from_game_and_pos($gameid,$i); + $cards = DB_get_all_hand($hash); + if( in_array("19",$cards) && in_array("20",$cards) ) + { + $GAME["schweinchen"]=1; + $GAME["schweinchen-who"]=$hash; + } + }; + + /* put everyting in a form */ + echo "\n"; output_footer(); DB_close(); exit(); } /* user status page */ - else if(myisset("email","password")) +else if( myisset("email","password") || isset($_SESSION["name"]) ) { /* test id and password, should really be done in one step */ - $email = $_REQUEST["email"]; - $password = $_REQUEST["password"]; + if(!isset($_SESSION["name"])) + { + $email = $_REQUEST["email"]; + $password = $_REQUEST["password"]; + } + else + { + $name = $_SESSION["name"]; + $email = DB_get_email_by_name($name); + $password = DB_get_passwd_by_name($name); + }; - if(myisset("forgot")) { $ok = 1; - $uid = DB_get_userid_by_email($email); - if(!$uid) + $myid = DB_get_userid_by_email($email); + if(!$myid) $ok = 0; if($ok) { - echo "Hmm, you forgot your passwort...nothing I can do at the moment:( "; - echo " you need to email Arun for now... in the future it will be all automated and an "; - echo "email with a new password will go to $email."; + /* check how many entries in recovery table */ + $number = DB_get_number_of_passwords_recovery($myid); + + /* if less than N recent ones, add a new one and send out email */ + if( $number < 5 ) + { + echo "Ok, I send you a new password.Session:
\n";
+ echo " p = pre-game phase ";
+ echo "P = game in progess ";
+ echo "F = game finished
";
+ echo "
These are your games that haven't started yet:
\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'" );
+ $output = array();
+ $result = mysql_query("SELECT Hand.hash,Hand.game_id,Game.mod_date,Game.player,Game.status from Hand".
+ " LEFT JOIN Game ON Game.id=Hand.game_id".
+ " WHERE user_id='$myid'".
+ " ORDER BY Game.session,Game.create_date" );
+ $gamenrold = -1;
+ echo "
\n"; while( $r = mysql_fetch_array($result,MYSQL_NUM)) { - echo "game #".$r[1]." "; - if($r[3]) + $game = DB_format_gameid($r[1]); + $gamenr = (int) $game; + if($gamenrold < $gamenr) { - if($r[3]==$uid) - echo "(it's your turn)\n"; + if($gamenrold!=-1) + echo " | |||
$gamenr: | "; else - { - $name = DB_get_name_by_userid($r[3]); - echo "(it's $name's turn)\n"; - }; + echo "$gamenr: | ";
+ $gamenrold = $gamenr;
}
- 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 "\n"; + if($r[4]=='pre') + { + echo "\n p "; - echo " These are the games you are playing in: | \n ";
+ if($r[3])
{
- $name = DB_get_name_by_userid($r[3]);
- echo "(it's $name's turn)\n";
- };
+ if($r[3]==$myid)
+ 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)";
+
}
- 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 "\n"; - - - echo " And these are your games that are already done: |
Registered players:
\n";
+ echo "
\n"; echo implode(", ",$names)."\n"; echo "
\n"; - - echo "Want to start a new game? Visit this page.
"; } } else { - echo "Sorry email and password don't match