X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=include%2Ffunctions.php;h=3142b02b78dc05bb602b1f497d7f149ab510f280;hp=cb784575d783fc344077c3db9d8d78cbe1964433;hb=d0d40e3329fdb97e082636b49b459c4301d35f15;hpb=14f6017a5b84d70320bde9d6e074ea8ac948a85e diff --git a/include/functions.php b/include/functions.php index cb78457..3142b02 100644 --- a/include/functions.php +++ b/include/functions.php @@ -1,5 +1,5 @@ +/* Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Arun Persaud * * This file is part of e-DoKo. * @@ -106,101 +106,106 @@ define("CARDS_GAMEOVER", 5); /* show all cards from everyone (looking at some function mymail($uid,$gameid=0,$type,$message) { - global $EmailName,$WIKI; + global $EmailName,$WIKI,$PREF; - /* 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) + /* 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)) { - 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); + $to_uid=$uid; + $uid = array(); + $uid[]=$to_uid; } - /* 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 + foreach($uid as $user) { - /* standard greeting */ - $name = DB_get_name('userid',$uid); - $header = "Hello $name\n\n"; + /* do we send the email right away or save it in the database? */ + $send_now = 1; - $To = DB_get_email('userid',$uid); + $name = DB_get_name('userid',$user); + $To = DB_get_email('userid',$user); /* 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; - } + $uidPREF = DB_get_PREF($user); + if( $uidPREF['digest'] != 'digest-off' ) + $send_now = 0; + /* use local language */ + set_language($uidPREF['language']); - if($send_now) - sendmail($To,$subject,$header.$message.$footer); - else - { - /* store email in database */ - DB_digest_insert_email($To,$message,$type,$gameid); + $header = sprintf(_('Hello %s'),$name); + $header .= "\n\n"; + + /* 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) @@ -213,6 +218,10 @@ function sendmail($To,$Subject,$message) if(isset($EMAIL_REPLY)) $header .= "From: e-DoKo daemon <$EMAIL_REPLY>\r\n"; + $header .= "Content-Type: text/plain; charset = \"UTF-8\";\r\n"; + $header .= "Content-Transfer-Encoding: 8bit\r\n"; + $header .= "\r\n"; + if($debug) { /* display email on screen, @@ -223,15 +232,12 @@ function sendmail($To,$Subject,$message) "$1", $message); echo "
To: $To
"; - if($header != "") - echo $header."
"; + echo $header."
"; echo "Subject: $Subject
$message
\n"; } else - if($header != "") - mail($To,$Subject,$message,$header); - else - mail($To,$Subject,$message); + mail($To,$Subject,$message,$header); + return; } @@ -992,10 +998,10 @@ function display_table_begin () " Hand.hash, ". " User.timezone, ". " User.email ". - "FROM Hand ". - "LEFT JOIN User ON User.id=Hand.user_id ". - "WHERE Hand.game_id='".$gameid."' ". - "ORDER BY position ASC"); + " FROM Hand". + " LEFT JOIN User ON User.id=Hand.user_id". + " WHERE Hand.game_id=".DB_quote_smart($gameid). + " ORDER BY position ASC"); $row0 = DB_fetch_array($result); $row1 = DB_fetch_array($result); @@ -1026,10 +1032,10 @@ function display_table_end () " Hand.hash, ". " User.timezone, ". " User.email ". - "FROM Hand ". - "LEFT JOIN User ON User.id=Hand.user_id ". - "WHERE Hand.game_id='".$gameid."' ". - "ORDER BY position ASC"); + " FROM Hand". + " LEFT JOIN User ON User.id=Hand.user_id". + " WHERE Hand.game_id=".DB_quote_smart($gameid). + " ORDER BY position ASC"); $row0 = DB_fetch_array($result); $row1 = DB_fetch_array($result); @@ -1081,8 +1087,8 @@ function display_single_user($r,$start=0) $stop = substr($vacation[1],0,10); $comment = $vacation[2]; - $title = "begin: $start end: $stop $comment"; - echo " $gravatar (on vacation until $stop) \n"; + $title = _("begin:")." $start "._("end:")." $stop $comment"; + echo " $gravatar "._("(on vacation until $stop)")." \n"; } else echo " $gravatar \n"; @@ -1203,15 +1209,15 @@ function display_single_user($r,$start=0) switch($wins) { case 0: - echo "#tricks 0"; break; + echo _('#tricks 0'); break; case 1: - echo "#tricks 1"; break; + echo _('#tricks 1'); break; case 2: case 3: case 4: - echo "#tricks few"; break; + echo _('#tricks few'); break; default: - echo "#tricks many"; break; + echo _('#tricks many'); break; } echo "\n"; echo " \n"; @@ -1225,16 +1231,16 @@ function display_user_menu($id, $skiphash=NULL) if($skiphash) $result = DB_query("SELECT Hand.hash,Hand.game_id,Game.player from Hand". " LEFT JOIN Game On Hand.game_id=Game.id". - " WHERE Hand.user_id='$id'". - " AND Hand.hash!='$skiphash'". + " WHERE Hand.user_id=".DB_quote_smart($id). + " AND Hand.hash!=".DB_quote_smart($skiphash). " AND ( Game.player='$id' OR ISNULL(Game.player) )". " AND ( Game.status='pre' OR Game.status='play' )". " ORDER BY Game.session" ); else $result = DB_query("SELECT Hand.hash,Hand.game_id,Game.player from Hand". " LEFT JOIN Game On Hand.game_id=Game.id". - " WHERE Hand.user_id='$id'". - " AND ( Game.player='$id' OR ISNULL(Game.player) )". + " WHERE Hand.user_id=".DB_quote_smart($id). + " AND ( Game.player=".DB_quote_smart($id)." OR ISNULL(Game.player) )". " AND ( Game.status='pre' OR Game.status='play' )". " ORDER BY Game.session" ); @@ -1288,7 +1294,7 @@ function generate_score_table($session) /* get player id from the first game */ $result = DB_query("SELECT user_id from Hand". - " WHERE Hand.game_id=".$gameids[0][0]); + " WHERE Hand.game_id=".DB_quote_smart($gameids[0][0])); while( $r = DB_fetch_array($result)) $player[$r[0]] = 0; @@ -1444,7 +1450,7 @@ function format_score_table_ascii($score) /* truncate table if we have too many games */ $max = sizeof($score); - if($max>6) $output.=" (table truncated to last 6 games)\n"; + if($max>6) $output.=" "._("(table truncated to last 6 games)")."\n"; /* output header */ foreach($score[0]['players'] as $id=>$points) @@ -1572,7 +1578,7 @@ function check_vacation($userid) { /* get start date */ $result = DB_query_array("SELECT value FROM User_Prefs". - " WHERE user_id='$userid' AND pref_key='vacation start'" ); + " WHERE user_id=".DB_quote_smart($userid)." AND pref_key='vacation start'" ); if($result) $start = $result[0]; else @@ -1580,7 +1586,7 @@ function check_vacation($userid) /* get end date */ $result = DB_query_array("SELECT value FROM User_Prefs". - " WHERE user_id='$userid' AND pref_key='vacation stop'" ); + " WHERE user_id=".DB_quote_smart($userid)." AND pref_key='vacation stop'" ); if($result) $stop = $result[0]; else @@ -1588,7 +1594,7 @@ function check_vacation($userid) /* get comment */ $result = DB_query_array("SELECT value FROM User_Prefs". - " WHERE user_id='$userid' AND pref_key='vacation comment'" ); + " WHERE user_id=".DB_quote_smart($userid)." AND pref_key='vacation comment'" ); if($result) $comment = $result[0]; else @@ -1699,4 +1705,42 @@ function verify_password($email, $password) return 3; } +/* language functions */ +function detectlanguage() +{ + /* read out browser's prefered language, taken from php-manual*/ + $langcode = explode(";", $_SERVER['HTTP_ACCEPT_LANGUAGE']); + $langcode = explode(",", $langcode['0']); + return $langcode['0']; +} + +function set_language($l,$type='lang') +{ + if($type=='uid') + { + $userPREF = DB_get_PREF($l); + $l = $userPREF['language']; + }; + + switch($l) + { + case 'de': + putenv("LC_ALL=de_DE"); + setlocale(LC_ALL, "de_DE"); + break; + default: + putenv("LC_ALL=en_US"); + setlocale(LC_ALL, "en_US"); + break; + } + + // Specify location of translation tables + bindtextdomain("edoko", "./locale"); + bind_textdomain_codeset("edoko", 'UTF-8'); + // Choose domain + textdomain("edoko"); + + return; +} + ?>