X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=include%2Fgame.php;h=8d07b839f39042ff2fdf53c7c473f5facc9d695d;hp=3c1b68e6bf758f061023c8c8bc9da1bfedce31eb;hb=c3f011c01dbab0d02321859a03d91dc88a7b560b;hpb=ca3071da712685fd941f97d3610bad8635bf9c5c diff --git a/include/game.php b/include/game.php index 3c1b68e..8d07b83 100644 --- a/include/game.php +++ b/include/game.php @@ -25,7 +25,8 @@ if(!$myid) global $GAME,$RULES,$CARDS; /* the user has done something, update the timestamp */ -DB_update_user_timestamp($myid); +if(isset($_SESSION['id'])) + DB_update_user_timestamp($_SESSION['id']); /* get some information from the DB */ $gameid = DB_get_gameid_by_hash($me); @@ -36,7 +37,7 @@ $myhand = DB_get_handid('hash',$me); $session = DB_get_session_by_gameid($gameid); /* get prefs and save them in a variable*/ -$PREF = DB_get_PREF($myid); +$PREF = DB_get_PREF(isset($_SESSION['id'])?$_SESSION['id']:$myid); /* get rule set for this game */ $RULES = DB_get_RULES($gameid); @@ -65,7 +66,7 @@ if( $gamestatus == 'pre' ) else { /* in a game Schweinchen is not valid in all types of games */ - if( $gametype == 'normal' || $gametype == 'silent' || $gametype=='trump' ) + if( $gametype == 'normal' || $gametype == 'silent' || $gametype=='trump' || $gametype=='wedding') if( in_array($RULES['schweinchen'],array('both','second','secondaftercall')) ) $ok=1; } @@ -108,7 +109,15 @@ if( $mystatus!='gameover' ) if($note != '') DB_insert_note($note,$gameid,$myid); }; -output_user_notes($myid,$gameid,$mystatus); + +/* make sure that we don't show the notes to the wrong person + * (e.g. other people looking at an old game) + */ +if( $mystatus != 'gameover' || + ( $mystatus == 'gameover' && + isset($_SESSION['id']) && + $myid == $_SESSION['id'])) + output_user_notes($myid,$gameid,$mystatus); /* handle calls */ if(myisset('call') && $_REQUEST['call'] == '120' && can_call(120,$me)) @@ -130,41 +139,41 @@ if($session) switch($RULES['dullen']) { case 'none': - echo "\"not\n"; break; + echo " \"not\n"; break; case 'firstwins': - echo "\"ten\n"; break; + echo " \"ten\n"; break; case 'secondwins': - echo "\"second\n"; break; + echo " \"second\n"; break; } switch($RULES['schweinchen']) { case 'none': - echo "\"no\n"; break; case 'both': - echo "\"two\n"; break; case 'second': - echo "\"second\n"; break; case 'secondaftercall': - echo "\"second\n"; break; } switch($RULES['call']) { case '1st-own-card': - echo "\"1st-own-card\"\n"; break; + echo " \"1st-own-card\"\n"; break; case '5th-card': - echo "\"5th-card\"\n"; break; + echo " \"5th-card\"\n"; break; case '9-cards': - echo "\"9-cards\"\n"; break; + echo " \"9-cards\"\n"; break; } - echo "
\n"; + echo "
\n"; echo " 10ofhearts : {$RULES['dullen']}
\n"; echo " schweinchen: {$RULES['schweinchen']}
\n"; echo " call: {$RULES['call']}
\n"; - echo "
\n
\n"; + echo " \n \n"; echo "
Score \n"; $score = generate_score_table($session); echo format_score_table_html($score,$myid); @@ -179,8 +188,11 @@ if($session) $lasthash=$hash; } $i--; - echo "This is game number $j of $i in session $session."; - echo "
\n"; + if(isset($_SESSION['id']) && $_SESSION['id']==$myid) + echo "This is game number $j of $i in session $session."; + else + echo "This is game number $j of $i in session $session."; + echo "\n\n"; } /* display the table and the names */ @@ -1320,7 +1332,11 @@ switch($mystatus) else $GAME['schweinchen-second'] = 1; /* this must be the second fox */ - if( ($GAME['schweinchen-second']==1 && $RULES['schweinchen']=='second') || $RULES['schweinchen']=='both') + if( $RULES['schweinchen']=='both' || + ($RULES['schweinchen']=='second' && $GAME['schweinchen-second']==1 )|| + ($RULES['schweinchen']=='secondaftercall' && $GAME['schweinchen-second']==1 && + (DB_get_call_by_hash($GAME['schweinchen-who']) || DB_get_partner_call_by_hash($GAME['schweinchen-who']) )) + ) { DB_insert_comment('Schweinchen! ',$playid,$myid); $commentSchweinchen = 'Schweinchen! '; @@ -1751,27 +1767,26 @@ switch($mystatus) $message .= "Score Table:\n"; $message .= format_score_table_ascii($score); + $message .= "\nUse these links to have a look at game ".DB_format_gameid($gameid).": \n"; /* send out final email */ $all = array(); - foreach($userids as $user) - $all[] = DB_get_email('userid',$user); - $To = implode(",",$all); - - $help = "\n\n (you can use reply all on this email to reach all the players.)\n"; - mymail($To,$EmailName."game over (game ".DB_format_gameid($gameid).") part 1(2)",$message.$help); - foreach($userids as $user) { - $To = DB_get_email('userid',$user); + $all[] = DB_get_email('userid',$user); + + /* add links for all players */ $hash = DB_get_hash_from_gameid_and_userid($gameid,$user); + $name = DB_get_name('userid',$user); - $link = "Use this link to have a look at game ".DB_format_gameid($gameid).": ". - $HOST.$INDEX."?action=game&me=".$hash."\n\n" ; - if( DB_get_email_pref_by_uid($user) != 'emailaddict' ) - mymail($To,$EmailName."game over (game ".DB_format_gameid($gameid).") part 2(2)",$link); + $link = "$name: ".$HOST.$INDEX."?action=game&me=".$hash."\n" ; + $message .= $link; } + $To = implode(",",$all); + + $message .= "\n\n (you can use reply all on this email to reach all the players.)\n"; + mymail($To,$EmailName."Game over (game ".DB_format_gameid($gameid).") ",$message); } } else @@ -1867,9 +1882,15 @@ switch($mystatus) foreach($mycards as $card) { + /* display only cards that the player is allowed to play as links, the rest just display normal + * also check if we have both schweinchen, in that case only display on of them as playable + */ if( ($followsuit && !same_type($card,$firstcard)) || - ( (int)($card)==19 && ($RULES['schweinchen']=='second'||$RULES['schweinchen']=='secondaftercall') - && $GAME['schweinchen-who']==$me && !$GAME['schweinchen-first'] ) + ( (int)($card)==19 && !$GAME['schweinchen-first'] && + ($RULES['schweinchen']=='second'|| + ( $RULES['schweinchen']=='secondaftercall' && + (DB_get_call_by_hash($GAME['schweinchen-who']) || DB_get_partner_call_by_hash($GAME['schweinchen-who']) ))) + && $GAME['schweinchen-who']==$me ) ) display_card($card,$PREF['cardset']); else @@ -1924,17 +1945,33 @@ switch($mystatus) default: myerror("error in testing the status"); } -/* output left menu */ -display_user_menu(); -/* output right menu */ +/* output other games where it is the users turn + * make sure that the people looking at old games don't see the wrong games here + */ +if( $mystatus != 'gameover' ) + display_user_menu($myid); +else if( $mystatus == 'gameover' && + isset($_SESSION['id']) ) + { + display_user_menu($_SESSION['id']); + } +else + { + echo "
\n"; + echo "It's your turn in these games:
\n"; + echo "Please log in to see this information.\n"; + echo "
\n"; + } /* display rule set for this game */ echo "
\n"; if($gamestatus == 'play' ) - output_form_calls($me); - + { + $myparty = DB_get_party_by_hash($me); + output_form_calls($me,$myparty); + } /* get time from the last action of the game */ $r = DB_query_array("SELECT mod_date from Game WHERE id='$gameid' " ); $gameend = time() - strtotime($r[0]); @@ -1946,11 +1983,26 @@ if($gamestatus == 'play' || $gameend < 60*60*24*7) echo "\n"; +/* has this hand been played by others? */ +$other_game_ids = DB_played_by_others($gameid); +if(sizeof($other_game_ids)>0 && $mystatus=='gameover') + { + $mypos = DB_get_pos_by_hash($me); + echo "

See how other played the same hand:
\n"; + foreach($other_game_ids as $id) + { + $otherhash = DB_get_hash_from_game_and_pos($id,$mypos); + $othername = DB_get_name('hash',$otherhash); + echo "$othername
"; + } + echo "

\n"; + } + echo "
\n"; echo "\n"; -if($mystatus=='gameover' && DB_get_game_status_by_gameid($gameid)=='gameover' ) +if($mystatus=='gameover' && DB_get_game_status_by_gameid($gameid)=='gameover' && isset($_SESSION['id']) && $_SESSION['id']==$myid) { $session = DB_get_session_by_gameid($gameid); $result = DB_query("SELECT id,create_date FROM Game".