poverty should work now! added german card deck, tons of small fixes
authorarun <arun@nubati.net>
Thu, 12 Apr 2007 07:33:07 +0000 (07:33 +0000)
committerarun <arun>
Thu, 12 Apr 2007 07:33:07 +0000 (07:33 +0000)
33 files changed:
INSTALL [new file with mode: 0644]
README [new file with mode: 0644]
cards/altenburg/1.png [new file with mode: 0644]
cards/altenburg/11.png [new file with mode: 0644]
cards/altenburg/13.png [new file with mode: 0644]
cards/altenburg/15.png [new file with mode: 0644]
cards/altenburg/17.png [new file with mode: 0644]
cards/altenburg/19.png [new file with mode: 0644]
cards/altenburg/21.png [new file with mode: 0644]
cards/altenburg/23.png [new file with mode: 0644]
cards/altenburg/25.png [new file with mode: 0644]
cards/altenburg/27.png [new file with mode: 0644]
cards/altenburg/29.png [new file with mode: 0644]
cards/altenburg/3.png [new file with mode: 0644]
cards/altenburg/31.png [new file with mode: 0644]
cards/altenburg/33.png [new file with mode: 0644]
cards/altenburg/35.png [new file with mode: 0644]
cards/altenburg/37.png [new file with mode: 0644]
cards/altenburg/39.png [new file with mode: 0644]
cards/altenburg/41.png [new file with mode: 0644]
cards/altenburg/43.png [new file with mode: 0644]
cards/altenburg/45.png [new file with mode: 0644]
cards/altenburg/47.png [new file with mode: 0644]
cards/altenburg/5.png [new file with mode: 0644]
cards/altenburg/7.png [new file with mode: 0644]
cards/altenburg/9.png [new file with mode: 0644]
cards/altenburg/License [new file with mode: 0644]
create_database.sql
css/standard.css
db.php
functions.php
index.php
output.php

diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..8cdf132
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,44 @@
+Installation
+------------
+
+0) get files
+
+get all files from 
+
+http://svn.nubati.net/emaildoko/trunk
+
+1) create database
+
+create a mysql database using the provided file
+
+mysql < create_database.sql
+
+use user, password, database and host option of mysql as needed
+
+2) create a config.php file that defines the following variables:
+
+$host : for example "http://localhost/index.php", note: include the index.php here
+
+database info:
+
+$DB_host 
+$DB_user 
+$DB_password 
+$DB_database 
+
+you can also turn the debug mode on by defining:
+$debug=1;
+
+this will give some extra output and won't send out emails, but display them in the browser
+
+If you hvae problem with the timezone, that is an older PHP version, try adding this in config.php
+
+function       date_default_timezone_set($zone)
+{
+  return;
+}
+
+
+3) log in and enjoy ;)
+
+Arun
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..d3f82d8
--- /dev/null
+++ b/README
@@ -0,0 +1,5 @@
+This is eDoKo an browser based Doppelkopf implementation with email
+notification.  All files are under GPL, the only expection are the
+images of the german card deck. These have been provided by ASS
+Altenburg GmbH (email: info@spielkarten.com) under a free (as in beer)
+license. If you want to use them too you need to email them and sign a license!
\ No newline at end of file
diff --git a/cards/altenburg/1.png b/cards/altenburg/1.png
new file mode 100644 (file)
index 0000000..e224e72
Binary files /dev/null and b/cards/altenburg/1.png differ
diff --git a/cards/altenburg/11.png b/cards/altenburg/11.png
new file mode 100644 (file)
index 0000000..2face0c
Binary files /dev/null and b/cards/altenburg/11.png differ
diff --git a/cards/altenburg/13.png b/cards/altenburg/13.png
new file mode 100644 (file)
index 0000000..3cbeb63
Binary files /dev/null and b/cards/altenburg/13.png differ
diff --git a/cards/altenburg/15.png b/cards/altenburg/15.png
new file mode 100644 (file)
index 0000000..a221b30
Binary files /dev/null and b/cards/altenburg/15.png differ
diff --git a/cards/altenburg/17.png b/cards/altenburg/17.png
new file mode 100644 (file)
index 0000000..7857059
Binary files /dev/null and b/cards/altenburg/17.png differ
diff --git a/cards/altenburg/19.png b/cards/altenburg/19.png
new file mode 100644 (file)
index 0000000..4f6e5f8
Binary files /dev/null and b/cards/altenburg/19.png differ
diff --git a/cards/altenburg/21.png b/cards/altenburg/21.png
new file mode 100644 (file)
index 0000000..b9946b8
Binary files /dev/null and b/cards/altenburg/21.png differ
diff --git a/cards/altenburg/23.png b/cards/altenburg/23.png
new file mode 100644 (file)
index 0000000..f61adab
Binary files /dev/null and b/cards/altenburg/23.png differ
diff --git a/cards/altenburg/25.png b/cards/altenburg/25.png
new file mode 100644 (file)
index 0000000..bb85235
Binary files /dev/null and b/cards/altenburg/25.png differ
diff --git a/cards/altenburg/27.png b/cards/altenburg/27.png
new file mode 100644 (file)
index 0000000..a8773a5
Binary files /dev/null and b/cards/altenburg/27.png differ
diff --git a/cards/altenburg/29.png b/cards/altenburg/29.png
new file mode 100644 (file)
index 0000000..63638f9
Binary files /dev/null and b/cards/altenburg/29.png differ
diff --git a/cards/altenburg/3.png b/cards/altenburg/3.png
new file mode 100644 (file)
index 0000000..048b474
Binary files /dev/null and b/cards/altenburg/3.png differ
diff --git a/cards/altenburg/31.png b/cards/altenburg/31.png
new file mode 100644 (file)
index 0000000..6ec77c8
Binary files /dev/null and b/cards/altenburg/31.png differ
diff --git a/cards/altenburg/33.png b/cards/altenburg/33.png
new file mode 100644 (file)
index 0000000..12af7d1
Binary files /dev/null and b/cards/altenburg/33.png differ
diff --git a/cards/altenburg/35.png b/cards/altenburg/35.png
new file mode 100644 (file)
index 0000000..c7f4c7c
Binary files /dev/null and b/cards/altenburg/35.png differ
diff --git a/cards/altenburg/37.png b/cards/altenburg/37.png
new file mode 100644 (file)
index 0000000..e224e72
Binary files /dev/null and b/cards/altenburg/37.png differ
diff --git a/cards/altenburg/39.png b/cards/altenburg/39.png
new file mode 100644 (file)
index 0000000..b35fa2b
Binary files /dev/null and b/cards/altenburg/39.png differ
diff --git a/cards/altenburg/41.png b/cards/altenburg/41.png
new file mode 100644 (file)
index 0000000..dffb68a
Binary files /dev/null and b/cards/altenburg/41.png differ
diff --git a/cards/altenburg/43.png b/cards/altenburg/43.png
new file mode 100644 (file)
index 0000000..2f78ffb
Binary files /dev/null and b/cards/altenburg/43.png differ
diff --git a/cards/altenburg/45.png b/cards/altenburg/45.png
new file mode 100644 (file)
index 0000000..4a7a6b4
Binary files /dev/null and b/cards/altenburg/45.png differ
diff --git a/cards/altenburg/47.png b/cards/altenburg/47.png
new file mode 100644 (file)
index 0000000..242f0d1
Binary files /dev/null and b/cards/altenburg/47.png differ
diff --git a/cards/altenburg/5.png b/cards/altenburg/5.png
new file mode 100644 (file)
index 0000000..df3ed39
Binary files /dev/null and b/cards/altenburg/5.png differ
diff --git a/cards/altenburg/7.png b/cards/altenburg/7.png
new file mode 100644 (file)
index 0000000..982a8e8
Binary files /dev/null and b/cards/altenburg/7.png differ
diff --git a/cards/altenburg/9.png b/cards/altenburg/9.png
new file mode 100644 (file)
index 0000000..738d144
Binary files /dev/null and b/cards/altenburg/9.png differ
diff --git a/cards/altenburg/License b/cards/altenburg/License
new file mode 100644 (file)
index 0000000..02f0f20
--- /dev/null
@@ -0,0 +1,8 @@
+Verwendung der ASS Altenburger Spielkartenbilder mit Genehmigung der
+Spielkartenfabrik Altenburg GmbH,
+
+ASS Altenburger
+Leipziger Strasse 7, 04600 Altenburg bis zum 31.12.2009
+
+Email: info@spielkarten.com
+internet: www.spielkarten.com
\ No newline at end of file
index e4476ef..7508491 100644 (file)
@@ -72,6 +72,7 @@ CREATE TABLE `Game` (
   `randomnumbers` varchar(136) default NULL,
   `type` enum('normal','solo','wedding','poverty','dpoverty') default NULL,
   `solo` enum('trumpless','jack','queen','trump','club','spade','heart','silent') default NULL,
+  `sickness` int(11) default NULL,
   `startplayer` tinyint(4) default '1', 
   `status` enum('pre','play','gameover') default NULL,
   `ruleset` int(11) default NULL,
index c1ec28b..ca170e0 100644 (file)
@@ -223,6 +223,18 @@ ul.tricks li div div.card3 span{
   height:6em;
 }
 
+.exchange {
+  clear:both;
+  margin:0;
+  padding:0;
+  border:1px solid red;
+  background-color:yellow;
+}
+
+.exchange img {
+  height:6em;
+}
+
 .line{
   clear:both;
   border-top:2px solid gray;
@@ -233,7 +245,8 @@ ul.tricks li div div.card3 span{
 
 .ruleset {
   position:absolute;
-  top:7.5em;
+  top:17.5em;
+//  top:7.5em;
   border:2px solid gray;
   padding:0.3em;
   margin:0;
@@ -247,7 +260,8 @@ ul.tricks li div div.card3 span{
 
 .bug {
   position:absolute;
-  top:14.5em;
+  top:24.5em;
+//  top:14.5em;
   width:10em;
   border:2px solid gray;
   padding-top:0.5em;
@@ -266,4 +280,18 @@ ul.tricks li div div.card3 span{
 
 .submitbutton:hover { 
 background-color:#afa; 
+}
+
+.useroptions{
+  float:right;
+  padding-left:0.3em;
+  border-left: 1px solid #aaa;
+  border-bottom: 1px solid #aaa;
+}
+.useroptions h4 {
+    margin:0.1em;
+    margin-left:0em;
+    padding:0.1em;
+    padding-left:0em;
+    text-aling:left;
 }
\ No newline at end of file
diff --git a/db.php b/db.php
index 7b6ba17..a19242c 100644 (file)
--- a/db.php
+++ b/db.php
@@ -7,12 +7,15 @@
 function DB_open()
 {
   global $DB,$DB_user,$DB_host,$DB_database,$DB_password;
-  if ( $DB = mysql_connect($DB_host,$DB_user, $DB_password) )
-    mysql_select_db($DB_database) or die('Could not select database'); 
+  $DB = @mysql_connect($DB_host,$DB_user, $DB_password);
+  if ( $DB )
+    {
+      mysql_select_db($DB_database) or die('Could not select database'); 
+    }
   else
-    die (mysql_error());
+    return -1;
   
-  return;
+  return 0;
 }
 
 function DB_close()
@@ -160,6 +163,18 @@ function DB_get_handid_by_gameid_and_position($gameid,$pos)
   else
     return -1;
 }
+function DB_get_handid_by_gameid_and_userid($gameid,$userid)
+{
+  $result = mysql_query("SELECT id FROM Hand WHERE game_id=".
+                       DB_quote_smart($gameid)." AND user_id=".
+                       DB_quote_smart($userid));
+  $r      = mysql_fetch_array($result,MYSQL_NUM);
+  
+  if($r)
+    return $r[0];
+  else
+    return -1;
+}
 
 function DB_get_userid_by_hash($hash)
 {
@@ -233,6 +248,22 @@ function DB_set_game_status_by_gameid($id,$status)
   return;
 }
 
+function DB_set_sickness_by_gameid($id,$status)
+{
+  mysql_query("UPDATE Game SET sickness='".$status."' WHERE id=".DB_quote_smart($id));
+  return;
+}
+function DB_get_sickness_by_gameid($id)
+{
+  $result = mysql_query("SELECT sickness FROM Game WHERE id=".DB_quote_smart($id));
+  $r      = mysql_fetch_array($result,MYSQL_NUM);
+  
+  if($r)
+    return $r[0];
+  else
+    return NULL;
+}
+
 function DB_get_game_status_by_gameid($id)
 {
   $result = mysql_query("SELECT status FROM Game WHERE id=".DB_quote_smart($id));
@@ -274,6 +305,18 @@ function DB_get_sickness_by_userid_and_gameid($uid,$gid)
     return 0;
 }
 
+function DB_get_sickness_by_pos_and_gameid($pos,$gid)
+{
+  $result = mysql_query("SELECT sickness FROM Hand WHERE position=".DB_quote_smart($pos).
+                       " AND game_id=".DB_quote_smart($gid));
+  $r      = mysql_fetch_array($result,MYSQL_NUM);
+  
+  if($r)
+    return $r[0];
+  else
+    return 0;
+}
+
 function DB_get_gameid_by_hash($hash)
 {
   $result = mysql_query("SELECT game_id FROM Hand WHERE hash=".DB_quote_smart($hash));
@@ -461,6 +504,17 @@ function DB_get_hash_from_game_and_pos($id,$pos)
     return "";
 }
 
+function DB_get_hash_from_gameid_and_userid($id,$user)
+{
+  $result = mysql_query("SELECT hash FROM Hand WHERE game_id=".DB_quote_smart($id)." and user_id=".DB_quote_smart($user));
+  $r      = mysql_fetch_array($result,MYSQL_NUM);
+  
+  if($r)
+    return $r[0];
+  else
+    return "";
+}
+
 function DB_get_all_names()
 {
   $names  = array();
index ce549c1..cfddbce 100644 (file)
@@ -415,15 +415,34 @@ function card_value($card)
 
 function  create_array_of_random_numbers()
 {
+  global $debug;
+
   $r = array();
   $a = array();
   
   for($i=0;$i<48;$i++)
     $a[$i]=$i+1;
+
+  if(!$debug)
+    $r = array_rand($a,48);
+  else
+    {
+      $a[ 0]=1;     $a[12]=47;   $a[24]=13;   $a[36]=37;
+      $a[ 1]=2;     $a[13]=48;   $a[25]=14;      $a[37]=38;
+      $a[ 2]=3;     $a[14]=27;   $a[26]=15;      $a[38]=39;
+      $a[ 3]=4;     $a[15]=16;   $a[27]=28;      $a[39]=40;
+      $a[ 4]=5;     $a[16]=17;   $a[28]=29;      $a[40]=41;
+      $a[ 5]=6;     $a[17]=18;   $a[29]=30;      $a[41]=42;
+      $a[ 6]=7;     $a[18]=19;   $a[30]=31;      $a[42]=43;
+      $a[ 7]=8;     $a[19]=20;   $a[31]=32;      $a[43]=44;
+      $a[ 8]=9;     $a[20]=45;   $a[32]=21;      $a[44]=33;
+      $a[ 9]=10;    $a[21]=46;   $a[33]=22;      $a[45]=34;
+      $a[10]=11;    $a[22]=35;   $a[34]=23;      $a[46]=25;
+      $a[11]=12;    $a[23]=36;   $a[35]=24;      $a[47]=26;
+    }
   
-#  $r = array_rand($a,48);
-  $r =$a; 
+  $r =$a;          
+
   return $r;
 }
 
@@ -512,6 +531,9 @@ function set_gametype($gametype)
   switch($gametype)
     {
     case "normal":
+    case "wedding":
+    case "poverty":
+    case "dpoverty":
     case "trump":
     case "silent":
       $CARDS["trump"]    = array('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16', 
index d135474..a4d774f 100644 (file)
--- a/index.php
+++ b/index.php
@@ -25,7 +25,14 @@ if(0)
     exit(); 
   }
 
-DB_open();
+if(DB_open()<0)
+  {
+    output_header();
+    echo "Database error, can't connect...";
+    output_footer(); 
+    exit(); 
+  }
+
 output_header();
 
 /* check if we want to start a new game */
@@ -84,20 +91,20 @@ if(myisset("new"))
        $ruleset = DB_get_ruleset_by_gameid($followup); /* just copy ruleset from old game, 
                                                         this way no manipulation is possible */
        if($session)
-         mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,'1','pre',".
+         mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1','pre',".
                      "'$ruleset','$session' ,NULL)");
        else
          {
            /* get max session */
            $max = DB_get_max_session();
            $max++;
-           mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,'1','pre',".
+           mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1','pre',".
                        "'$ruleset','$max' ,NULL)");
            mysql_query("UPDATE Game SET session='".$max."' WHERE id=".DB_quote_smart($followup));
          }
       }
     else
-      mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,'1','pre', ".
+      mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1','pre', ".
                  "'$ruleset',NULL ,NULL)");
     $game_id = mysql_insert_id();
     
@@ -219,8 +226,23 @@ 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);
-    
+    $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";
+      
+      
     /* get rule set for this game */
     $result = mysql_query("SELECT * FROM Rulesets".
                          " LEFT JOIN Game ON Game.ruleset=Rulesets.id ".
@@ -316,7 +338,7 @@ else if(myisset("me"))
                sort($mycards);
                echo "<p class=\"mycards\" style=\"margin-top:8em;\">your cards are: <br />\n";
                foreach($mycards as $card) 
-                 display_card($card);
+                 display_card($card,$PREF["cardset"]);
                echo "</p>\n";   
                
                check_for_sickness($me,$mycards);
@@ -376,9 +398,7 @@ else if(myisset("me"))
            }
          else if($_REQUEST["poverty"] == "yes")
            {
-             echo "So you got poverty. You might as well have said nothing, since this is not implemented yet,".
-               " you need to play a normal game...to make it a bit harder, I'll tell the other people that".
-               " you only have a few trump... should make the game more interesting (although perhaps not for you:))<br />\n";
+             echo "Don't think you can win with just a few trump...? ok, poverty chosen <br />\n";
              DB_set_sickness_by_hash($me,"poverty");
            }
          else if($_REQUEST["nines"] == "yes")
@@ -401,7 +421,7 @@ else if(myisset("me"))
        * set that one in the Game table
        * tell people about it.
        */
-      echo "<br /> Checking if someone else selected solo, nines or wedding... Poverty not handled at the moment<br />";
+      echo "<br /> Checking if someone else selected solo, nines or wedding or poverty.<br />";
       
       /* check if everyone has reached this stage */
       $userids = DB_get_all_userid_by_gameid($gameid);
@@ -429,49 +449,34 @@ else if(myisset("me"))
 
          /* check for different sickness and just output a general info */
 
-         /* check for nines */
+         
          $nines = 0;
-         foreach($userids as $user)
-           if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'nines')
-             {
-               $nines = $user;
-               $name = DB_get_name_by_userid($user);
-               echo "$name has a Vorbehalt. <br />";
-               break;
-             }
-                 
-         /* check players for poverty */
          $poverty = 0;
+         $wedding = 0;
+         $solo = 0;
          foreach($userids as $user)
            {
-             if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'poverty')
+             $name = DB_get_name_by_userid($user);
+             $usersick = DB_get_sickness_by_userid_and_gameid($user,$gameid);
+             if($usersick == 'nines')
+               {
+                 $nines = $user;
+                 echo "$name has a Vorbehalt. <br />";
+                 break;
+               }
+             else if($usersick == 'poverty')
                {
                  $poverty++;
-                 $name = DB_get_name_by_userid($user);
                  echo "$name has a Vorbehalt. <br />";
                }
-           }
-
-         /* check players for wedding */
-         $wedding = 0;
-         foreach($userids as $user)
-           {
-             if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'wedding')
+             else if($usersick == 'wedding')
                {
                  $wedding=$user;
-                 $name = DB_get_name_by_userid($user);
                  echo "$name has a Vorbehalt. <br />"  ;
                }
-           };
-
-         /* check for solo, output vorbehalt */
-         $solo = 0;
-         foreach($userids as $user)
-           {
-             if(DB_get_sickness_by_userid_and_gameid($user,$gameid) == 'solo')
+             else if($usersick == 'solo')
                {
                  $solo++;
-                 $name = DB_get_name_by_userid($user);
                  echo "$name has a Vorbehalt. <br />"  ;
                }
            }
@@ -508,17 +513,41 @@ else if(myisset("me"))
              output_footer();
              exit();
            }
-         else if($poverty==1 && $gametype !="poverty")
+         else if($poverty==1)
            {
              DB_set_gametype_by_gameid($gameid,"poverty");
              $gametype = "poverty";
+             $who=DB_get_sickness_by_gameid($gameid);
+             if(!$who)
+               {
+                 $firstsick = DB_get_sickness_by_pos_and_gameid(1,$gameid);
+                 if($firstsick == "poverty")
+                   DB_set_sickness_by_gameid($gameid,2); /* who needs to be asked first */
+                 else
+                   DB_set_sickness_by_gameid($gameid,1); /* who needs to be asked first */
+               }
            }
-         else if($poverty==2 && $gametype !="dpoverty")
+         else if($poverty==2)
            {
              DB_set_gametype_by_gameid($gameid,"dpoverty");
              $gametype = "dpoverty";
+             $who=DB_get_sickness_by_gameid($gameid);
+             if(!$who)
+               {
+                 $firstsick = DB_get_sickness_by_pos_and_gameid(1,$gameid);
+                 if($firstsick == "poverty")
+                   {
+                     $seconsick = DB_get_sickness_by_pos_and_gameid(1,$gameid);
+                     if($secondsick == "poverty")
+                       DB_set_sickness_by_gameid($gameid,30); /* who needs to be asked first */
+                     else
+                       DB_set_sickness_by_gameid($gameid,20); /* who needs to be asked first */
+                   }
+                 else
+                   DB_set_sickness_by_gameid($gameid,10); /* who needs to be asked first */
+               }
            }
-         else if($wedding> 0 && $gametype !="wedding")
+         else if($wedding> 0)
            {
              DB_set_gametype_by_gameid($gameid,"wedding");
              $gametype = "wedding";
@@ -541,7 +570,7 @@ else if(myisset("me"))
              $usersick = DB_get_sickness_by_userid_and_gameid($user,$gameid);
 
              if($usersick)
-               echo "$name has $usersick <br />"; /*TODO: perhaps save this in a string and store in Game? */
+               echo "$name has $usersick. <br />"; /*TODO: perhaps save this in a string and store in Game? */
 
              if($usersick=="poverty")
                $poverty++;
@@ -596,26 +625,206 @@ else if(myisset("me"))
              DB_set_hand_status_by_hash($me,'play');
              break;
            case "poverty":
-             /* use extra column in DB.Game to store whom to ask, 
-              * should be set for poverty and dpoverty(use two digits for dpoverty?) earlier*/
-
+           case "dpoverty":
              /* check if poverty resolved (e.g. DB.Game who set to NULL)
               *   yes? =>trump was taken, start game; break; 
-              *   
-              * check if we are being asked now
-              *    no, display wait message, e.g. player X is asked at the moment
+              */
+             $who=DB_get_sickness_by_gameid($gameid);
+             if($who<0)
+               { /* trump has been taken */
+                 DB_set_hand_status_by_hash($me,'play');
+                 break;
+               };
+             
+             if($who>9) /*= two people still have trump on the table*/
+               $add=10;
+             else
+               $add=1;
+
+             /* check if we are being asked now
+              *    no, display wait message, e.g. player X is asked at the moment 
+              */
+             $usersick = DB_get_sickness_by_userid_and_gameid($myid,$gameid);
+             if(myisset("trump") && $_REQUEST["trump"]=="no" && ($who==$mypos || $who==$mypos*10))
+               {
+                 /* user doesn't want to take trump */
+                 /* set next player who needs to be asked */
+                 $firstsick  = DB_get_sickness_by_pos_and_gameid($mypos+1,$gameid);
+                 $secondsick = DB_get_sickness_by_pos_and_gameid($mypos+2,$gameid);
+                 if($firstsick!="poverty")
+                   DB_set_sickness_by_gameid($gameid,$who+$add);
+                 else
+                   {
+                     if($secondsick!="poverty")
+                       DB_set_sickness_by_gameid($gameid,$who+$add*2);
+                     else
+                       DB_set_sickness_by_gameid($gameid,$who+$add*3);
+                   };
+
+                 /* this user is done */
+                 DB_set_hand_status_by_hash($me,'play');
+                 break;                
+               }
+             else if(myisset("trump") && !myisset("exchange") && $_REQUEST["trump"]>0 && ($who==$mypos || $who==$mypos*10))
+               {
+                 /* user wants to take trump */
+                 $trump = $_REQUEST["trump"];
+
+                 /* get hand id for user $trump */
+                 $userhand=DB_get_handid_by_gameid_and_userid($gameid,$trump);
+                 /* 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 "<form action=\"index.php\" method=\"post\">\n";
+                 echo "  <input type=\"hidden\" name=\"exchange\" value=\"-1\" />\n";
+                 echo "  <input type=\"hidden\" name=\"trump\" value=\"".$trump."\" />\n";
+                 echo "  <input type=\"hidden\" name=\"me\" value=\"".$me."\" />\n";
+                 echo "  <input type=\"submit\" class=\"submitbutton\" value=\"select cards to give back\" />\n";
+                 echo "</form>\n";
+               }
+             else if(myisset("trump","exchange") && $_REQUEST["trump"]>0 && ($who==$mypos || $who==$mypos*10))
+               {
+                 $trump    = $_REQUEST["trump"];
+                 $exchange = $_REQUEST["exchange"];
+                 $userhand = DB_get_handid_by_gameid_and_userid($gameid,$trump);
+
+                 echo "you give $exchange to your partner";
+
+                 /* if exchange is set to a value>0, exchange that card back to user $trump */
+                 if($exchange >0)
+                   {
+                     $result = mysql_query("UPDATE Hand_Card SET hand_id='$userhand'".
+                                           " WHERE hand_id='$myhand' AND card_id='$exchange'" );
+                   };
+                 
+                 /* if number of cards == 12, set status to play for both users */
+                 $result = mysql_query("SELECT COUNT(*) FROM Hand_Card  WHERE hand_id='$myhand'" );
+                 $r      = mysql_fetch_array($result,MYSQL_NUM);
+                 if(!$r)
+                   {
+                     die("error in poverty");
+                   };
+                 if($r[0]==12)
+                   {
+                     if($gametype=="poverty" || $who<9)
+                       {
+                         DB_set_sickness_by_gameid($gameid,-1); /* done with poverty */                          
+                       }
+                     else /* reduce poverty count by one, that is go to single digits $who */
+                       {
+                         $add=1;
+                         $who=$who/10;
+
+                         $firstsick  = DB_get_sickness_by_pos_and_gameid($mypos+1,$gameid);
+                         $secondsick = DB_get_sickness_by_pos_and_gameid($mypos+2,$gameid);
+                         if($firstsick!="poverty")
+                           DB_set_sickness_by_gameid($gameid,$who+$add);
+                         else
+                           {
+                             if($secondsick!="poverty")
+                               DB_set_sickness_by_gameid($gameid,$who+$add*2);
+                             else
+                               DB_set_sickness_by_gameid($gameid,$who+$add*3);
+                           };
+                       }
+                     
+                     /* this user is done */
+                     DB_set_hand_status_by_hash($me,'play');
+                     /* and so is his partner */
+                     $hash = DB_get_hash_from_gameid_and_userid($gameid,$trump);
+                     DB_set_hand_status_by_hash($hash,'play');
+
+                     break;
+                   }
+                 else
+                   {
+                     /* else show all trump, have lowest card pre-selected, have hidden setting for */
+                     echo "you need to get rid of a few cards<br />\n";
+                     
+                     set_gametype($gametype); /* this sets the $CARDS variable */
+                     $mycards = DB_get_hand($me);
+                     $mycards = mysort($mycards,$gametype);
+
+                     echo "<form class=\"exchange\" action=\"index.php\" method=\"post\">\n";
+                     $type="exchange";
+                     foreach($mycards as $card) 
+                       display_link_card($card,$PREF["cardset"],$type);
+                     echo "  <input type=\"hidden\" name=\"trump\" value=\"".$trump."\" />\n";
+                     echo "  <input type=\"hidden\" name=\"me\" value=\"".$me."\" />\n";
+                     echo "  <input type=\"submit\" class=\"submitbutton\" value=\"select one card to give back\" />\n";
+                     echo "</form>\n";
+                   }
+               }
+             else if($who == $mypos || $who == $mypos*10)
+               {
+                 foreach($userids as $user)
+                   {
+                     $name = DB_get_name_by_userid($user);
+                     $usersick = DB_get_sickness_by_userid_and_gameid($user,$gameid);
+                     
+                     if($usersick=="poverty")
+                       {
+                         $hash =DB_get_hash_from_gameid_and_userid($gameid,$user);
+                         $cards=DB_get_hand($hash);
+                         $nrtrump=count_trump($cards);
+                         /* count trump */
+                         if($nrtrump<4)
+                           echo "Player $name has $nrtrump trump. Do you want to take them?".
+                             "<a href=\"index.php?me=$me&amp;trump=$user\">yes</a> <br />";
+                       }
+                   }
+                 echo "I don't want to take any trump: ".
+                   "<a href=\"index.php?me=$me&amp;trump=no\">yes</a> <br />";
+               }
+             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 
               *      no, set whom-to-ask to next player, email next player, cancle game if no next player
               *      yes -> link to new page:display all cards, ask for N return cards
               *          set re/contra 
               *        
               */
-           case "dpoverty":
-             echo "TODO: handle poverty here (almost done in my developing version)";
-             DB_set_hand_status_by_hash($me,'play');
            };
        }
-      
+      /* check if noone wanted to take trump, in that case the gamesickness would be set to 5 or 50 */
+      $who=DB_get_sickness_by_gameid($gameid);
+      if($who==5 || $who==50)
+       {
+         $message = "Hello, \n\n".
+           "Game $gameid has been cancled since nobody wanted to take the trump.\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 (poverty not resolved)",$message);
+           }
+         
+         /* delete everything from the dB */
+         DB_cancel_game($me);
+         
+         echo "<p style=\"background-color:red\";>Game $gameid has been cancled.<br /><br /></p>";
+         output_footer();
+         exit();
+       }
+
       /* check if all players are ready to play */
       $ok=1;
       foreach($userids as $user)
@@ -789,7 +998,7 @@ else if(myisset("me"))
            echo "        <span class=\"comment\">".$comment."</span>\n";
          
          echo "        ";
-         display_card($r[0]);
+         display_card($r[0],$PREF["cardset"]);
          
          echo "      </div>\n"; /* end div card */
          
@@ -878,7 +1087,7 @@ else if(myisset("me"))
              /* display played card */
              echo "<div class=\"card\">";
              echo " you played  <br />";
-             display_card($card);
+             display_card($card,$PREF["cardset"]);
              echo "</div>\n";
              
              /*check if we still have cards left, else set status to gameover */
@@ -1019,9 +1228,9 @@ else if(myisset("me"))
          foreach($mycards as $card) 
            {
              if($followsuit && !same_type($card,$firstcard))
-               display_card($card);
+               display_card($card,$PREF["cardset"]);
              else
-               display_link_card($card);
+               display_link_card($card,$PREF["cardset"]);
            }
          
          echo "<br />\nA short comments:<input name=\"comment\" type=\"text\" size=\"30\" maxlength=\"50\" />\n";
@@ -1033,7 +1242,7 @@ else if(myisset("me"))
        {
          echo "Your cards are: <br />\n";
          foreach($mycards as $card) 
-           display_card($card);
+           display_card($card,$PREF["cardset"]);
        }
       else if($mystatus=='gameover')
        {
@@ -1041,7 +1250,7 @@ else if(myisset("me"))
          $oldcards = mysort($oldcards,$gametype);
          echo "Your cards were: <br />\n";
          foreach($oldcards as $card) 
-           display_card($card);
+           display_card($card,$PREF["cardset"]);
        }
       echo "</div>\n";
       
@@ -1129,6 +1338,7 @@ else if(myisset("me"))
        }
      else 
      {
+       /* verify password and email */
        if(strlen($password)!=32)
         $password = md5($password);
        
@@ -1139,46 +1349,70 @@ else if(myisset("me"))
        
        if($ok)
         {
-          $time = DB_get_user_timestamp($uid);
-          $unixtime =strtotime($time);
-          
-          $offset = DB_get_user_timezone($uid);
-          $zone = return_timezone($offset);
-          date_default_timezone_set($zone);
-          
-          echo "last login: ".date("r",$unixtime)."<br />";
-          
-          DB_update_user_timestamp($uid);
-          
-          echo "<p>these are the games you are playing in:<br />\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'" );
-          while( $r = mysql_fetch_array($result,MYSQL_NUM))
+          if(myisset("setpref"))
+            {
+              $setpref=$_REQUEST["setpref"];
+              switch($setpref)
+                {
+                case "germancards":
+                case "englishcards":
+                  $result = mysql_query("SELECT * from User_Prefs".
+                                        " WHERE user_id='$uid' AND pref_key='cardset'" );
+                  if( mysql_fetch_array($result,MYSQL_NUM))
+                    $result = mysql_query("UPDATE User_Prefs SET value=".DB_quote_smart($setpref).
+                                          " WHERE user_id='$uid' AND pref_key='cardset'" );
+                  else
+                    $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;
+                }
+            }
+          else /* output default user page */
             {
-              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&amp;me=".$r[0]."\">yes</a>".
-                  " (clicking here is final and can't be restored)";
-              echo "<br />";
+              $time = DB_get_user_timestamp($uid);
+              $unixtime =strtotime($time);
+              
+              $offset = DB_get_user_timezone($uid);
+              $zone = return_timezone($offset);
+              date_default_timezone_set($zone);
+              
+              /* display links to settings */
+              output_user_settings($email,$password);
+              
+              echo "last login: ".date("r",$unixtime)."<br />";
+              
+              DB_update_user_timestamp($uid);
+              
+              echo "<p>these are the games you are playing in:<br />\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'" );
+              while( $r = mysql_fetch_array($result,MYSQL_NUM))
+                {
+                  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&amp;me=".$r[0]."\">yes</a>".
+                      " (clicking here is final and can't be restored)";
+                  echo "<br />";
+                }
+              echo "</p>\n";
+              
+              
+              echo "<p>and these are your games that are already done:<br />Game: \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))
+                echo "<a href=\"".$host."?me=".$r[0]."\">#".$r[1]." </a>, ";
+              echo "</p>\n";
+              
+              $names = DB_get_all_names();
+              echo "<p>registered players:<br />\n";
+              foreach ($names as $name)
+                echo "$name, \n";
+              echo "</p>\n";
+              
+              echo "<p>Want to start a new game? Visit <a href=\"".$host."?new\">this page.</a></p>";
             }
-          echo "</p>\n";
-          
-          
-          echo "<p>and these are your games that are already done:<br />Game: \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))
-            echo "<a href=\"".$host."?me=".$r[0]."\">#".$r[1]." </a>, ";
-          echo "</p>\n";
-          
-          $names = DB_get_all_names();
-          echo "<p>registered players:<br />\n";
-          foreach ($names as $name)
-            echo "$name, \n";
-          echo "</p>\n";
-          
-          echo "<p>Want to start a new game? Visit <a href=\"".$host."?new\">this page.</a></p>";
         }
        else
         {
index a85c2bb..7287030 100644 (file)
@@ -25,6 +25,31 @@ function output_link_to_user_page($email,$password)
   return;
 }
 
+function output_user_settings($email,$password)
+{
+  echo "<div class=\"useroptions\">\n";
+  echo "<h4> Settings </h4>\n";
+  echo "<form action=\"index.php\" method=\"post\">\n";
+  echo "  <input type=\"hidden\" name=\"email\" value=\"".$email."\" />\n";
+  echo "  <input type=\"hidden\" name=\"password\" value=\"".$password."\" />\n";
+  echo "  <input type=\"submit\" class=\"submitbutton\" name=\"passwd\" value=\"change password\" /> <br />\n";
+  echo "</form>\n";
+  echo "<form action=\"index.php\" method=\"post\">\n";
+  echo "  <input type=\"hidden\" name=\"email\" value=\"".$email."\" />\n";
+  echo "  <input type=\"hidden\" name=\"password\" value=\"".$password."\" />\n";
+  echo "  <input type=\"hidden\" name=\"setpref\"  value=\"englishcards\" />\n";
+  echo "  <input type=\"submit\" class=\"submitbutton\" value=\"use english cards\" /> <br />\n";
+  echo "</form>\n";
+  echo "<form action=\"index.php\" method=\"post\">\n";
+  echo "  <input type=\"hidden\" name=\"email\" value=\"".$email."\" />\n";
+  echo "  <input type=\"hidden\" name=\"password\" value=\"".$password."\" />\n";
+  echo "  <input type=\"hidden\" name=\"setpref\"  value=\"germancards\" />\n";
+  echo "  <input type=\"submit\" class=\"submitbutton\" value=\"use german cards\" /> <br />\n";
+  echo "</form>\n";
+  echo "</div>\n";
+  return;
+}
+
 function output_register()
 {
   echo "IMPORTANT: passwords are going over the net as clear text, so pick an easy password. No need to pick anything complicated here ;)<br /><br />";
@@ -144,12 +169,12 @@ function display_card($card,$dir="english")
   return;
 }
 
-function display_link_card($card,$dir="english")
+function display_link_card($card,$dir="english",$type="card")
 {
   if( $card/2 - (int)($card/2) == 0.5)
-    echo "<input type=\"radio\" name=\"card\" value=\"".$card."\" /><img src=\"cards/".$dir."/".$card.".png\" alt=\"\" />\n";
+    echo "<input type=\"radio\" name=\"".$type."\" value=\"".$card."\" /><img src=\"cards/".$dir."/".$card.".png\" alt=\"\" />\n";
   else
-    echo "<input type=\"radio\" name=\"card\" value=\"".$card."\" /><img src=\"cards/".$dir."/".($card-1).".png\" alt=\"\" />\n";
+    echo "<input type=\"radio\" name=\"".$type."\" value=\"".$card."\" /><img src=\"cards/".$dir."/".($card-1).".png\" alt=\"\" />\n";
   return;
 }
 
@@ -319,11 +344,15 @@ function output_header()
 
 function output_footer()
 {
-  global $REV;
+  global $REV,$PREF;
 
   echo "<div class=\"footer\">\n";
-  echo "<p class=\"left\"> copyright 2006-2007 Arun Persaud</p>\n";
-  echo "<p class=\"right\"> Revision: $REV; <a href=\"http://svn.nubati.net/emaildoko/trunk/\">http://svn.nubati.net/emaildoko/trunk/</a></p> \n";
+  echo "<p class=\"left\"> copyright 2006-2007 Arun Persaud <br />\n".
+    "Verwendung der [deutschen] Kartenbilder mit Genehmigung der Spielkartenfabrik Altenburg GmbH,(c) ASS Altenburger <br />".
+    "- ASS Altenburger Spielkarten - Spielkartenfabrik Altenburg GmbH <br />".
+    "a Carta Mundi Company Email: info@spielkarten.com Internet: www.spielkarten.com</p>\n";
+  echo "<p class=\"right\"> Revision: $REV; <a href=\"http://svn.nubati.net/emaildoko/trunk/\">".
+    "http://svn.nubati.net/emaildoko/trunk/</a></p> \n";
   echo "\n";
   echo "</div>\n";