X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=blobdiff_plain;f=index.php;h=40708f8359c3767cc30382dbae508a4f08ed1e5b;hp=f5060a077601ea63c1253d5798a04de4b39d3031;hb=304fe579fe0d084d73e7e959223cfeb70a50e37a;hpb=906d4b7166440641b753148f9b9f158b2e1f2c0f diff --git a/index.php b/index.php index f5060a0..40708f8 100644 --- a/index.php +++ b/index.php @@ -6,41 +6,7 @@ include_once("output.php"); /* html output only */ include_once("db.php"); /* database only */ include_once("functions.php"); /* the rest */ -/* check if some variables are set in the config file, else set defaults */ -if(!isset($EmailName)) - $EmailName="[DoKo] "; -if(isset($EMAIL_REPLY)) - { - ini_set("sendmail_from",$EMAIL_REPLY); - } -if(!isset($ADMIN_NAME)) - { - output_header(); - echo "

Setup not completed

"; - echo "You need to set \$ADMIN_NAME in config.php."; - output_footer(); - exit(); - } -if(!isset($ADMIN_EMAIL)) - { - output_header(); - echo "

Setup not completed

"; - echo "You need to set \$ADMIN_EMAIL in config.php. ". - "If something goes wrong an email will send to this address."; - output_footer(); - exit(); - } - -/* in case work has to be done on the database or other section we can - * shut down the server and tell people to come back later - */ -if(0) - { - output_header(); - echo "Working on the database...please check back in a few mintues"; - output_footer(); - exit(); - } +config_check(); if(DB_open()<0) { @@ -51,11 +17,21 @@ if(DB_open()<0) exit(); } +/* start a session, if it is not already running */ +session_start(); + /* done major error checking, output header of HTML page */ output_header(); /* check if we want to start a new game */ -if(myisset("new")) +if(myisset("logout")) + { + session_unset(); + session_destroy(); + $_SESSION = array(); + echo "you are now logged out!"; + } +else if(myisset("new")) { $names = DB_get_all_names(); output_form_for_new_game($names); @@ -204,7 +180,7 @@ else if(myisset("cancle","me")) /* get some information from the DB */ $gameid = DB_get_gameid_by_hash($me); $myname = DB_get_name_by_hash($me); - + /* check if game really is old enough */ $result = mysql_query("SELECT mod_date from Game WHERE id='$gameid' " ); $r = mysql_fetch_array($result,MYSQL_NUM); @@ -245,6 +221,9 @@ else if(myisset("me")) exit(); } + if(isset($_SESSION["name"])) + output_status($_SESSION["name"]); + /* the user had done something, update the timestamp */ DB_update_user_timestamp($myid); @@ -289,9 +268,9 @@ else if(myisset("me")) echo " Gametype: $GT
\n"; echo "Rules:
\n"; - echo "10ofhearts : ".$r[2]."
\n"; - echo "schweinchen: ".$r[3]."
\n"; - echo "call: ".$r[4]."
\n"; + echo "10ofhearts : ".$RULES["dullen"] ."
\n"; + echo "schweinchen: ".$RULES["schweinchen"] ."
\n"; + echo "call: ".$RULES["call"] ."
\n"; echo "\n"; /* output extra division in case this game is part of a session */ @@ -341,7 +320,7 @@ else if(myisset("me")) case 'start': if( !myisset("in") ) { - check_want_to_play($me); + output_check_want_to_play($me); break; } else @@ -1176,12 +1155,28 @@ else if(myisset("me")) } echo "\n"; + /* get time from the last action of the game */ + $result = mysql_query("SELECT mod_date from Game WHERE id='$gameid' " ); + $r = mysql_fetch_array($result,MYSQL_NUM); + $gameend = time() - strtotime($r[0]); + + /* handel comments in case player didn't play a card, allow comments a week after the end of the game */ + if( (!myisset("card") && $mystatus=='play') || ($mystatus=='gameover' && ($gameend < 60*60*24*7)) ) + if(myisset("comment")) + { + $comment = $_REQUEST["comment"]; + $playid = DB_get_current_playid($gameid); + + if($comment != "") + DB_insert_comment($comment,$playid,$myid); + }; + /* get everything relevant to display the tricks */ $result = mysql_query("SELECT Hand_Card.card_id as card,". " Hand.position as position,". " Play.sequence as sequence, ". " Trick.id, ". - " Comment.comment, ". + " GROUP_CONCAT(CONCAT('',User.fullname,': ',Comment.comment,'') SEPARATOR '\n' ), ". " Play.create_date, ". " Hand.user_id ". "FROM Trick ". @@ -1189,8 +1184,10 @@ else if(myisset("me")) "LEFT JOIN Hand_Card ON Play.hand_card_id=Hand_Card.id ". "LEFT JOIN Hand ON Hand_Card.hand_id=Hand.id ". "LEFT JOIN Comment ON Play.id=Comment.play_id ". + "LEFT JOIN User On User.id=Comment.user_id ". "WHERE Trick.game_id='".$gameid."' ". - "ORDER BY Trick.id,sequence ASC"); + "GROUP BY Trick.id, sequence ". + "ORDER BY Trick.id, sequence ASC"); $trickNR = 1; $lasttrick = DB_get_max_trickid($gameid); @@ -1287,7 +1284,7 @@ else if(myisset("me")) $myturn = 1; else $myturn = 0; - + /* do we want to play a card? */ if(myisset("card") && $myturn) { @@ -1303,8 +1300,6 @@ else if(myisset("me")) if($handcardid) /* everything ok, play card */ { - $comment = ""; - /* update Game timestamp */ DB_update_game_timestamp($gameid); @@ -1324,26 +1319,26 @@ else if(myisset("me")) mysql_query("UPDATE Hand_Card SET played='true' WHERE hand_id='$handid' AND card_id=". DB_quote_smart($card)); + /* get trick id or start new trick */ + $a = DB_get_current_trickid($gameid); + $trickid = $a[0]; + $sequence = $a[1]; + $tricknr = $a[2]; + + $playid = DB_play_card($trickid,$handcardid,$sequence); + /* check for schweinchen */ - //echo "schweinchen = ".$GAME["schweinchen"]." --$card-
"; if($card == 19 || $card == 20 ) { $GAME["schweinchen"]++; if($GAME["schweinchen"]==3 && $RULES["schweinchen"]=="second" ) - $comment="Schweinchen! "; + DB_insert_comment("Schweinchen! ",$playid,$myid); if($RULES["schweinchen"]=="both" ) - $comment="Schweinchen! "; - if ($debug) echo "schweinchen = ".$GAME["schweinchen"]." ---
"; + DB_insert_comment("Schweinchen! ",$playid,$myid); + if ($debug) + echo "schweinchen = ".$GAME["schweinchen"]." ---
"; } - /* get trick id or start new trick */ - $a = DB_get_current_trickid($gameid); - $trickid = $a[0]; - $sequence = $a[1]; - $tricknr = $a[2]; - - $playid = DB_play_card($trickid,$handcardid,$sequence); - /* if sequence == 4 check who one in case of wedding */ if($sequence == 4 && $GT == "wedding") { @@ -1403,19 +1398,21 @@ else if(myisset("me")) } if($next==5) $next=1; - /* check for coment */ if(myisset("comment")) { - $comment.=$_REQUEST["comment"]; + $comment = $_REQUEST["comment"]; + if($comment != "") + DB_insert_comment($comment,$playid,$myid); }; - if($comment != "") - DB_insert_comment($comment,$playid,$myid); - + /* display played card */ echo "
"; echo " you played
"; + /* display comments */ display_card($card,$PREF["cardset"]); + if($comment!="") + echo "
Your comment:
".$comment."\n"; echo "
\n"; /*check if we still have cards left, else set status to gameover */ @@ -1475,7 +1472,7 @@ else if(myisset("me")) " LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id". " LEFT JOIN Card ON Card.id=Hand_Card.card_id". " WHERE Hand.game_id='$gameid'". - " GROUP BY User.fullname" ); + " GROUP BY Hand.party" ); $message .= "\nTotals:\n"; while( $r = mysql_fetch_array($result,MYSQL_NUM)) $message .= " ".$r[0]." ".$r[1]."\n"; @@ -1514,7 +1511,7 @@ else if(myisset("me")) $mycards = mysort($mycards,$gametype); echo "
\n"; - if($myturn && !myisset("card")) + if($myturn && !myisset("card") && $mystatus=='play' ) { echo "Hello ".$myname.", it's your turn!
\n"; echo "Your cards are:
\n"; @@ -1533,37 +1530,43 @@ else if(myisset("me")) display_link_card($card,$PREF["cardset"]); } - if( can_call(120,$me) ) - echo " re/contra (120):". - " "; - if( can_call(90,$me) ) - echo " 90:". - " "; - if( can_call(60,$me) ) - echo " 60:". - " "; - if( can_call(30,$me) ) - echo " 30:". - " "; - if( can_call(0,$me) ) - echo " 0:". - " ". - " no call:". - " "; - - echo "
\nA short comments:\n"; + output_form_calls($me); + + echo "
\nA short comment:\n"; echo "\n"; - echo "\n"; + echo "\n"; echo "\n"; } - else if($mystatus=='play') - { + else if($mystatus=='play' ) + { echo "Your cards are:
\n"; foreach($mycards as $card) display_card($card,$PREF["cardset"]); + + echo "
\n"; + output_form_calls($me); + echo "
\nA short comment:\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } else if($mystatus=='gameover') { + /* get time from the last action of the game */ + $result = mysql_query("SELECT mod_date from Game WHERE id='$gameid' " ); + $r = mysql_fetch_array($result,MYSQL_NUM); + $gameend = time() - strtotime($r[0]); + + if( $gameend < 60*60*24*7 ) + { + echo "
\n"; + echo "
\nA short comment:\n"; + echo "\n"; + echo "\n"; + echo "
\n"; + } + $oldcards = DB_get_all_hand($me); $oldcards = mysort($oldcards,$gametype); echo "Your cards were:
\n"; @@ -1586,13 +1589,14 @@ else if(myisset("me")) foreach($oldcards as $card) display_card($card,$PREF["cardset"]); } - } + }; } echo "
\n"; /* if the game is over do some extra stuff, therefore exit the swtich statement if we are still playing*/ if($mystatus=='play') break; + /* the following happens only when the gamestatus is 'gameover' */ /* check if game is over, display results */ if(DB_get_game_status_by_gameid($gameid)=='play') @@ -1662,13 +1666,21 @@ else if(myisset("me")) exit(); } /* user status page */ - else if(myisset("email","password")) +else if( myisset("email","password") || isset($_SESSION["name"]) ) { /* test id and password, should really be done in one step */ - $email = $_REQUEST["email"]; - $password = $_REQUEST["password"]; + if(!isset($_SESSION["name"])) + { + $email = $_REQUEST["email"]; + $password = $_REQUEST["password"]; + } + else + { + $name = $_SESSION["name"]; + $email = DB_get_email_by_name($name); + $password = DB_get_passwd_by_name($name); + }; - if(myisset("forgot")) { $ok = 1; @@ -1771,7 +1783,8 @@ else if(myisset("me")) $ok = 1; /* check if old password matches */ - if($password != md5($_REQUEST["password0"])) + $oldpasswd = md5($_REQUEST["password0"]); + if(!( ($password == $oldpasswd) || DB_check_recovery_passwords($oldpasswd,$email) )) $ok = -1; /* check if new passwords are types the same twice */ if($_REQUEST["password1"] != $_REQUEST["password2"] ) @@ -1796,12 +1809,18 @@ else if(myisset("me")) } else /* output default user page */ { - $time = DB_get_user_timestamp($uid); - $unixtime =strtotime($time); + $time = DB_get_user_timestamp($uid); + $unixtime = strtotime($time); - $offset = DB_get_user_timezone($uid); - $zone = return_timezone($offset); + $offset = DB_get_user_timezone($uid); + $zone = return_timezone($offset); date_default_timezone_set($zone); + + $myname = DB_get_name_by_email($email); + $_SESSION["name"] = $myname; + + if(isset($_SESSION["name"])) + output_status($_SESSION["name"]); /* display links to settings */ output_user_settings($email,$password); @@ -1876,45 +1895,13 @@ else if(myisset("me")) } else { - echo "Sorry email and password don't match
"; + echo "Sorry email and password don't match. Please try again.
"; } }; output_footer(); DB_close(); exit(); } -/* page for registration */ - else if(myisset("register") ) - { - output_register(); - } -/* new user wants to register */ - else if(myisset("Rfullname","Remail","Rpassword","Rtimezone") ) - { - $ok=1; - if(DB_get_userid_by_name($_REQUEST["Rfullname"])) - { - echo "please chose another name
"; - $ok=0; - } - if(DB_get_userid_by_email($_REQUEST["Remail"])) - { - echo "this email address is already used ?!
"; - $ok=0; - } - if($ok) - { - $r=mysql_query("INSERT INTO User VALUES(NULL,".DB_quote_smart($_REQUEST["Rfullname"]). - ",".DB_quote_smart($_REQUEST["Remail"]). - ",".DB_quote_smart(md5($_REQUEST["Rpassword"])). - ",".DB_quote_smart($_REQUEST["Rtimezone"]).",NULL)"); - - if($r) - echo " added you to the database"; - else - echo " something went wrong"; - } - } /* default login page */ else {