+/* 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,$PREF;
+
+ /* uid can be either a single uid or an array, convert everything to
+ * an array, so that we can loop over it */
+ if(!is_array($uid))
+ {
+ $to_uid=$uid;
+ $uid = array();
+ $uid[]=$to_uid;
+ }
+
+ foreach($uid as $user)
+ {
+ /* do we send the email right away or save it in the database? */
+ $send_now = 1;
+
+ $name = DB_get_name('userid',$uid);
+ $header = sprintf(_('Hello %s'),$name);
+ $header .= "\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
+ */
+
+ $uidPREF = DB_get_PREF($uid);
+ if( $uidPREF['digest'] != 'digest-off' )
+ $send_now = 0;
+ /* use local language */
+ set_language($uidPREF['language']);
+
+ /* 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 = "\n"._("Have 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($send_now)
+ sendmail($To,$subject,$header.$message.$footer);
+ else
+ {
+ /* store email in database */
+ DB_digest_insert_email($To,$message,$type,$gameid);
+ }
+ }
+ /* reset language to original user*/
+ set_language($PREF['language']);
+
+ return;
+}
+
+function sendmail($To,$Subject,$message)