X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=include%2Ffunctions.php;h=e57c2e593f8a7bd5fc915423f76f31b19a721f9d;hp=b4c344d244e436946d830bdc95c722491a7d15f4;hb=03d6cd5ba13a0aac918734c1f797df4f149d9194;hpb=c1585e23cb3ea757674c234c9193889b4f2f2090 diff --git a/include/functions.php b/include/functions.php index b4c344d..e57c2e5 100644 --- a/include/functions.php +++ b/include/functions.php @@ -54,10 +54,65 @@ function config_check() return; } -function mymail($To,$Subject,$message,$header="") +function mymail($uid,$subject,$message) { + global $EmailName; + + /* check if user wants email right away or if we should save it in + * the database for later delivery + */ + if(0) + { + /* send to database (not yet implemented)*/ + } + else + { + /* send email right away */ + + /* add standard header and footer */ + $subject = "$EmailName".$subject; + + /* 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: http://wiki.nubati.net/EmailDoko '. + 'bugs: http://wiki.nubati.net/EmailDokoIssues'; + + 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); + } + + sendmail($To,$subject,$header.$message.$footer); + } +} + +function sendmail($To,$Subject,$message) +{ + /* this function sends the mail or outputs to the screen in case of debugging */ global $debug,$EMAIL_REPLY; + $header = ""; + if(isset($EMAIL_REPLY)) $header .= "From: e-DoKo daemon <$EMAIL_REPLY>\r\n"; @@ -104,7 +159,7 @@ function myisset() function myerror($message) { echo "".htmlspecialchars($message)."\n"; - mymail($ADMIN_EMAIL,$EmailName." Error in Code",$message); + sendmail($ADMIN_EMAIL,$EmailName." Error in Code",$message); return; } @@ -881,7 +936,9 @@ function display_table () echo "
\n"; echo " time info\n"; + "last login: ".date("Y-m-d H:i:s",$lastlogin)."\">". + "\"time". + "\n"; echo " \n"; } @@ -900,7 +957,7 @@ function display_user_menu($id) " LEFT JOIN Game On Hand.game_id=Game.id". " WHERE Hand.user_id='$id'". " AND ( Game.player='$id' OR ISNULL(Game.player) )". - " AND Game.status<>'gameover'". + " AND ( Game.status='pre' OR Game.status='play' )". " ORDER BY Game.session" ); $i=0; @@ -987,14 +1044,15 @@ function generate_global_score_table() $gameids = DB_get_gameids_of_finished_games_by_session(0); if($gameids == NULL) - return ""; + return ''; /* get player id, names... from the User table */ $player = array(); - $result = DB_query("SELECT User.id, User.fullname FROM User"); + $result = DB_query('SELECT User.id, User.fullname FROM User'); + /* save information in an array */ while( $r = DB_fetch_array($result)) - $player[] = array( 'id' => $r[0], 'name'=> $r[1], 'points' => 0 ,'nr' => 0); + $player[$r[0]] = array('name'=> $r[1], 'points' => 0 ,'nr' => 0); /* get points and generate table */ foreach($gameids as $gameid) @@ -1002,19 +1060,21 @@ function generate_global_score_table() $re_score = DB_get_score_by_gameid($gameid); $gametype = DB_get_gametype_by_gameid($gameid); - /* TODO: this shouldn't loop over all players, just the 4 players that are in the game */ - foreach($player as $key=>$pl) + /* get players involved in this game */ + $result = DB_query('SELECT user_id FROM Hand WHERE game_id='.DB_quote_smart($gameid)); + while($r = DB_fetch_array($result)) { - $party = DB_get_party_by_gameid_and_userid($gameid,$pl['id']); - if($party == "re") - if($gametype=="solo") - $player[$key]['points'] += 3*$re_score; + $id = $r[0]; + $party = DB_get_party_by_gameid_and_userid($gameid,$id); + if($party == 're') + if($gametype=='solo') + $player[$id]['points'] += 3*$re_score; else - $player[$key]['points'] += $re_score; - else if ($party == "contra") - $player[$key]['points'] -= $re_score; + $player[$id]['points'] += $re_score; + else if ($party == 'contra') + $player[$id]['points'] -= $re_score; if($party) - $player[$key]['nr']+=1; + $player[$id]['nr']+=1; } } @@ -1030,13 +1090,13 @@ function generate_global_score_table() return 0; return ($a > $b) ? -1 : 1; } - usort($player,"cmp"); + usort($player,'cmp'); foreach($player as $pl) { /* limit to players with at least 10 games */ if($pl['nr']>10) - $return[] = array( $pl['name'], round($pl['points']/$pl['nr'],3) ); + $return[] = array( $pl['name'], round($pl['points']/$pl['nr'],3), $pl['points'],$pl['nr']); } return $return; @@ -1208,4 +1268,35 @@ function check_vacation($userid) return NULL; } +function cancel_game($why,$gameid) +{ + $gameid = DB_quote_smart($gameid); + + /* update the game table */ + switch($why) + { + case 'timedout': + DB_query("UPDATE Game SET status='cancel-timedout' WHERE id=$gameid"); + break; + case 'nines': + DB_query("UPDATE Game SET status='cancel-nines' WHERE id=$gameid"); + break; + case 'trump': + DB_query("UPDATE Game SET status='cancel-trump' WHERE id=$gameid"); + break; + case 'noplay': + DB_query("UPDATE Game SET status='cancel-noplay' WHERE id=$gameid"); + break; + } + /* set each player to gameover */ + $result = DB_query("SELECT id FROM Hand WHERE game_id=".DB_quote_smart($gameid)); + while($r = DB_fetch_array($result)) + { + $id = $r[0]; + DB_query("UPDATE Hand SET status='gameover' WHERE id=".DB_quote_smart($id)); + } + + return; +} + ?>