X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=index.php;h=550144f0805a5d31d898d4ba8b267dbc84ab1c03;hp=2eb0cf75f6b0cea529b7adcda9f30e54806a4ec7;hb=89a2acbccdd9d15f6238662c8b2cebcf475c38aa;hpb=f9ebada8e82bef69014f86b14b92534a266164bc;ds=sidebyside diff --git a/index.php b/index.php index 2eb0cf7..550144f 100644 --- a/index.php +++ b/index.php @@ -1,415 +1,89 @@ - - -
-
",$message);
- echo " your cards are: 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 the games you are playing in: registered players: Want to start a new game? remember 4 names from the list above and 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.";
+ exit();
+ }
- /* write initial status into file */
- $output = fopen("status.txt","w");
- if ($output)
+ 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);
+ $mystatus = DB_get_status_by_hash($me);
+
+ switch($mystatus)
{
- fwrite($output, "$hashA:$PlayerA:$EmailA:::" );
- for($i=0;$i<11;$i++)
- fwrite($output,"$randomNR[$i];" );
- fwrite($output,"$randomNR[11]:" ); $i++;
- fwrite($output,"\n");
+ case 'start':
+ check_want_to_play($me);
+ DB_set_hand_status_by_hash($me,'init');
+ break;
+ case 'init':
+ if( !myisset("in","update") )
+ {
+ DB_set_hand_status_by_hash($me,'start');
+ echo "you need to answer both question";
+ }
+ else
+ {
+ if($_REQUEST["in"] == "no")
+ {
+ echo "TODO: email everyone that the game has been canceled.
";
+ /*something like need to modify for DB backend
+ 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);
+ }
+ */
+ /* delete everything from the dB */
+ DB_cancel_game($me);
+ }
+ else
+ {
+ echo "thanks for joining the game... please scroll down";
+ echo "TODO: make this page nicer
";
+ echo "TODO: set card pref
";
+
+ $mycards = DB_get_hand($me);
+ sort($mycards);
+ echo "
\n";
+ foreach($mycards as $card)
+ display_card($card);
+ echo "
\n";
+ DB_set_sickness_by_hash($me,"wedding");
+ }
+ else if($_REQUEST["poverty"] == "yes")
+ {
+ echo "poverty was chosen
\n";
+ DB_set_sickness_by_hash($me,"poverty");
+ }
+ else if($_REQUEST["nines"] == "yes")
+ {
+ echo "nines was chosen
\n";
+ DB_set_sickness_by_hash($me,"nines");
+ }
+ }
+ DB_set_hand_status_by_hash($me,'poverty');
+
+ /* check all players and set game to final result, e.g. solo, wedding, povert, redeal */
+
+ /* reset solo, etc from players who did say something, but it didn't matter? */
+ break;
+ case 'poverty':
+ /* here we need to check if there is a solo or some other form o sickness.
+ * If so, which one counts
+ * set that one in the Game table, delete other ones form Hand table
+ * tell people about it.
+ */
+ echo "
poverty not handeled at the moment... you need to play a normal game
";
+
+ /* only set this after all poverty, etc. are handeled*/
+ DB_set_hand_status_by_hash($me,'play');
+
+ /* check if the game can start */
+ $userids = DB_get_all_userid_by_gameid($gameid);
+ $ok=1;
+ foreach($userids as $user)
+ if(DB_get_hand_status_by_userid_and_gameid($user,$gameid)!='play')
+ $ok=0;
+
+ if($ok)
+ {
+ /* TODO: check what kind of game we are playing */
+ DB_set_game_status_by_gameid($gameid,'play');
+ }
+
+ break;
+ case 'play':
+ case 'gameover':
+ /* both entries here, so that the tricks are visible for both.
+ * in case of 'play' there is a break later that skips the last part
+ */
+
+ /* display useful things in divs */
+
+ /* display local time */
+ echo "";
+ $users = array();
+ $users = DB_get_all_userid_by_gameid($gameid);
+ foreach($users as $user)
+ {
+ $offset = DB_get_user_timezone($user);
+ $zone = return_timezone($offset);
+ date_default_timezone_set($zone);
+ $name = DB_get_name_by_userid($user);
+
+ echo "
\n \n";
+ };
+ echo "$name ".date("Y-m-d H:i:s")."
";
+ break; /* not sure this works... the idea is that you can
+ * only play a card after everyone is ready to play */
+ }
+
+ /* display the table and the names */
+ $result = mysql_query("SELECT User.fullname as name,".
+ " Hand.position as position ".
+ "FROM Hand ".
+ "LEFT JOIN User ON User.id=Hand.user_id ".
+ "WHERE Hand.game_id='".$gameid."' ".
+ "ORDER BY position ASC");
+
+ echo "\n";
+ echo "
\n";
+
+ /* whos turn is it? */
+ if($seq==4)
+ {
+ $winner = get_winner($play,"normal"); /* returns the position */
+ $next = $winner;
+ }
+ else
+ {
+ $next = $pos+1;
+ if($next==5) $next=1;
+ }
+
+ /* my turn?, display cards as links, ask for comments*/
+ if(DB_get_pos_by_hash($me) == $next)
+ $myturn = 1;
+ else
+ $myturn = 0;
+
+ /* do we want to play a card? */
+ if(myisset("card") && $myturn)
+ {
+ $card = $_REQUEST["card"];
+ $handid = DB_get_handid_by_hash($me);
+
+ /* check if we have card and that we haven't played it yet*/
+ /* set played in hand_card to true where hand_id and card_id*/
+ $result = mysql_query("SELECT id FROM Hand_Card WHERE played='false' and ".
+ "hand_id='$handid' AND card_id=".DB_quote_smart($card));
+ $r = mysql_fetch_array($result,MYSQL_NUM);
+ $handcardid = $r[0];
+
+ if($handcardid)
+ {
+ mysql_query("UPDATE Hand_Card SET played='true' WHERE hand_id='$handid' AND card_id=".DB_quote_smart($card));
+
+ /* get trick id or start new trick */
+ $a = DB_get_current_trickid($gameid);
+ $trickid = $a[0];
+ $sequence = $a[1];
+
+ $playid = DB_play_card($trickid,$handcardid,$sequence);
+
+ /*check for coment */
+ if(myisset("comment"))
+ {
+ DB_insert_comment($_REQUEST["comment"],$playid,$myid);
+ };
+
+ echo "
";
+ display_card($card);
+ echo "
\n";
+
+ }
+ }
+ else
+ {
+ echo "can't find that card?!
\n";
+ }
+ }
+ else if(myisset("card") && !$myturn )
+ {
+ echo "please wait until it's your turn!
\n";
+ }
+
+ $mycards = DB_get_hand($me);
+ sort($mycards);
+ echo "
\n";
+ echo "Your cards are:
\n";
+ echo "\n";
+ }
+ else if($mystatus=='play')
+ {
+ echo "Your cards are:
\n";
+ foreach($mycards as $card)
+ display_card($card);
+ }
+ echo "
\n";
+
+ /* suggest a new game with the same people in it, just rotated once */
+ $names = DB_get_all_names_by_gameid($gameid);
+ output_ask_for_new_game($names[1],$names[2],$names[3],$names[0],$gameid);
+ }
+ break;
+ default:
+ echo "error in testing the status";
}
- else
- echo "can't open file for writing";
- };
-
-/* test if a game is running, else output everything for a new game */
-if(sizeof($lines)<2)
+ exit();
+ }
+/* user status page */
+ else if(myisset("email","password"))
{
-?>
-
";
- }
- 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
- {
- if($_REQUEST["update"]=="card") $player[$b]["option"].="c";
- if($_REQUEST["update"]=="turn") $player[$b]["option"].="t";
-
- $player[$b]["option"].="i";
-
- save_status();
-
- $allcards = $player[$b]["cards"];
- $mycards = explode(";",$allcards);
-
- 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";
- }
-
- $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);
- }
-
- }
- }
- 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)
- {
- $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);
- else
- echo "problem opening file";
- }
+ echo "last login: ".date("r",$unixtime)."
";
- /* 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)
- {
- $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.";
- }
- else
- {
- echo "can't find this email address, sorry.";
- };
- } /* end recovery */
- }
- else
- { /* $me is set */
- $me = $_REQUEST["me"];
-
- 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!
";
-
- /* show history */
- foreach($history as $play)
- {
- echo "
";
-
- $trick = explode(":",$play);
-
- $last=-2;
- /* found old trick, display it */
- for($i=0;$i
";
- }
- }
- }
- else
- echo "seems like you don't have that card
";
-
- }
-
- } /* end if card is set */
- 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();
- }; /* end if win is set */
- echo "
";
-
- $tmp = explode(":",$history[sizeof($history)-1]);
-
- /* check last history entry: end of a trick? ask who won it */
- 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"]."
";
- }
- }
- }
- echo "
";
- } /* end check for winner */
-
- /* do we still have cards? display them */
- if(strlen(trim($player[$me]["cards"]))>0 )
- {
- $allcards = trim($player[$me]["cards"]);
- $mycards = explode(";",$allcards);
-
- sort($mycards);
-
- /* is it our turn? */
- if($hash[$next]==$me)
- {
- echo "ITS YOUR TURN
";
- echo "your cards are:
";
- foreach($mycards as $card)
- {
- display_link_card($card,$me);
- }
- }
- else
- { /* not our turn, just show the hand */
- echo "your cards are:
";
- foreach($mycards as $card)
- {
- display_card($card);
- }
- }
- echo "
\n";
- }
- }
- }
+ echo "
\n";
+ $result = mysql_query("SELECT hash,game_id from Hand WHERE user_id='$uid' AND status<>'gameover'" );
+ while( $r = mysql_fetch_array($result,MYSQL_NUM))
+ echo "game #".$r[1]."
";
+ echo "
\n";
+ foreach ($names as $name)
+ echo "$name
\n";
+ echo "
";
+ }
+ exit();
+ }
+/* page for registration */
+else if(myisset("register") )
+ {
+ output_register();
+ }
+/* new user wants to register */
+ else if(myisset("Rfullname","Remail","Rpassword","Rtimezone") )
+ {
+ $ok=1;
+ if(DB_get_userid_by_name($_REQUEST["Rfullname"]))
+ {
+ echo "please chose another name
";
+ $ok=0;
+ }
+ if(DB_get_userid_by_email($_REQUEST["Remail"]))
+ {
+ echo "this email address is already used ?!
";
+ $ok=0;
+ }
+ if($ok)
+ {
+ $r=mysql_query("INSERT INTO User VALUES(NULL,".DB_quote_smart($_REQUEST["Rfullname"]).
+ ",".DB_quote_smart($_REQUEST["Remail"]).
+ ",".DB_quote_smart(md5($_REQUEST["Rpassword"])).
+ ",".DB_quote_smart($_REQUEST["Rtimezone"]).",NULL)");
+
+ if($r)
+ echo " added you to the database";
+ else
+ echo " something went wrong";
+ }
+ }
+/* default login page */
+else
+ {
+ output_home_page();
+ }
+
+output_footer();
+
+DB_close();
+/*
+ *Local Variables:
+ *mode: php
+ *mode: hs-minor
+ *End:
+ */
?>
-