+/* define possible status for email subsjects */
+define("GAME_CANCELED", 0);
+define("GAME_CANCELED_POVERTY", 1);
+define("GAME_CANCELED_TIMEOUT", 2);
+define("GAME_YOUR_TURN", 3);
+define("GAME_READY", 4);
+define("GAME_POVERTY", 5);
+define("GAME_DPOVERTY", 6);
+define("GAME_OVER", 7);
+define("GAME_RECOVERY", 8);
+define("GAME_REMINDER", 9);
+define("GAME_NEW", 10);
+
+/* define possible status for showing cards */
+
+define("CARDS_EMPTY", 0); /* show player's hand*/
+define("CARDS_SHOW", 1); /* show player's hand*/
+define("CARDS_MYTURN", 2); /* show radiobuttons for cards that can be played*/
+define("CARDS_EXCHANGE", 3); /* do we need to return cards to our partner in poverty?*/
+define("CARDS_GAMEOVER_ME", 4); /* show all cards from everyone*/
+define("CARDS_GAMEOVER", 5); /* show all cards from everyone (looking at someone else's game)*/
+
+ /* cards_status: SHOW show our hand
+ * MYTURN show radiobutton for cards that can be played
+ * EXCHANGE do we need to return cards to our partner in poverty?
+ * GAMEOVER show all cards from everyone
+ */
+
+function mymail($uid,$gameid=0,$type,$message)
+{
+ global $EmailName,$WIKI;
+
+ /* do we send the email right away or save it in the database? */
+ $send_now = 1;
+
+ /* add standard header and footer */
+ $subject = "$EmailName ";
+ if($gameid)
+ $game = DB_format_gameid($gameid);
+ else
+ $game = '';
+
+ switch($type)
+ {
+ case GAME_CANCELED:
+ $subject.=sprintf(_("Game %s canceled"),$game);
+ break;
+ case GAME_CANCELED_POVERTY:
+ $subject.=sprintf(_("Game %s canceled (poverty not resolved)"),$game);
+ break;
+ case GAME_CANCELED_TIMEOUT:
+ $subject.=sprintf(_("Game %s canceled (timed out)"),$game);
+ break;
+ case GAME_YOUR_TURN:
+ $subject.=sprintf(_("A card has been played in game %s"),$game);
+ break;
+ case GAME_READY:
+ $subject.=sprintf(_("Ready, set, go... (game %s)"),$game);
+ break;
+ case GAME_POVERTY:
+ $subject.=sprintf(_("Poverty (game %s)"),$game);
+ break;
+ case GAME_DPOVERTY:
+ $subject.=sprintf(_("Double poverty (game %s)"),$game);
+ break;
+ case GAME_OVER:
+ $subject.=sprintf(_("Game over (game %s)"),$game);
+ break;
+ case GAME_RECOVERY:
+ $subject.=_("Recovery");
+ break;
+ case GAME_REMINDER:
+ $subject.=sprintf(_("Reminder: game %s it's your turn"),$game);
+ break;
+ case GAME_NEW:
+ $subject.=sprintf(_("You are invited to a game of DoKo (game %s)"),$game);
+ break;
+ default:
+ $subject.=sprintf(_("Problem with email, contact admin (errorcode %d)"),$gameid);
+ }
+
+ /* standard goodbye */
+ $footer = "\nHave a nice day\n".
+ " your E-Doko service department\n\n".
+ "-- \n".
+ "You can change your mail delivery mode in the preference menu.\n".
+ 'web: http://doko.nubati.net '.
+ "help, bugs, etc.: $WIKI";
+
+ if(is_array($uid))
+ {
+ /* send email to more than one person */
+
+ $header = "Hello all\n\n";
+
+ foreach($uid as $user)
+ {
+ $all[] = DB_get_email('userid',$user);
+ }
+ $To = implode(",",$all);
+ }
+ else
+ {
+ /* standard greeting */
+ $name = DB_get_name('userid',$uid);
+ $header = "Hello $name\n\n";
+
+ $To = DB_get_email('userid',$uid);
+
+ /* check if user wants email right away or if we should save it in
+ * the database for later delivery
+ */
+
+ $PREF = DB_get_PREF($uid);
+ if( $PREF['digest'] != 'digest-off' )
+ $send_now = 0;
+ }
+
+ if($send_now)
+ sendmail($To,$subject,$header.$message.$footer);
+ else
+ {
+ /* store email in database */
+ DB_digest_insert_email($To,$message);
+ }
+}
+
+function sendmail($To,$Subject,$message)