X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=include%2Ffunctions.php;h=33da9ef04ebbd8de8b11bb36a93538581d49cb27;hp=7bdfd31d8121868d4a81c081a6a58347ad2c50c0;hb=b76cddb9313d8a67e5d7e1830503b5775666238f;hpb=cdf3b418ca71babb4336243ccdd741bbd5970d4d diff --git a/include/functions.php b/include/functions.php index 7bdfd31..33da9ef 100644 --- a/include/functions.php +++ b/include/functions.php @@ -58,36 +58,56 @@ 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) + /* do we send the email right away or save it in the database? */ + $send_now = 1; + + /* 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 to database (not yet implemented)*/ + /* 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 { - /* send email right away */ - - /* add standard header and footer */ - $subject = "$EmailName".$subject; - /* standard greeting */ $name = DB_get_name('userid',$uid); $header = "Hello $name\n\n"; - /* and 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'; - $To = DB_get_email('userid',$uid); - sendmail($To,$subject,$header.$message.$footer); + /* 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); } } @@ -688,19 +708,36 @@ function sort_comp_low_high($a,$b) function can_call($what,$hash) { + /* figure out if a person can make a call: + $what in 0,30,60,90,120 = points of the call + $hash = the hash of the person who wants to make the call + + return values: + 0 can't make that call + 1 can make the call + 2 can make the call, but this is the last chance to do so... + */ + global $RULES; + /* get some information + */ $gameid = DB_get_gameid_by_hash($hash); $gametype = DB_get_gametype_by_gameid($gameid); - $oldcall = DB_get_call_by_hash($hash); - $pcall = DB_get_partner_call_by_hash($hash); + $oldcall = DB_get_call_by_hash($hash); /* did the person already made a call? */ + $pcall = DB_get_partner_call_by_hash($hash); /* did the partner already made a call */ + - if( ($pcall!=NULL && $what >= $pcall) || - ($oldcall!=NULL && $what >=$oldcall) ) + /* you're call must be better than the one you or your partner already made + */ + if( ($pcall!=NULL && ($what >= $pcall)) + || ($oldcall!=NULL && ($what >=$oldcall)) ) { return 0; } + /* for some rules we need to know how many cards people have + */ $NRcards = count(DB_get_hand($hash)); $NRallcards = 0; @@ -710,7 +747,8 @@ function can_call($what,$hash) $NRallcards += count(DB_get_hand($user)); }; - /* in case of a wedding, everything will be delayed by an offset */ + /* in case of a wedding, everything will be delayed by an offset + */ $offset = 0; if($gametype=="wedding") { @@ -719,18 +757,34 @@ function can_call($what,$hash) return 0; }; + /* now check if the call is allowed depending on the rule set + */ switch ($RULES["call"]) { case "1st-own-card": - if( 4-($what/30) >= 12 - ($NRcards + $offset)) + /* calls can be made before/while you play your card... + * first card = 120, second card = 90, etc. + */ + if( 4-($what/30) == 12 - ($NRcards + $offset)) + return 2; + if( 4-($what/30) > 12 - ($NRcards + $offset)) return 1; break; case "5th-card": - if( 27+4*($what/30) <= $NRallcards + $offset*4) + /* you can make the first call anytime during the first trick + */ + if( 27+4*($what/30) == $NRallcards + $offset*4) + return 2; + if( 27+4*($what/30) < $NRallcards + $offset*4) return 1; break; case "9-cards": + /* you can call 120 with 12 cards, 90 with 9 or more cards, 60 with 6 or more, etc. + * you can't skip a call though + */ + /* figure out last call + */ if($oldcall!=NULL && $pcall!=NULL) $mincall = ($oldcall>$pcall) ? $pcall : $oldcall; else if($oldcall!=NULL) @@ -740,26 +794,51 @@ function can_call($what,$hash) else $mincall = -1; - if( 12 <= ($NRcards + $offset)) + + if( 12 == ($NRcards + $offset)) + { + return 2; + } + else if( 12 < ($NRcards + $offset)) { return 1; } - else if ( 9 <= ($NRcards + $offset)) + else if ( 9 == ($NRcards + $offset)) + { + if( ($mincall>=0 && $mincall==120) ) + return 2; + } + else if ( 9 < ($NRcards + $offset)) { if( ($mincall>=0 && $mincall==120) ) return 1; } - else if ( 6 <= ($NRcards + $offset)) + else if ( 6 == ($NRcards + $offset)) + { + if( ($mincall>=0 && $mincall<=90 && $what<=60 ) ) + return 2; + } + else if ( 6 < ($NRcards + $offset)) { if( ($mincall>=0 && $mincall<=90 && $what<=60 ) ) return 1; } - else if ( 3 <= ($NRcards + $offset)) + else if ( 3 == ($NRcards + $offset)) + { + if( ($mincall>=0 && $mincall<=60 && $what<=30 ) ) + return 2; + } + else if ( 3 < ($NRcards + $offset)) { if( ($mincall>=0 && $mincall<=60 && $what<=30 ) ) return 1; } - else if ( 0 <= ($NRcards + $offset)) + else if ( 0 == ($NRcards + $offset)) + { + if( ($mincall>=0 && $mincall<=30 && $what==0 ) ) + return 2; + } + else if ( 0 < ($NRcards + $offset)) { if( ($mincall>=0 && $mincall<=30 && $what==0 ) ) return 1; @@ -783,7 +862,8 @@ function display_table () " Hand.point_call, ". " User.last_login, ". " Hand.hash, ". - " User.timezone ". + " User.timezone, ". + " User.email ". "FROM Hand ". "LEFT JOIN User ON User.id=Hand.user_id ". "WHERE Hand.game_id='".$gameid."' ". @@ -801,10 +881,14 @@ function display_table () $call = $r[5]; $hash = $r[7]; $timezone = $r[8]; + $email = $r[9]; + $wins = DB_get_number_of_tricks($gameid,$pos); date_default_timezone_set($defaulttimezone); $lastlogin = strtotime($r[6]); date_default_timezone_set($timezone); $timenow = strtotime(date("Y-m-d H:i:s")); + $gravatar = "$name
"; + echo "
\n"; @@ -817,10 +901,10 @@ function display_table () $comment = $vacation[2]; $title = "begin: $start end: $stop $comment"; - echo " $name (on vacation until $stop) \n"; + echo " $gravatar (on vacation until $stop) \n"; } else - echo " $name \n"; + echo " $gravatar \n"; if($debug) echo"\n"; @@ -924,6 +1008,22 @@ function display_table () "last login: ".date("Y-m-d H:i:s",$lastlogin)."\">". "\"time". "\n"; + + /* show how many tricks the person made */ + switch($wins) + { + case 0: + echo "#tricks 0"; break; + case 1: + echo "#tricks 1"; break; + case 2: + case 3: + case 4: + echo "#tricks few"; break; + default: + echo "#tricks many"; break; + } + echo "
\n"; } @@ -1284,4 +1384,18 @@ function cancel_game($why,$gameid) return; } +function get_user_token($userid) +{ + + $token = NULL; + + $date = DB_get_user_creation_date($userid); + $name = DB_get_name('userid',$userid); + + if($date && $name) + $token = md5("token".$name.$date); + + return $token; +} + ?>