X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=index.php;h=cd03f579b3e5ea746c606efc0b0645e72a6d7a36;hp=eee9b462f8c906f7f913a585bd5dbb4b2d4b56a7;hb=90c9f0ee729d1960df96989b2b38d77f16ec1284;hpb=26c07fd03d0bf3bdd6142f0474b625afcfae508b diff --git a/index.php b/index.php index eee9b46..cd03f57 100644 --- a/index.php +++ b/index.php @@ -289,9 +289,9 @@ else if(myisset("me")) echo " Gametype: $GT
\n"; echo "Rules:
\n"; - echo "10ofhearts : ".$r[2]."
\n"; - echo "schweinchen: ".$r[3]."
\n"; - echo "call: ".$r[4]."
\n"; + echo "10ofhearts : ".$RULES["dullen"] ."
\n"; + echo "schweinchen: ".$RULES["schweinchen"] ."
\n"; + echo "call: ".$RULES["call"] ."
\n"; echo "\n"; /* output extra division in case this game is part of a session */ @@ -339,24 +339,30 @@ else if(myisset("me")) switch($mystatus) { case 'start': - check_want_to_play($me); - /* move on to the next stage*/ - DB_set_hand_status_by_hash($me,'init'); - break; + if( !myisset("in") ) + { + output_check_want_to_play($me); + break; + } + else + { + /* move on to the next stage*/ + DB_set_hand_status_by_hash($me,'init'); + } case 'init': /* first check if everything went ok in the last step * if not, send user back, if yes, check what he did */ if( !myisset("in") ) { - echo "

you need to answer the question.

"; + echo "

You need to answer the question.

"; DB_set_hand_status_by_hash($me,'start'); } else { if($_REQUEST["in"] == "no") { - /* cancle the game */ + /* cancel the game */ $message = "Hello, \n\n". "the game has been canceled due to the request of one of the players.\n"; @@ -372,7 +378,7 @@ else if(myisset("me")) } else { - echo "thanks for joining the game..."; + echo "Thanks for joining the game..."; $mycards = DB_get_hand($me); sort($mycards); @@ -393,17 +399,20 @@ else if(myisset("me")) /* ok, user is in the game, saw his cards and selected his vorbehalt * so first we check what he selected */ - echo "Processing what you selected in the last step...
"; - if(!myisset("solo","wedding","poverty","nines") ) { /* all these variables have a pre-selected default, * so we should never get here, - * unless a user tries to cheat ;) */ - echo "something went wrong during the setup...please contact the $ADMIN_NAME at $ADMIN_EMAIL."; + * unless a user tries to cheat ;) + * can also happen if user reloads the page! + */ + echo "

You need to answer the questions.

"; + DB_set_hand_status_by_hash($me,'init'); } else { + echo "Processing what you selected in the last step...
"; + /* check if this sickness needs to be handled first */ $gametype = DB_get_gametype_by_gameid($gameid); $startplayer = DB_get_startplayer_by_gameid($gameid); @@ -493,7 +502,7 @@ else if(myisset("me")) * set that one in the Game table * tell people about it. */ - echo "
Checking if someone else selected solo, nines or wedding or poverty.
"; + echo "
Checking if someone else selected solo, nines, wedding or poverty.
"; /* check if everyone has reached this stage */ $userids = DB_get_all_userid_by_gameid($gameid); @@ -561,13 +570,13 @@ else if(myisset("me")) } else if($nines) { - /* cancle game */ + /* cancel game */ /* TODO: should we keep statistics of this? */ $message = "Hello, \n\n". - "the game has been canceled because ".DB_get_name_by_userid($nines). - " has five or more nines and nobody is playing solo.\n"; - - /* TODO: add info about redeal in case this is a game of a series */ + " the game has been canceled because ".DB_get_name_by_userid($nines). + " has five or more nines and nobody is playing solo.\n\n". + " To redeal either start a new game or, in case the game was part of a tournament, \n". + " go to the last game and use the link at the bottom of the page to redeal."; $userids = DB_get_all_userid_by_gameid($gameid); foreach($userids as $user) @@ -635,7 +644,7 @@ else if(myisset("me")) foreach($userids as $user) { /* userids are sorted by position... - * so output whatever the firstone has, then whatever the next one has + * so output whatever the first one has, then whatever the next one has * stop when the sickness is the same as the gametype */ @@ -1132,7 +1141,7 @@ else if(myisset("me")) else if(ereg("trumpless",$GT)) echo "\"$GT\""; else if(ereg("trump",$GT)) - echo "\"$GT\""; + echo "\"$GT\""; } /* add point calls */ @@ -1370,6 +1379,30 @@ else if(myisset("me")) } } } + + /* if sequence == 4, set winner of the trick, count points and set the next player */ + if($sequence==4) + { + $play = DB_get_cards_by_trick($trickid); + $winner = get_winner($play,$gametype); /* returns the position */ + + if($winner>0) + mysql_query("UPDATE Trick SET winner='$winner' WHERE id='$trickid'"); + else + echo "ERROR during scoring"; + + if($debug) + echo "DEBUG: position $winner won the trick
"; + + /* who is the next player? */ + $next = $winner; + } + else + { + $next = DB_get_pos_by_hash($me)+1; + } + if($next==5) $next=1; + /* check for coment */ if(myisset("comment")) @@ -1404,40 +1437,45 @@ else if(myisset("me")) $done=0; if($done) + DB_set_game_status_by_gameid($gameid,"gameover"); + + /* email next player, if game is still running */ + if(DB_get_game_status_by_gameid($gameid)=='play') + { + $next_hash = DB_get_hash_from_game_and_pos($gameid,$next); + $email = DB_get_email_by_hash($next_hash); + $who = DB_get_userid_by_email($email); + DB_set_player_by_gameid($gameid,$who); + + $message = "A card has been played in game $gameid.\n\n". + "It's your turn now.\n". + "Use this link to play a card: ".$host."?me=".$next_hash."\n\n" ; + mymail($email,$EmailName."a card has been played in game $gameid",$message); + } + else /* send out final email */ { - DB_set_game_status_by_gameid($gameid,"gameover"); - /* get score for last trick - * all other tricks are handled a few lines further down*/ - $play = DB_get_cards_by_trick($trickid); - $winner = get_winner($play,$gametype); /* returns the position */ - /* get points of last trick and save it */ - $points = 0; - foreach($play as $card) - $points = $points + card_value($card["card"]); - $winnerid = DB_get_handid_by_gameid_and_position($gameid,$winner); - if($winnerid>0) - mysql_query("INSERT INTO Score VALUES (NULL, '$gameid', '$winnerid', '$points')"); - else - { - myerror("ERROR during scoring"); - } - /* email all players */ /* individual score */ - $result = mysql_query("SELECT fullname, IFNULL(SUM(score),0), Hand.party FROM Hand". - " LEFT JOIN Score ON Hand.id=Score.hand_id". - " LEFT JOIN User ON Hand.user_id=User.id". - " WHERE Hand.game_id=$gameid". - " GROUP BY fullname" ); + $result = mysql_query("SELECT User.fullname, IFNULL(SUM(Card.points),0), Hand.party FROM Hand". + " LEFT JOIN Trick ON Trick.winner=Hand.position AND Trick.game_id=Hand.game_id". + " LEFT JOIN User ON User.id=Hand.user_id". + " LEFT JOIN Play ON Trick.id=Play.trick_id". + " LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id". + " LEFT JOIN Card ON Card.id=Hand_Card.card_id". + " WHERE Hand.game_id='$gameid'". + " GROUP BY User.fullname" ); $message = "The game is over. Thanks for playing :)\n"; $message .= "Final score:\n"; while( $r = mysql_fetch_array($result,MYSQL_NUM)) $message .= " ".$r[0]."(".$r[2].") ".$r[1]."\n"; - $result = mysql_query("SELECT Hand.party, IFNULL(SUM(score),0) FROM Hand". - " LEFT JOIN Score ON Hand.id=Score.hand_id". - " LEFT JOIN User ON Hand.user_id=User.id". - " WHERE Hand.game_id=$gameid". - " GROUP BY Hand.party" ); + $result = mysql_query("SELECT Hand.party, IFNULL(SUM(Card.points),0) FROM Hand". + " LEFT JOIN Trick ON Trick.winner=Hand.position AND Trick.game_id=Hand.game_id". + " LEFT JOIN User ON User.id=Hand.user_id". + " LEFT JOIN Play ON Trick.id=Play.trick_id". + " LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id". + " LEFT JOIN Card ON Card.id=Hand_Card.card_id". + " WHERE Hand.game_id='$gameid'". + " GROUP BY Hand.party" ); $message .= "\nTotals:\n"; while( $r = mysql_fetch_array($result,MYSQL_NUM)) $message .= " ".$r[0]." ".$r[1]."\n"; @@ -1461,52 +1499,6 @@ else if(myisset("me")) mymail($To,$EmailName."game over (game $gameid) part 2(2)",$link); } } - - - /* email next player */ - if(DB_get_game_status_by_gameid($gameid)=='play') - { - if($sequence==4) - { - $play = DB_get_cards_by_trick($trickid); - $winner = get_winner($play,$gametype); /* returns the position */ - - /* get points of last trick and save it, last trick is handled - * a few lines further up */ - $points = 0; - foreach($play as $card) - $points = $points + card_value($card["card"]); - - $winnerid = DB_get_handid_by_gameid_and_position($gameid,$winner); - if($winnerid>0) - mysql_query("INSERT INTO Score VALUES (NULL, '$gameid', '$winnerid', '$points')"); - else - { - myerror("ERROR during scoring"); - }; - if($debug) - echo "DEBUG: $winner got $points
"; - - /* who is the next player? */ - $next = $winner; - } - else - { - $next = DB_get_pos_by_hash($me)+1; - } - if($next==5) $next=1; - - /* email next player */ - $next_hash = DB_get_hash_from_game_and_pos($gameid,$next); - $email = DB_get_email_by_hash($next_hash); - $who = DB_get_userid_by_email($email); - DB_set_player_by_gameid($gameid,$who); - - $message = "A card has been played in game $gameid.\n\n". - "It's your turn now.\n". - "Use this link to play a card: ".$host."?me=".$next_hash."\n\n" ; - mymail($email,$EmailName."a card has been played in game $gameid",$message); - } } else { @@ -1611,21 +1603,28 @@ else if(myisset("me")) { echo "the game is over now...
\n"; - $result = mysql_query("SELECT fullname, IFNULL(SUM(score),0), Hand.party FROM Hand". - " LEFT JOIN Score ON Hand.id=Score.hand_id". - " LEFT JOIN User ON Hand.user_id=User.id". - " WHERE Hand.game_id=$gameid". - " GROUP BY fullname" ); + $result = mysql_query("SELECT User.fullname, IFNULL(SUM(Card.points),0), Hand.party FROM Hand". + " LEFT JOIN Trick ON Trick.winner=Hand.position AND Trick.game_id=Hand.game_id". + " LEFT JOIN User ON User.id=Hand.user_id". + " LEFT JOIN Play ON Trick.id=Play.trick_id". + " LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id". + " LEFT JOIN Card ON Card.id=Hand_Card.card_id". + " WHERE Hand.game_id='$gameid'". + " GROUP BY User.fullname" ); echo "Final Score:
\n". " \n";; while( $r = mysql_fetch_array($result,MYSQL_NUM)) echo " "; echo "
".$r[0]."(".$r[2].") ".$r[1]."
\n"; - $result = mysql_query("SELECT Hand.party, IFNULL(SUM(score),0) FROM Hand". - " LEFT JOIN Score ON Hand.id=Score.hand_id". - " LEFT JOIN User ON Hand.user_id=User.id". - " WHERE Hand.game_id=$gameid". + + $result = mysql_query("SELECT Hand.party, IFNULL(SUM(Card.points),0) FROM Hand". + " LEFT JOIN Trick ON Trick.winner=Hand.position AND Trick.game_id=Hand.game_id". + " LEFT JOIN User ON User.id=Hand.user_id". + " LEFT JOIN Play ON Trick.id=Play.trick_id". + " LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id". + " LEFT JOIN Card ON Card.id=Hand_Card.card_id". + " WHERE Hand.game_id='$gameid'". " GROUP BY Hand.party" ); echo "Totals:
\n". " \n"; @@ -1644,9 +1643,14 @@ else if(myisset("me")) if(!$session || $gameid==$r[0]) { - /* suggest a new game with the same people in it, just rotated once */ + /* suggest a new game with the same people in it, just rotated once (unless last game was solo) */ $names = DB_get_all_names_by_gameid($gameid); - output_ask_for_new_game($names[1],$names[2],$names[3],$names[0],$gameid); + $type = DB_get_gametype_by_gameid($gameid); + + if($type=="solo") + output_ask_for_new_game($names[0],$names[1],$names[2],$names[3],$gameid); + else + output_ask_for_new_game($names[1],$names[2],$names[3],$names[0],$gameid); } } break; @@ -1792,11 +1796,11 @@ else if(myisset("me")) } else /* output default user page */ { - $time = DB_get_user_timestamp($uid); - $unixtime =strtotime($time); + $time = DB_get_user_timestamp($uid); + $unixtime = strtotime($time); - $offset = DB_get_user_timezone($uid); - $zone = return_timezone($offset); + $offset = DB_get_user_timezone($uid); + $zone = return_timezone($offset); date_default_timezone_set($zone); /* display links to settings */ @@ -1872,7 +1876,7 @@ else if(myisset("me")) } else { - echo "Sorry email and password don't match
"; + echo "Sorry email and password don't match. Please try again.
"; } }; output_footer(); @@ -1908,7 +1912,7 @@ else if(myisset("me")) if($r) echo " added you to the database"; else - echo " something went wrong"; + echo " something went wrong, couldn't add you to the database, please contact $ADMIN_NAME at $ADMIN_EMAIL."; } } /* default login page */