X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=include%2Ffunctions.php;h=466b4ae34f631d7c6a08414ebbbdd079aa0943b9;hp=f8a0da4e58d7e4faf1121a6eb44f707a9bb66899;hb=11882439a450641bf0d4dd048775d0bdfb592642;hpb=765a4fb590113faa80a8560711f9c89de14a50ba diff --git a/include/functions.php b/include/functions.php index f8a0da4..466b4ae 100644 --- a/include/functions.php +++ b/include/functions.php @@ -177,14 +177,27 @@ function compare_cards($a,$b,$game) return 1; if($b == 19 || $b == 20 ) return 0; - }; - if($RULES['schweinchen']=='second' && $GAME['schweinchen-second']) + } + else if($RULES['schweinchen']=='second' && $GAME['schweinchen-second']) { if($a == 19 || $a == 20 ) return 1; if($b == 19 || $b == 20 ) return 0; - }; + } + else if($RULES['schweinchen']=='secondaftercall' && $GAME['schweinchen-who'] && $GAME['schweinchen-second'] ) + { + /* check if a call was made either by the player or his partner. If so activate Schweinchen rule. */ + if(DB_get_call_by_hash($GAME['schweinchen-who']) || DB_get_partner_call_by_hash($GAME['schweinchen-who']) ) + { + if($a == 19 || $a == 20 ) + return 1; + if($b == 19 || $b == 20 ) + return 0; + } + /* if not, do nothing and the foxes are just handeled as normal trump */ + } + ; case "heart": case "spade": case "club": @@ -595,21 +608,39 @@ function set_gametype($gametype) function mysort($cards,$gametype) { - usort ( $cards, "sort_comp" ); + global $PREF; + if(isset($PREF['sorting'])) + if($PREF['sorting']=='high-low') + usort ( $cards, 'sort_comp_high_low' ); + else + usort ( $cards, 'sort_comp_low_high' ); + else + usort ( $cards, 'sort_comp_high_low' ); return $cards; } -function sort_comp($a,$b) +function sort_comp_high_low($a,$b) { global $CARDS; $ALL = array(); - $ALL = array_merge($CARDS["trump"],$CARDS["diamonds"],$CARDS["clubs"], - $CARDS["hearts"],$CARDS["spades"]); + $ALL = array_merge($CARDS['trump'],$CARDS['diamonds'],$CARDS['clubs'], + $CARDS['hearts'],$CARDS['spades']); return pos_array($a,$ALL)-pos_array($b,$ALL); } +function sort_comp_low_high($a,$b) +{ + global $CARDS; + + $ALL = array(); + $ALL = array_merge($CARDS['trump'],$CARDS['diamonds'],$CARDS['clubs'], + $CARDS['hearts'],$CARDS['spades']); + + return -pos_array($a,$ALL)+pos_array($b,$ALL); +} + function can_call($what,$hash) { global $RULES; @@ -844,14 +875,14 @@ function display_table () } -function display_user_menu() +function display_user_menu($id) { - global $WIKI,$myid,$INDEX; + global $WIKI,$INDEX; $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='$myid'". - " AND Game.player='$myid'". + " WHERE Hand.user_id='$id'". + " AND ( Game.player='$id' OR ISNULL(Game.player) )". " AND Game.status<>'gameover'". " ORDER BY Game.session" ); @@ -865,7 +896,8 @@ function display_user_menu() } $i++; - echo "game ".DB_format_gameid($r[1])."
\n"; + echo "game ".DB_format_gameid($r[1])."
\n"; if($i>4) { echo "...
\n"; @@ -996,7 +1028,9 @@ function format_score_table_ascii($score) if(sizeof($score)==0) return ""; - // if(sizeof($score)>5) $header.= " ... \n"; + /* truncate table if we have too many games */ + $max = sizeof($score); + if($max>6) $output.=" (table truncated to last 6 games)\n"; /* output header */ foreach($score[0]['players'] as $id=>$points) @@ -1004,18 +1038,16 @@ function format_score_table_ascii($score) $name = DB_get_name('userid',$id); /*TODO*/ $output.= " ".substr($name,0,2)." |"; } - $output.=" P |\n "; + $output.=" P |\n"; $output.= "------+------+------+------+------+\n"; - $max = sizeof($score); + /* output score for each game */ $i=0; - - if($i<$max-6) $output.=" ...\n"; - foreach($score as $game) { $i++; if($i-1<$max-6) continue; + foreach($game['players'] as $id=>$points) $output.=str_pad($points,6," ",STR_PAD_LEFT)."|"; $output.=str_pad($game['points'],4," ",STR_PAD_LEFT); @@ -1038,24 +1070,29 @@ function format_score_table_html($score,$userid) if(sizeof($score)==0) return ""; - $output = "
\n\n \n"; + $output = "
\n
\n \n \n"; /* output header */ - $output.= " "; + $output.= " "; foreach($score[0]['players'] as $id=>$points) { $name = DB_get_name('userid',$id); /*TODO*/ $output.= ""; } - $output.="\n \n\n\n"; + $output.="\n \n \n \n"; $i=0; foreach($score as $game) { $i++; - $output.=" "; + $output.=" "; $userhash = DB_get_hash_from_gameid_and_userid($game['gameid'],$userid); - $output.=" "; + /* create link to old games only if you are logged in and its your game*/ + if(isset($_SESSION['id']) && $_SESSION['id']==$userid) + $output.=" "; + else + $output.=" "; + foreach($game['players'] as $id=>$points) $output.=""; $output.="\n"; } - $output.="\n
No No ".substr($name,0,2)." P
P
$i $i$i".$points."".$game['points']; @@ -1066,11 +1103,35 @@ function format_score_table_html($score,$userid) $output.="
\n"; + $output.=" \n\n\n"; return $output; } +function createCache($content, $cacheFile) +{ + $fp = fopen($cacheFile,"w"); + if($fp) + { + fwrite($fp,$content); + fclose($fp); + } + else + echo "WARNING: couldn't create cache file"; + + return; +} + +function getCache($cacheFile, $expireTime) +{ + if( file_exists($cacheFile) && + filemtime($cacheFile )>( time() - $expireTime ) ) + { + return file_get_contents($cacheFile); + } + + return false; +} ?>