added a uniform list name for emails
[e-DoKo.git] / index.php
index 605a94b42963030fbf6dfc1932e05b51c938aaff..d931e6edaedf561cd2682e57cccbc720ebf25ef1 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1,11 +1,18 @@
 <?php
 error_reporting(E_ALL);
 
+global $REV;
+$REV  ="\$Rev$";
+
 include_once("config.php");      
 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(0)
 {
   output_header();
@@ -19,8 +26,10 @@ output_header();
 
 /* check if we want to start a new game */
 if(myisset("new"))
-  output_form_for_new_game();
-
+{
+  $names = DB_get_all_names();
+  output_form_for_new_game($names);
+}
 /*check if everything is ready to set up a new game */
 else if( myisset("PlayerA", "PlayerB","PlayerC","PlayerD" ))
   {
@@ -107,7 +116,9 @@ else if( myisset("PlayerA", "PlayerB","PlayerC","PlayerD" ))
     mymail($EmailB,"You are invited to a game of DoKo","Hello $PlayerB,\n".$message.$hashB);
     mymail($EmailC,"You are invited to a game of DoKo","Hello $PlayerC,\n".$message.$hashC);
     mymail($EmailD,"You are invited to a game of DoKo","Hello $PlayerD,\n".$message.$hashD);
-        
+
+    
+    echo "You started a new game. The emails have been sent out!";    
   }    
 /* end set up a new game */
 
@@ -135,7 +146,14 @@ else if(myisset("me"))
     $myname   = DB_get_name_by_hash($me);
     $mystatus = DB_get_status_by_hash($me);
     $mypos    = DB_get_pos_by_hash($me);
+
+    echo "<p class=\"gamenumber\"> Game $gameid </p>\n";
     
+
+    
+    if(myisset("cancle"))
+      echo "<p style=\"background-color:red\";>canceling a game is not implemented at the moment, but will be soon...<br /><br /></p>";
+
     switch($mystatus)
       {
       case 'start':
@@ -152,15 +170,16 @@ else if(myisset("me"))
          {
            if($_REQUEST["in"] == "no")
              {
-               echo "TODO: email everyone that the game has been canceled.<br />";
-                /*something like need to modify for DB backend
-                for($i=0;$i<4;$i++)
-                  {
-                    $message = "Hello ".$player[$hash[$i]]["name"].",\n\n".
-                      "the game has been canceled due to the request of one of the players.\n";
-                    mymail($player[$hash[$i]]["email"],"[DoKo-Debug] the game has been canceled",$message); 
-                  }
-                */
+               $message = "Hello, \n\n".
+                 "the game has been canceled due to the request of one of the players.\n";
+               
+               $userids = DB_get_all_userid_by_gameid($gameid);
+               foreach($userids as $user)
+                 {
+                   $To = DB_get_email_by_userid($user);
+                   mymail($To,$EmailName."game cancled",$message);
+                 }
+               
                /* delete everything from the dB */
                DB_cancel_game($me);
              }
@@ -185,10 +204,10 @@ else if(myisset("me"))
        break;
        
       case 'check':
-       echo "checking for solo...<br />".
+       echo "checking if you selected solo or nines...<br />".
          " if you have a wedding, please send an email to the other players. <br />".
-         " if you have  poverty you need to play a normal game,sorry...<br />".
-         " At the moment you need to reload this page to finish the setup.<br />";
+         " if you have poverty you need to play a normal game,sorry...<br />".
+         " Please click <a href=\"$host?me=$me\">here</a> to finish the setup.<br />";
        if(!myisset("solo","wedding","poverty","nines") )
          {
            /* all these variables have a pre-selected default,
@@ -212,6 +231,7 @@ else if(myisset("me"))
                  {}/* do nothing */
                else
                  {
+                   /* this solo comes first */
                    DB_set_gametype_by_gameid($gameid,"solo");
                    DB_set_startplayer_by_gameid($gameid,$mypos);
                    DB_set_solo_by_gameid($gameid,$_REQUEST["solo"]);
@@ -246,8 +266,8 @@ else if(myisset("me"))
         * set that one in the Game table, delete other ones form Hand table 
         * tell people about it.
         */
-       echo "<br />poverty not handeled at the moment... you need to play a normal game<br />".
-          "reload this page to finish the setup <br />";
+       echo "<br />checking if someone else selected solo or nines... wedding and poverty not handled at the moment<br />".
+         " Please click <a href=\"$host?me=$me\">here</a> to finish the setup.<br />";  
        
        /* only set this after all poverty, etc. are handeled*/
        DB_set_hand_status_by_hash($me,'play');
@@ -261,8 +281,71 @@ else if(myisset("me"))
 
        if($ok)
          {
-           /* TODO: check what kind of game we are playing */
            DB_set_game_status_by_gameid($gameid,'play');
+
+           /* check what kind of game we are playing */
+           $gametype    = DB_get_gametype_by_gameid($gameid);
+           $startplayer = DB_get_startplayer_by_gameid($gameid);
+
+           /* nines? */
+           $nines = 0;
+           /* check for nines */
+           foreach($userids as $user)
+             {
+               if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'nines')
+                 $nines = 1;
+             }
+           
+           /* gamestatus == normal, => cancel game */
+           if($nines && $gamestatus == "normal")
+             {
+               /* TODO: set game type to nines to be able to keep statistics */
+               
+               $message = "Hello, \n\n".
+                 "the game has been cancled becausee someone has five or more nines.\n";
+               
+               $userids = DB_get_all_userid_by_gameid($gameid);
+               foreach($userids as $user)
+                 {
+                   $To = DB_get_email_by_userid($user);
+                   mymail($To,$EmailName."game cancled",$message);
+                 }
+               
+               /* delete everything from the dB */
+               DB_cancel_game($me);
+
+             }
+
+           /* poverty? */
+           $poverty = 0;
+
+           /* check players for poverty */
+           foreach($userids as $user)
+             {
+               if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'poverty')
+                 {
+                   $poverty++;
+                   $name = DB_get_name_by_userid($user);
+                   echo "$name has a Vorbehalt. <br />";
+                 }
+             }
+           /* if gamestatus == normal, set poverty or dpovert (in case two people have poverty) */
+
+           /* wedding? */
+           $wedding = 0;
+           /* check players for wedding */
+           foreach($userids as $user)
+             {
+               if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'wedding')
+                 {
+                   $wedding++;
+                   $name = DB_get_name_by_userid($user);
+                   echo "$name has a Vorbehalt. <br />"  ;
+                 }
+             }
+
+           /* if gamestatus == normal, set wedding  */
+           
          }
        
        break;
@@ -289,7 +372,9 @@ else if(myisset("me"))
        
        set_gametype($gametype);
 
-       
+       /* get some infos about the game */
+       $gamestatus = DB_get_game_status_by_gameid($gameid);
+
        /* display useful things in divs */
        
        /* display local time */
@@ -307,7 +392,8 @@ else if(myisset("me"))
          };
        echo "</table>\n</div>\n";
 
-       display_status($GT);
+       if($gamestatus != 'pre')
+         display_status($GT);
 
        /* display links to the users status page */
        $result = mysql_query("SELECT email,password from User WHERE id='$myid'" );
@@ -319,7 +405,6 @@ else if(myisset("me"))
        /* end display useful things*/
 
        /* has the game started? No, then just wait here...*/
-       $gamestatus = DB_get_game_status_by_gameid($gameid);
        if($gamestatus == 'pre')
          {
            echo "you need to wait for the others... <br />";
@@ -359,15 +444,13 @@ else if(myisset("me"))
                              "LEFT JOIN Comment ON Play.id=Comment.play_id ".
                              "WHERE Trick.game_id='".$gameid."' ".
                              "ORDER BY Trick.id,sequence ASC");
-       
-       
        $trickNR = 1;
        
        $lasttrick = DB_get_max_trickid($gameid);
        
        $play = array(); /* needed to calculate winner later  */
        $seq  = 1;          
-       $pos  = 0;
+       $pos  = DB_get_startplayer_by_gameid($gameid)-1; 
        $firstcard = ""; /* first card in a trick */
        
        echo "\n<ul class=\"tricks\">\n";
@@ -535,7 +618,7 @@ else if(myisset("me"))
                    foreach($userids as $user)
                      {
                        $To = DB_get_email_by_userid($user);
-                       mymail($To,"[DoKo] game over",$message);
+                       mymail($To,$EmailName."game over",$message);
                      }
                  }
                
@@ -578,7 +661,7 @@ else if(myisset("me"))
 
                    $message = "It's your turn  now.\n".
                      "Use this link to play a card: ".$host."?me=".$next_hash."\n\n" ;
-                   mymail($email,"[DoKo-debug] a card has been played",$message);
+                   mymail($email,$EmailName."a card has been played",$message);
                    
                    if($debug)
                      echo "DEBUG:<a href=\"index.php?me=".DB_get_hash_from_game_and_pos($gameid,$next).
@@ -597,7 +680,7 @@ else if(myisset("me"))
          }
        
        $mycards = DB_get_hand($me);
-       sort($mycards);
+       $mycards = mysort($mycards,$gametype);
        echo "<div class=\"mycards\">\n";
        
        if($myturn && !myisset("card"))
@@ -606,7 +689,7 @@ else if(myisset("me"))
            echo "Your cards are: <br />\n";
            echo "<form action=\"index.php?me=$me\" method=\"post\">\n";
 
-           /* do we have to follow suit? */
+           /* do we have to follow suite? */
            $followsuit = 0;
            if(have_suit($mycards,$firstcard))
              $followsuit = 1;
@@ -692,11 +775,19 @@ else if(myisset("me"))
        DB_update_user_timestamp($uid);
 
        echo "<p>these are the games you are playing in:<br />\n";
-       $result = mysql_query("SELECT hash,game_id from Hand WHERE user_id='$uid' AND status<>'gameover'" );
+       $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'" );
        while( $r = mysql_fetch_array($result,MYSQL_NUM))
-         echo "<a href=\"".$host."?me=".$r[0]."\">game #".$r[1]." </a><br />";
+         {
+           echo "<a href=\"".$host."?me=".$r[0]."\">game #".$r[1]." </a>";
+           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? <a href=\"$host?cancle=1&me=".$r[0]."\">yes</a>";
+           echo "<br />";
+         }
        echo "</p>\n";
 
+
        echo "<p>and these are your games that are already done:<br />\n";
        $result = mysql_query("SELECT hash,game_id from Hand WHERE user_id='$uid' AND status='gameover'" );
        while( $r = mysql_fetch_array($result,MYSQL_NUM))