else
{
/* in a game Schweinchen is not valid in all types of games */
- if( $gametype == 'normal' || $gametype == 'silent' || $gametype=='trump' || $gametype=='wedding')
+ if( in_array($gametype,array('normal','wedding','trump','silent') ))
if( in_array($RULES['schweinchen'],array('both','second','secondaftercall')) )
$ok=1;
}
echo " </div>\n </div>\n";
/* show score */
+
+ echo " <div class=\"sessionscore\">";
+
$score = generate_score_table($session);
+
+ /* get the last entry to show on the main page */
$tmpscore= $score;
$finalscore = array_pop($tmpscore);
$finalscore = $finalscore['players'];
- echo " <div class=\"sessionscore\">";
if($finalscore)
- {
+ {
echo "Score: \n";
- /* output the final score on the front page */
foreach($finalscore as $user=>$value)
{
$name = DB_get_name('userid',$user);
echo " ".substr($name,0,2).": $value ";
}
}
- else
+ else
{
- /* first game, no score yet */
+ /* first game, no score yet */
echo " ";
}
+ /* output all games for the score table */
echo format_score_table_html($score,$myid);
echo " </div>\n";
- /* figure out which game in a session we are in and link to the previous and next game if possible */
+ /* figure out which game in a session we are in and link to the
+ * previous and next game if possible
+ */
$hashes = DB_get_hashes_by_session($session,$myid);
$next = NULL;
$i = 1;
{
/* cancel the game */
$message = "Hello, \n\n".
- "the game has been canceled due to the request of one of the players.\n";
+ "the game has been canceled due to the request of one of the players.\n\n";
$userids = DB_get_all_userid_by_gameid($gameid);
foreach($userids as $user)
mymail($user,$subject,$message);
}
- /* delete everything from the dB */
- DB_cancel_game($me);
+ /* update game status */
+ cancel_game('noplay',$gameid);
break;
}
else
else if($nines)
{
/* cancel game */
- /* TODO: should we keep statistics of this? */
- $message = "Hello, \n\n".
- " the game has been canceled because ".DB_get_name('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.";
+ $message = "the game has been canceled because ".DB_get_name('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.\n\n";
$userids = DB_get_all_userid_by_gameid($gameid);
foreach($userids as $user)
mymail($user,$subject,$message);
}
- /* delete everything from the dB */
- DB_cancel_game($me);
+ /* update game status */
+ cancel_game('nines',$gameid);
echo "The game has been canceled because ".DB_get_name('userid',$nines).
" has five or more nines and nobody is playing solo.\n";
if($mypos+$next>4)
{
$message = "Hello, \n\n".
- "Game ".DB_format_gameid($gameid)." has been canceled since nobody wanted to take the trump.\n";
+ "Game ".DB_format_gameid($gameid)." has been canceled since nobody wanted to take the trump.\n\n";
$userids = DB_get_all_userid_by_gameid($gameid);
foreach($userids as $user)
mymail($user,$subject,$message);
}
- /* delete everything from the dB */
- DB_cancel_game($me);
+ /* update game status */
+ cancel_game('trump',$gameid);
echo "<p style=\"background-color:red\";>Game ".DB_format_gameid($gameid)." has been canceled.<br /><br /></p>";
return;
* in case of 'play' there is a break later that skips the last part
*/
+ /* first check if the game has been canceled and display */
+ switch($gamestatus)
+ {
+ case 'cancel-noplay':
+ echo "<div class=\"message\"><p>The game has been canceled due to the request of one player.</p><p>If this was a mistake all 4 players need to send an Email to $ADMIN_NAME at $ADMIN_EMAIL requesting that the game should be restarted.</p></div>";
+ break;
+ case 'cancel-timedout':
+ echo "<div class=\"message\"><p>The game has been canceled because one player wasn't responding.</p><p>If this was a mistake all 4 players need to send an Email to $ADMIN_NAME at $ADMIN_EMAIL requesting that the game should be restarted.</p></div>";
+ break;
+ case 'cancel-nines':
+ case 'cancel-timedout':
+ echo "<div class=\"message\"><p>The game has been canceled because one player had too many nines.</p></div>";
+ break;
+ case 'cancel-trump':
+ echo "<div class=\"message\"><p>The game has been canceled because nobody wanted to take the trump.</p></div>";
+ break;
+ }
+ /* for these two types, we shouldn't show the cards, since we might want to restart the game */
+ if (in_array($gamestatus,array('cancel-noplay','cancel-timedout')))
+ break;
+
/* check if all players are ready to play,
* if so, send out email to the startplayer
* only need to do this if the game hasn't started yet
/* end of trick? */
if($seq==4)
{
+ $winner = get_winner($play,$gametype); /* returns the position */
echo " </div>\n </li>\n"; /* end div trick, end li trick */
}
}
$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);
-
/* add links for all players */
$hash = DB_get_hash_from_gameid_and_userid($gameid,$user);
$name = DB_get_name('userid',$user);
$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";
- $subject = $EmailName.' Game over (game '.DB_format_gameid($gameid).') ';
- sendmail($To,$subject,$message);
+ $message .= "\n\n (you can use reply all on this email to reach all the players.)\n\n";
+ $subject = ' Game over (game '.DB_format_gameid($gameid).') ';
+ mymail($userids,$subject,$message);
}
}
else
* 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 && !$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 )
+ ( (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 &&
+ in_array($gametype,array('normal','wedding','trump','silent'))
+ )
)
display_card($card,$PREF['cardset']);
else
echo "</form>\n";
-if($mystatus=='gameover' && DB_get_game_status_by_gameid($gameid)=='gameover' && isset($_SESSION['id']) && $_SESSION['id']==$myid)
+$gamestatus = DB_get_game_status_by_gameid($gameid);
+if($mystatus=='gameover' &&
+ ($gamestatus =='gameover' || $gamestatus =='cancel-nines' || $gamestatus =='cancel-trump') &&
+ isset($_SESSION['id']) && $_SESSION['id']==$myid)
{
$session = DB_get_session_by_gameid($gameid);
$result = DB_query("SELECT id,create_date FROM Game".
else /* rotate normally */
output_ask_for_new_game($names[1],$names[2],$names[3],$names[0],$gameid);
}
+ else if($gamestatus == 'cancel-nines' || $gamestatus == 'cancel-trump')
+ output_ask_for_new_game($names[0],$names[1],$names[2],$names[3],$gameid);
else /* rotate normally */
output_ask_for_new_game($names[1],$names[2],$names[3],$names[0],$gameid);
}