X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=index.php;h=8b91b69c1623cc0faaaa87c5e5a402e452a20a1c;hp=687f15dc5b58d86a6ee218cb4f720b2b1c1135f8;hb=223b9a88ef79e40f039f215e0a0ef51c1023d9b5;hpb=a7119a6c9ee1ecbc43edb4164b03b1d8a97fd107 diff --git a/index.php b/index.php index 687f15d..8b91b69 100644 --- a/index.php +++ b/index.php @@ -33,6 +33,7 @@ if(DB_open()<0) exit(); } +/* done major error checking, output header of HTML page */ output_header(); /* check if we want to start a new game */ @@ -61,6 +62,7 @@ if(myisset("new")) { echo "couldn't find one of the names, please start a new game"; output_footer(); + DB_close(); exit(); } @@ -79,6 +81,7 @@ if(myisset("new")) { echo "Error defining ruleset: $ruleset"; output_footer(); + DB_close(); exit(); }; @@ -171,6 +174,7 @@ else if(myisset("cancle","me")) echo "Can't find you in the database, please check the url.
\n"; echo "perhaps the game has been cancled, check by login in here."; output_footer(); + DB_close(); exit(); } @@ -192,7 +196,7 @@ else if(myisset("cancle","me")) foreach($userids as $user) { $To = DB_get_email_by_userid($user); - mymail($To,$EmailName."game cancled (timed out)",$message); + mymail($To,$EmailName."game $gameid cancled (timed out)",$message); } /* delete everything from the dB */ @@ -216,6 +220,7 @@ else if(myisset("me")) echo "Can't find you in the database, please check the url.
\n"; echo "perhaps the game has been cancled, check by login in here."; output_footer(); + DB_close(); exit(); } @@ -230,18 +235,8 @@ else if(myisset("me")) $myhand = DB_get_handid_by_hash($me); /* get prefs and save them */ - $result = mysql_query("SELECT value from User_Prefs". - " WHERE user_id='$myid' AND pref_key='cardset'" ); - $r = mysql_fetch_array($result,MYSQL_NUM); - if($r) - { - if($r[0]=="germancards" && (time()-strtotime( "2009-12-31 23:59:59")<0) ) /* licence only valid until then */ - $PREF["cardset"]="altenburg"; - else - $PREF["cardset"]="english"; - } - else - $PREF["cardset"]="english"; + DB_get_PREF($myid); + /* end set pref */ /* get rule set for this game */ @@ -252,7 +247,9 @@ else if(myisset("me")) $RULES["dullen"] = $r[2]; $RULES["schweinchen"] = $r[3]; - + $RULES["call"] = "1st-own-card"; + + /* get some infos about the game */ $gametype = DB_get_gametype_by_gameid($gameid); $gamestatus = DB_get_game_status_by_gameid($gameid); @@ -325,7 +322,7 @@ else if(myisset("me")) foreach($userids as $user) { $To = DB_get_email_by_userid($user); - mymail($To,$EmailName."game canceled",$message); + mymail($To,$EmailName."game $gameid canceled",$message); } /* delete everything from the dB */ @@ -342,7 +339,7 @@ else if(myisset("me")) display_card($card,$PREF["cardset"]); echo "

\n"; - check_for_sickness($me,$mycards); + output_check_for_sickness($me,$mycards); /* move on to the next stage*/ DB_set_hand_status_by_hash($me,'check'); @@ -431,8 +428,9 @@ else if(myisset("me")) $userhash =DB_get_hash_from_gameid_and_userid($gameid,$user); if($userhash!=$me) { - $message = "Everyone finish the questionary, please visit this link now to continue: \n". - " ".$host."?me=".$userhash."\n\n" ; + $message = "Everyone finish the questionary in game $gameid, ". + "please visit this link now to continue: \n". + " ".$host."?me=".$userhash."\n\n" ; mymail($To,$EmailName." finished setup",$message); } }; @@ -460,7 +458,9 @@ else if(myisset("me")) if(!$ok) { echo "This step can only be handled after everyone finished the last step. ". - "Seems like this is not the case, so you need to wait a bit... you will get an email once that is the case, please use the link in that email to continue the game.
"; + "Seems like this is not the case, so you need to wait a bit... ". + "you will get an email once that is the case, please use the link in ". + "that email to continue the game.
"; } else { @@ -526,7 +526,7 @@ else if(myisset("me")) foreach($userids as $user) { $To = DB_get_email_by_userid($user); - mymail($To,$EmailName."game canceled",$message); + mymail($To,$EmailName."game $gameid canceled",$message); } /* delete everything from the dB */ @@ -535,6 +535,7 @@ else if(myisset("me")) echo "The game has been canceled because ".DB_get_name_by_userid($nines). " has five or more nines and nobody is playing solo.\n"; output_footer(); + DB_close(); exit(); } else if($poverty==1) @@ -689,6 +690,20 @@ else if(myisset("me")) else DB_set_sickness_by_gameid($gameid,$who+$add); + /* email next player */ + $who = DB_get_sickness_by_gameid($gameid); + if($who>9) $who = $who/10; + + if($who<=4) + { + $To = DB_get_email_by_pos_and_gameid($who,$gameid); + $userhash = DB_get_hash_from_game_and_pos($gameid,$who); + + $message = "Someone has poverty, it's your turn to decide, if you want to take the trump. Please visit:". + " ".$host."?me=".$userhash."\n\n" ; + mymail($To,$EmailName." poverty",$message); + } + /* this user is done */ DB_set_hand_status_by_hash($me,'play'); break; @@ -703,19 +718,6 @@ else if(myisset("me")) /* copy trump from player A to B */ $result = mysql_query("UPDATE Hand_Card SET hand_id='$myhand' WHERE hand_id='$userhand' AND card_id<'27'" ); - /* set re/contra, if it is not already set */ - $party = DB_get_party_by_hash($me); - if(!$party) - { - foreach($userids as $user) - { - $hash = DB_get_hash_from_gameid_and_userid($gameid,$user); - if($user == $trump || $user == $myid) - DB_set_party_by_hash($hash,"re"); - else - DB_set_party_by_hash($hash,"contra"); - } - } /* add hidden button with trump in it to get to the next point */ echo "
\n"; echo " \n"; @@ -755,6 +757,7 @@ else if(myisset("me")) $add = 1; $who = $who/10; + /* whom to ask next */ $firstsick = DB_get_sickness_by_pos_and_gameid($mypos+1,$gameid); $secondsick = DB_get_sickness_by_pos_and_gameid($mypos+2,$gameid); @@ -767,6 +770,20 @@ else if(myisset("me")) else DB_set_sickness_by_gameid($gameid,$who+$add*3); }; + + /* email next player */ + $who = DB_get_sickness_by_gameid($gameid); + if($who<=4) + { + $To = DB_get_email_by_pos_and_gameid($who,$gameid); + $userhash = DB_get_hash_from_game_and_pos($gameid,$who); + + $message = "Someone has poverty, it's your turn to decide, ". + "if you want to take the trump. Please visit:". + " ".$host."?me=".$userhash."\n\n" ; + mymail($To,$EmailName." poverty",$message); + } + } /* this user is done */ @@ -775,6 +792,33 @@ else if(myisset("me")) $hash = DB_get_hash_from_gameid_and_userid($gameid,$trump); DB_set_hand_status_by_hash($hash,'play'); + /* set party to re, unless we had dpoverty, in that case check if we need to set re/contra*/ + $re_set=0; + foreach($userids as $user) + { + $userhash =DB_get_hash_from_gameid_and_userid($gameid,$user); + $party=DB_get_party_by_hash($userhash); + if($party=="re") + $re_set=1; + } + if($re_set) + { + DB_set_party_by_hash($me,"contra"); + DB_set_party_by_hash($hash,"contra"); + } + else + { + foreach($userids as $user) + { + $userhash =DB_get_hash_from_gameid_and_userid($gameid,$user); + if($userhash==$hash||$userhash==$me) + DB_set_party_by_hash($userhash,"re"); + else + DB_set_party_by_hash($userhash,"contra"); + } + } + + break; } else @@ -816,10 +860,22 @@ else if(myisset("me")) } echo "I don't want to take any trump: ". "yes
"; + + echo "Your cards are:
\n"; + $mycards = DB_get_hand($me); + sort($mycards); + echo "

your cards are:
\n"; + foreach($mycards as $card) + display_card($card,$PREF["cardset"]); + echo "

\n"; } else { - echo "it's not your turn yet to decide if you want to take the trump or not."; + $mysick = DB_get_sickness_by_userid_and_gameid($myid,$gameid); + if($mysick=="poverty") + echo "The others are asked if they want to take your trump, you have to wait (you'll get an email)."; + else + echo "it's not your turn yet to decide if you want to take the trump or not."; } /* * yes, display number of trump and user's hand, ask if he wants to take it @@ -841,7 +897,7 @@ else if(myisset("me")) foreach($userids as $user) { $To = DB_get_email_by_userid($user); - mymail($To,$EmailName."game cancled (poverty not resolved)",$message); + mymail($To,$EmailName."game $gameid cancled (poverty not resolved)",$message); } /* delete everything from the dB */ @@ -849,6 +905,7 @@ else if(myisset("me")) echo "

Game $gameid has been cancled.

"; output_footer(); + DB_close(); exit(); } @@ -871,7 +928,7 @@ else if(myisset("me")) if($hash!=$me) { /* email startplayer) */ - $message = "It's your turn now.\n". + $message = "It's your turn now in game $gameid.\n". "Use this link to play a card: ".$host."?me=".$hash."\n\n" ; mymail($email,$EmailName."ready, set, go... ",$message); } @@ -922,7 +979,8 @@ else if(myisset("me")) /* has the game started? No, then just wait here...*/ if($gamestatus == 'pre') { - echo "You finished the setup, but not everyone else finished it...so you need to wait for the others. Just wait for the an email...
"; + echo "You finished the setup, but not everyone else finished it... ". + "so you need to wait for the others. Just wait for the an email...
"; break; /* not sure this works... the idea is that you can * only play a card after everyone is ready to play */ } @@ -933,7 +991,8 @@ else if(myisset("me")) " User.id, ". " Hand.party as party, ". " Hand.sickness as sickness, ". - " Hand.point_call ". + " Hand.point_call, ". + " User.last_login ". "FROM Hand ". "LEFT JOIN User ON User.id=Hand.user_id ". "WHERE Hand.game_id='".$gameid."' ". @@ -947,8 +1006,9 @@ else if(myisset("me")) $pos = $r[1]; $user = $r[2]; $party = $r[3]; - $sickness= $r[4]; - $call = $r[5]; + $sickness = $r[4]; + $call = $r[5]; + $lastlogin = strtotime($r[6]); $offset = DB_get_user_timezone($user); $zone = return_timezone($offset); @@ -959,19 +1019,43 @@ else if(myisset("me")) /* add hints for poverty, wedding, solo, etc */ if($GT=="poverty" && $party=="re") if($sickness=="poverty") - echo "(poverty <)"; + { + $userhash = DB_get_hash_from_gameid_and_userid($gameid,$user); + $cards = DB_get_all_hand($userhash); + $trumpNR = count_trump($cards); + if($trumpNR) + echo "(poverty < trump back)"; + else + echo "(poverty <)"; + } else echo "(poverty >)"; if($GT=="dpoverty") if($party=="re") if($sickness=="poverty") - echo "(poverty A <)"; + { + $userhash = DB_get_hash_from_gameid_and_userid($gameid,$user); + $cards = DB_get_all_hand($userhash); + $trumpNR = count_trump($cards); + if($trumpNR) + echo "(poverty A < trump back)"; + else + echo "(poverty A <)"; + } else echo "(poverty A >)"; else if($sickness=="poverty") - echo "(poverty B <)"; + { + $userhash = DB_get_hash_from_gameid_and_userid($gameid,$user); + $cards = DB_get_all_hand($userhash); + $trumpNR = count_trump($cards); + if($trumpNR) + echo "(poverty B < trump back)"; + else + echo "(poverty B <)"; + } else echo "(poverty B >)"; @@ -980,12 +1064,17 @@ else if(myisset("me")) echo "(wedding +)"; else echo "(wedding)"; + + if(ereg("solo",$GT) && $party=="re") + echo "($GT)"; + /* add point calls */ if($call!=NULL) echo " $party $call "; echo "
\n"; - echo " local time: ".date("Y-m-d H:i:s")."\n"; + echo " local time: ".date("Y-m-d H:i:s")."
\n"; + echo " last login: ".date("Y-m-d H:i:s",$lastlogin)."
\n"; echo " \n"; } @@ -996,7 +1085,9 @@ else if(myisset("me")) " Hand.position as position,". " Play.sequence as sequence, ". " Trick.id, ". - " Comment.comment ". + " Comment.comment, ". + " Play.create_date, ". + " Hand.user_id ". "FROM Trick ". "LEFT JOIN Play ON Trick.id=Play.trick_id ". "LEFT JOIN Hand_Card ON Play.hand_card_id=Hand_Card.id ". @@ -1022,7 +1113,13 @@ else if(myisset("me")) $seq = $r[2]; $trick = $r[3]; $comment = $r[4]; - + $timeplayed = strtotime($r[5]); + $user = $r[6]; + + $offset = DB_get_user_timezone($user); + $zone = return_timezone($offset); + date_default_timezone_set($zone); + /* check if first schweinchen has been played */ if($r[0] == 19 || $r[0] == 20 ) $GAME["schweinchen"]++; @@ -1258,11 +1355,27 @@ else if(myisset("me")) $message .= "\n"; while( $r = mysql_fetch_array($result,MYSQL_NUM)) $message .= " FINAL SCORE: ".$r[0]." ".$r[1]."\n"; - + + /* check who wants to be CC'ed on the email */ + $h = array(); + $header = ""; + foreach($userids as $user) + { + $result = mysql_query("SELECT value from User_Prefs". + " WHERE user_id='$user' AND pref_key='ccemail'" ); + $r = mysql_fetch_array($result,MYSQL_NUM); + if($r && $r[0]=="yes") + $h[] = DB_get_email_by_userid($user); + } + if(sizeof($h)) + $header = "CC: ".join(",",$h)."\r\n"; + foreach($userids as $user) { - $To = DB_get_email_by_userid($user); - mymail($To,$EmailName."game over",$message); + $To = DB_get_email_by_userid($user); + $hash = DB_get_hash_from_gameid_and_userid($gameid,$user); + $mymessage = $message."Use this link to have a look at the game: ".$host."?me=".$hash."\n\n" ; + mymail($To,$EmailName."game over (game $gameid)",$mymessage,$header); } } @@ -1303,7 +1416,8 @@ else if(myisset("me")) $next_hash = DB_get_hash_from_game_and_pos($gameid,$next); $email = DB_get_email_by_hash($next_hash); - $message = "It's your turn now.\n". + $message = "A card has been played in game $gameid.\n\n". + "It's your turn now.\n". "Use this link to play a card: ".$host."?me=".$next_hash."\n\n" ; mymail($email,$EmailName."a card has been played",$message); } @@ -1355,7 +1469,9 @@ else if(myisset("me")) " "; if( can_call(0,$me) ) echo " 0:". - " "; + " ". + " no call:". + " "; echo "
\nA short comments:\n"; echo "\n"; @@ -1429,6 +1545,7 @@ else if(myisset("me")) echo "error in testing the status"; } output_footer(); + DB_close(); exit(); } /* user status page */ @@ -1437,6 +1554,7 @@ else if(myisset("me")) /* test id and password, should really be done in one step */ $email = $_REQUEST["email"]; $password = $_REQUEST["password"]; + if(myisset("forgot")) { @@ -1473,6 +1591,8 @@ else if(myisset("me")) if($ok) { + DB_get_PREF($uid); + if(myisset("setpref")) { $setpref=$_REQUEST["setpref"]; @@ -1489,6 +1609,21 @@ else if(myisset("me")) $result = mysql_query("INSERT INTO User_Prefs VALUES(NULL,'$uid','cardset',".DB_quote_smart($setpref).")"); echo "Ok, changed you preferences for the cards.\n"; break; + case "ccemail": + $result = mysql_query("SELECT * from User_Prefs". + " WHERE user_id='$uid' AND pref_key='ccemail'" ); + if( mysql_fetch_array($result,MYSQL_NUM)) + if($PREF["ccemail"]=="yes") + $result = mysql_query("UPDATE User_Prefs SET value=".DB_quote_smart("no"). + " WHERE user_id='$uid' AND pref_key='ccemail'" ); + else + $result = mysql_query("UPDATE User_Prefs SET value=".DB_quote_smart("yes"). + " WHERE user_id='$uid' AND pref_key='ccemail'" ); + else + $result = mysql_query("INSERT INTO User_Prefs VALUES(NULL,'$uid','ccemail',".DB_quote_smart("yes").")"); + echo "Ok, changed you preferences for being CC'ed on emails.\n"; + break; + } } else /* output default user page */ @@ -1507,10 +1642,25 @@ else if(myisset("me")) DB_update_user_timestamp($uid); + echo "

these are your games that haven't started yet:
\n"; + $result = mysql_query("SELECT Hand.hash,Hand.game_id,Game.mod_date from Hand". + " LEFT JOIN Game On Hand.game_id=Game.id". + " WHERE Hand.user_id='$uid' AND Game.status='pre'" ); + while( $r = mysql_fetch_array($result,MYSQL_NUM)) + { + echo "game #".$r[1]." "; + if(time()-strtotime($r[2]) > 60*60*24*30) + echo " The game has been running for over a month.". + " Do you want to cancel it? yes". + " (clicking here is final and can't be restored)"; + echo "
"; + } + echo "

\n"; + echo "

these are the games you are playing in:
\n"; $result = mysql_query("SELECT Hand.hash,Hand.game_id,Game.mod_date from Hand". " LEFT JOIN Game On Hand.game_id=Game.id". - " WHERE Hand.user_id='$uid' AND Game.status<>'gameover'" ); + " WHERE Hand.user_id='$uid' AND Game.status='play'" ); while( $r = mysql_fetch_array($result,MYSQL_NUM)) { echo "game #".$r[1]." "; @@ -1524,15 +1674,15 @@ else if(myisset("me")) echo "

and these are your games that are already done:
Game: \n"; + $output=array(); $result = mysql_query("SELECT hash,game_id from Hand WHERE user_id='$uid' AND status='gameover'" ); while( $r = mysql_fetch_array($result,MYSQL_NUM)) - echo "#".$r[1]." , "; - echo "

\n"; + $output[]= "#".$r[1]." "; + echo implode(", ",$output)."

\n"; $names = DB_get_all_names(); echo "

registered players:
\n"; - foreach ($names as $name) - echo "$name, \n"; + echo implode(", ",$names)."\n"; echo "

\n"; echo "

Want to start a new game? Visit this page.

"; @@ -1544,6 +1694,7 @@ else if(myisset("me")) } }; output_footer(); + DB_close(); exit(); } /* page for registration */ @@ -1581,14 +1732,21 @@ else if(myisset("me")) /* default login page */ else { - $pre=0;$game=0;$done=0; + $pre[0]=0;$game[0]=0;$done[0]=0; $r=mysql_query("SELECT COUNT(id) FROM Game GROUP BY status"); if($r) { - $pre = mysql_fetch_array($r,MYSQL_NUM); + $pre = mysql_fetch_array($r,MYSQL_NUM); $game = mysql_fetch_array($r,MYSQL_NUM); $done = mysql_fetch_array($r,MYSQL_NUM); } - output_home_page($pre[0],$game[0],$done[0]); + + $r=mysql_query("SELECT AVG(datediff(mod_date,create_date)) FROM Game where status='gameover' "); + if($r) + $avgage= mysql_fetch_array($r,MYSQL_NUM); + else + $avgage[0]=0; + + output_home_page($pre[0],$game[0],$done[0],$avgage[0]); } output_footer();