BUGFIX: fixed previous commit about sending mail in utf-8
[e-DoKo.git] / index.php
index 05dc42f0cc655f716ecac06b230223ddbde3930d..f71643accab1699a62573e4b77ff67298729fc44 100644 (file)
--- a/index.php
+++ b/index.php
-<!DOCTYPE html PUBLIC
-    "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"
-    "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-  <head>
-     <title>Doko via email</title>
-     <link rel="stylesheet" type="text/css" href="standard.css"/>      
-  </head>
-<body>
-<h1> Welcome to E-Doko </h1>
-
-<?php
-/* helper function */
-
-function display_card($card)
-{
-  if( $card/2 - (int)($card/2) == 0.5)
-    echo "<img src=\"cards/".$card.".png\" height=\"100\">";
-  else
-    echo "<img src=\"cards/".($card-1).".png\" height=\"100\">";
-  return;
-}
-   function display_link_card($card,$me)
-{
-  if( $card/2 - (int)($card/2) == 0.5)
-    echo "<a href=\"index.php?me=$me&card=$card\"><img src=\"cards/".$card.".png\" height=\"100\"></a>";
-  else
-    echo "<a href=\"index.php?me=$me&card=$card\"><img src=\"cards/".($card-1).".png\" height=\"100\"></a>";
-  return;
-}
-
-function save_status()
-{
-  global $player,$game,$hash,$history;
-
-  $output = fopen("status.txt","w");
-  if ($output)
-    {
-      foreach($hash as $key)
-       {
-         $tmp="";
-         if( ereg("i",$player[$key]["option"]) )
-           $tmp.="i";
-         if( ereg("s",$player[$key]["option"]) )
-           $tmp.="s";
-         if( ereg("t",$player[$key]["option"]) )
-           $tmp.="t";
-         if( ereg("c",$player[$key]["option"]) )
-           $tmp.="c";
-         $player[$key]["option"]=$tmp;
-
-         fwrite($output,"".$player[$key]["hash"].":" );
-         fwrite($output,"".$player[$key]["name"].":" );
-         fwrite($output,"".$player[$key]["email"].":" );
-         fwrite($output,"".$player[$key]["option"].":" );
-         fwrite($output,"".$player[$key]["cards"] .":");
-         fwrite($output,"\n");
-       }
-      fwrite($output,"\n");
-      foreach($history as $line)
-       fwrite($output,$line);
-
-      fwrite($output,"\n");
-      fclose($output);
-    }
-  else
-    echo "can't open file for writing, please inform the admin.";
-  
-  return;
-}
-
-$history=array();
-
-/* check for status file and read it, if possible */
-
-if(file_exists("status.txt"))
-  $lines = file("status.txt");
- else
-   die("no file");
-
-/* check if we want to start a new game */
-if( isset($_REQUEST["PlayerA"]) && 
-    isset($_REQUEST["PlayerB"]) && 
-    isset($_REQUEST["PlayerC"]) && 
-    isset($_REQUEST["PlayerD"]) && 
-    isset($_REQUEST["EmailA"]) && 
-    isset($_REQUEST["EmailB"]) && 
-    isset($_REQUEST["EmailC"]) && 
-    isset($_REQUEST["EmailD"]) )
-  {
-    $PlayerA = $_REQUEST["PlayerA"];
-    $PlayerB = $_REQUEST["PlayerB"];
-    $PlayerC = $_REQUEST["PlayerC"];
-    $PlayerD = $_REQUEST["PlayerD"];
-    $EmailA  = $_REQUEST["EmailA"] ;
-    $EmailB  = $_REQUEST["EmailB"] ;
-    $EmailC  = $_REQUEST["EmailC"] ;
-    $EmailD  = $_REQUEST["EmailD"] ;
-    
-    /* send out email, check for error with email */
-    echo "send out emails to everyone, asking if they want to join";
-    echo "use link <br>";
-    echo "<a href=\"index.php?a=hash1\"> player 1</a> <br />";
-    echo "<a href=\"index.php?a=hash2\"> player 2</a> <br />";
-    echo "<a href=\"index.php?a=hash3\"> player 3</a> <br />";
-    echo "<a href=\"index.php?a=hash4\"> player 4</a> <br />";
-    
-    /* read in random.txt */
-    if(file_exists("random.txt"))
-      $random = file("random.txt");
-    else
-      die("no random file");
-    $randomNR = explode( ":", $random[1] );
-    
-    /* write initial status into file */
-    $output = fopen("status.txt","w");
-    if ($output)
-      {
-       fwrite($output, "hash1:".$PlayerA.":".$EmailA."::" );
-       for($i=0;$i<11;$i++)
-         fwrite($output,"$randomNR[$i];" );
-       fwrite($output,"$randomNR[11]:" ); $i++;
-       fwrite($output,"\n");
-       
-       fwrite($output, "hash2:$PlayerB:$EmailB::" );
-       for(;$i<23;$i++)
-         fwrite($output,"$randomNR[$i];" );
-       fwrite($output,"$randomNR[23]:" ); $i++;
-       fwrite($output,"\n");
-       
-       fwrite($output, "hash3:$PlayerC:$EmailC::" );
-       for(;$i<35;$i++)
-         fwrite($output,"$randomNR[$i];" );
-       fwrite($output,"$randomNR[35]:" ); $i++;
-       fwrite($output,"\n");
-       
-       fwrite($output, "hash4:$PlayerD:$EmailD::");
-       for(;$i<47;$i++)
-         fwrite($output,"$randomNR[$i];" );
-       fwrite($output,"$randomNR[47]:" );
-       fwrite($output,"\n");
-       
-       fclose($output);
-      }
-    else
-      echo "can't open file for writing";
-  };
-
-/* test if a game is running, else output everything for a new game */
-if(sizeof($lines)<2)
-  {
-?>
- <p> no game in progress, please input 4 names and email addresses </p>
- <form action="index.php" method="post">
-   Name:  <input name="PlayerA" type="text" size="10" maxlength="20" /> 
-   Email: <input name="EmailA"  type="text" size="10" maxlength="20" /> <br />
-
-   Name:  <input name="PlayerB" type="text" size="10" maxlength="20" /> 
-   Email: <input name="EmailB"  type="text" size="10" maxlength="20" /> <br />
-
-   Name:  <input name="PlayerC" type="text" size="10" maxlength="20" /> 
-   Email: <input name="EmailC"  type="text" size="10" maxlength="20" /> <br />
-
-   Name:  <input name="PlayerD" type="text" size="10" maxlength="20" /> 
-   Email: <input name="EmailD"  type="text" size="10" maxlength="20" /> <br />
-
-   <input type="submit" value="start game" />
- </form>
 <?php
-   }
- else
-   { /* load game status */
-     $game["init"]=0;
-     
-     $tmp = explode( ":",$lines[0]);
-     $hash[0]   = $tmp[0];
-     $player[$tmp[0]]["number"] = 0;
-     $player[$tmp[0]]["hash"]   = $tmp[0];
-     $player[$tmp[0]]["name"]   = $tmp[1];
-     $player[$tmp[0]]["email"]  = $tmp[2];
-     $player[$tmp[0]]["option"] = $tmp[3];
-     $player[$tmp[0]]["cards"]  = $tmp[4];
-     if(ereg("s",$tmp[3])) $game["init"]++;
-
-     $tmp = explode( ":",$lines[1]);
-     $hash[1]   = $tmp[0];
-     $player[$tmp[0]]["number"] = 1;
-     $player[$tmp[0]]["hash"]   = $tmp[0];
-     $player[$tmp[0]]["name"]   = $tmp[1];
-     $player[$tmp[0]]["email"]  = $tmp[2];
-     $player[$tmp[0]]["option"] = $tmp[3]; 
-     $player[$tmp[0]]["cards"]  = $tmp[4];
-     if(ereg("s",$tmp[3])) $game["init"]++;
-     
-     $tmp = explode( ":",$lines[2]);
-     $hash[2]   = $tmp[0];
-     $player[$tmp[0]]["number"] = 2;
-     $player[$tmp[0]]["hash"]   = $tmp[0];
-     $player[$tmp[0]]["name"]   = $tmp[1];
-     $player[$tmp[0]]["email"]  = $tmp[2];
-     $player[$tmp[0]]["option"] = $tmp[3];
-     $player[$tmp[0]]["cards"]  = $tmp[4];
-     if(ereg("s",$tmp[3])) $game["init"]++;
-     
-     $tmp = explode( ":",$lines[3]);
-     $hash[3]   = $tmp[0];
-     $player[$tmp[0]]["number"] = 3;
-     $player[$tmp[0]]["hash"]   = $tmp[0];
-     $player[$tmp[0]]["name"]   = $tmp[1];
-     $player[$tmp[0]]["email"]  = $tmp[2];
-     $player[$tmp[0]]["option"] = $tmp[3];
-     $player[$tmp[0]]["cards"]  = $tmp[4];
-     if(ereg("s",$tmp[3])) $game["init"]++;
-
-     /* save the game history */
-     for($i=4;$i<sizeof($lines);$i++)
-       {
-        if(!ereg("^[[:space:]]*$",trim($lines[$i])))
-          {
-            $history[] = $lines[$i];
-          }
-       }
-     if(sizeof($history)== 0)
-       $history[] = "0:";
-
-/*     **
- *    *  *
- *    ****
- *    *  *
+/* Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Arun Persaud <arun@nubati.net>
+ *
+ *   This file is part of e-DoKo.
+ *
+ *   e-DoKo is free software: you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, either version 3 of the License, or
+ *   (at your option) any later version.
+ *
+ *   e-DoKo is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with e-DoKo.  If not, see <http://www.gnu.org/licenses/>.
  *
- * check if a player wants to accept a game 
  */
-     
-     if(isset($_REQUEST["a"]))
-       {
-        $a=$_REQUEST["a"];
-        
-        if( ereg("[is]",$player[$a]["option"]) &&  $game["init"]<4)
-          {
-            echo "just wait for the game to start";
-          }
-        else  if( !ereg("[is]",$player[$a]["option"]) )
-          {
 
- ?>
- <form action="index.php" method="post">
-   Do you want to play a game of DoKo?
-   yes<input type="radio" name="in" value="yes" />
-   no<input type="radio" name="in" value="no" /> <br />
+error_reporting(E_ALL);
 
-   Do you want to get an email for every card played or only if it your move?
-   every card<input type="radio" name="update" value="card" />
-   only on my turn<input type="radio" name="update" value="turn" /> <br />
-<?php   
-            echo "<input type=\"hidden\" name=\"b\" value=\"$a\" />\n";
-            echo "\n";
-            echo "<input type=\"submit\" value=\"count me in\" />\n";
-            echo " </form>\n";
-          }
-       }
-
-/*   ***
- *   *  *
- *   ***
- *   *  *
- *   ***
- * yes? email him his hand, ask for solo, poverty, email every move or every card? 
+/* start a session, if it is not already running.
+ * This way people don't have to log in all the times.
+ * The session variables can also be read out from different
+ * php scripts, so that the code can be easily split up across several files
  */
-     if(isset($_REQUEST["b"]))
-       {
-        $b=$_REQUEST["b"];
-        
-        if( ereg("s",$player[$b]["option"])  && $game["init"]<4)
-          {
-            echo "just wait for the game to start";
-          }
-        else if(!isset($_REQUEST["in"])|| !isset($_REQUEST["update"]) )
-          {
-            echo "go back to ";
-            echo "<a href=\"index.php?a=$b\"> here and fill out the form </a> <br />";
-          }
-        else
-          { /* show the hand */
-            if($_REQUEST["update"]=="card") $player[$b]["option"].="c";
-            if($_REQUEST["update"]=="turn") $player[$b]["option"].="t";
-            
-            $player[$b]["option"].="i";
-            
-            save_status();
-            
-            $allcards = $player[$b]["cards"];
-            $mycards = explode(";",$allcards);
-            
-            sort($mycards);
-            echo "your cards are <br>";
-            foreach($mycards as $card) 
-              {
-                display_card($card);
-              }
-            echo "<br />\n";   
- ?>
- <form action="index.php" method="post">
-   
-   do you want to play solo?
-   yes<input type="radio" name="solo" value="yes" />
-   no<input type="radio" name="solo" value="no" /> <br />
+session_start();
+
+include_once("config.php");                /* needs to be first in list, since other includes use this */
+include_once("./include/output.php");      /* html output only */
+include_once("./include/db.php");          /* database only */
+include_once("./include/functions.php");   /* the rest */
 
-   do you have a wedding?
-   yes<input type="radio" name="wedding" value="yes" />
-   no<input type="radio" name="wedding" value="no" /> <br />
+/* make sure that user has set all variables in config.php */
+config_check();
 
-   do you have poverty?
-   yes<input type="radio" name="poverty" value="yes" />
-   no<input type="radio" name="poverty" value="no" /> <br />
-   
-<?php   
-             echo "<input type=\"hidden\" name=\"c\" value=\"$b\" />\n";
-            echo "<input type=\"submit\" value=\"count me in\" />\n";
+/* open the database */
+$DBopen = DB_open();
+if($DBopen<0)
+  {
+    output_header();
 
-            echo "</form>\n";
-          }
-       }
-     if(isset($_REQUEST["c"]))
-       {
-        $c=$_REQUEST["c"];
-        
-        if(!isset($_REQUEST["solo"])|| !isset($_REQUEST["wedding"])|| !isset($_REQUEST["poverty"]) )
-          {
-            echo "go back to ";
-            echo "<a href=\"index.php?b=$c\"> here and fill out the form </a> <br />";
-          }
-        else if(  ereg("s",$player[$c]["option"]) && $game["init"]<4 )
-          {
-            echo "just wait for the game to start";
-          }
-        else if($game["init"]<4)
-          { 
-            echo "handle krankheit <br />";
+    if($DBopen == -1)
+      echo "Database error, can't connect... Please wait a while and try again. ".
+       "If the problem doesn't go away feel free to contact $ADMIN_NAME at $ADMIN_EMAIL.";
+    else if ($DBopen == -2)
+      echo 'Wrong database version, please update your database using the update.php script.';
 
-            echo "email this out: you're in. once everyone has filled out the form,";
-            echo "the game will start and you'll get an eamil about it";
-            
-            $player[$c]["option"].="s";
+    output_footer();
+    exit();
+  }
 
-            save_status();
-          }
-       }
-     if($game["init"]==4)
-       {
-        if(!isset($_REQUEST["me"]))
-          echo "a game is in progress, but you are not playing";
-        else
-          {
-            $me = $_REQUEST["me"];
+/**** localization ****/
+/* needs to be in front of output_header, but we don't know the users preferences at this time,
+ * so we go by the session variable or if language is set
+ */
+/* set default */
+$language =  detectlanguage();
 
-            echo "game in progress and you are in it<br>";
-            foreach($history as $play)
-              {
-                echo "<br />";
+/* check if default in array of supported languages, else default to english */
+$supported_languages = array ('en','de');
 
-                $trick = explode(":",$play);
-                
-                $last=-2;
-                /* found old trick, display it */
-                for($i=0;$i<sizeof($trick)-1;$i++)
-                  {
-                    $card=$trick[$i];
-                    if(ereg("->",$card))
-                      {
-                        $tmp = explode("->",$card);
-                        echo $player[$hash[$tmp[0]]]["name"]." played ";
-                        display_card($tmp[1]);
-                        $last=$tmp[0];
-                      }
-                  }
-              }
-            
-            $next = $last + 1;
-            if ($next>=4) 
-              $next -= 4 ;
-            if($last<0)
-              {
-                $next=$history[sizeof($history)-1][0];
-              }
+if ( !in_array($language, $supported_languages) )
+   $language = 'en';
 
+/* override with explicit request from user */
+if(myisset('language'))
+  $language = $_REQUEST['language'];
+else if(isset($_SESSION['language']))
+  $language = $_SESSION['language'];
 
-            if(isset($_REQUEST["card"]))
-              {
-                if($hash[$next]==$me)
-                  {
-                    $card=$_REQUEST["card"];
-                    echo "EMAIL: you played $card ";
-                    $mycards = explode(";",$player[$me]["cards"]);
-                    if(in_array($card,$mycards))
-                      {
-                        $tmp=array();
-                        echo "<br>";
-                        foreach($mycards as $m)
-                          {
-                            if($m!=$card)
-                              {
-                                $tmp[]=$m;
-                                echo "adding card $m <br>";
-                              }
-                          }
-                        $tmp2="";
-                        for($i=0;$i<sizeof($tmp)-1;$i++)
-                          {
-                            $tmp2.=$tmp[$i].";";
-                            echo "adding card $tmp2 at $i <br>";
-                          }
-                        $tmp2.=$tmp[$i];
-                        echo "adding card $tmp2 at $i *<br>";
-                        $player[$me]["cards"]=$tmp2;
-                        
-                        if($last<0)
-                          {
-                            $history[sizeof($history)-1]="".$player[$me]["number"]."->".$card.":\n";
-                          }
-                        else
-                          {
-                            $tmp = explode(":",$history[sizeof($history)-1]);
-                            $tmp[sizeof($tmp)-1] = "".$player[$me]["number"]."->".$card.":";
-                            $history[sizeof($history)-1]=join(":",$tmp);
-                          }
-                        save_status();
-                        
-                        display_card($card);
-                      }
-                    else
-                      echo "seems like you don't have that card<br>";
-                         
-                  }
-                
-              }
-            else if(isset($_REQUEST["win"]) && strlen($history[sizeof($history)-1])>3)
-              {
-                $win=$_REQUEST["win"];
-                $history[]=$win.":\n";
-                echo "juhu someone won:$win <br>";
+/* set it */
+set_language($language);
+/**** end language ****/
 
-                save_status();
-              }
-            echo "<br />";
+/* done major error checking, output header of HTML page */
+output_header();
 
-            $tmp = explode(":",$history[sizeof($history)-1]);
+/* The rest of the file consists of handling user input.
+ * The user sends information via html GET and POST variables,
+ * and the action variable tells the prog what the user wants to do
+ */
+if(myisset("action"))
+  $action=$_REQUEST['action'];
+else
+  $action=""; /* so that we can use a default option below */
 
-            echo sizeof($tmp)." tmp ;;".strlen($tmp[0])." len tmp0  <br>";
+switch($action)
+  {
+  case 'new':
+    require './include/newgame.php';
+    break;
+  case 'cancel':
+    require './include/cancelgame.php';
+    break;
+  case 'reminder':
+    require './include/reminder.php';
+    break;
+  case 'logout':
+    require './include/logout.php';
+    require './include/welcome.php';
+    break;
+  case 'login':
+    require './include/login.php';
+    require './include/user.php';
+    break;
+  case 'register':
+    require './include/register.php';
+    break;
+  case 'prefs':
+    require './include/preferences.php';
+    break;
+  case 'game':
+    require './include/game.php';
+    break;
+  case 'about':
+    require './include/about.php';
+    break;
+  case 'stats':
+    if(isset($_SESSION["name"]))
+      require './include/stats.php';
+    else
+      require './include/welcome.php';
+    break;
+  default:
+    if(isset($_SESSION["name"]))
+      require './include/user.php';
+    else
+      require './include/welcome.php';
+  }
 
-            if(sizeof($tmp)==5)
-              {
-                ?>
-<form action="index.php" method="post">
-                         
-   player1<input type="radio" name="win" value="0" />
-   player2<input type="radio" name="win" value="1" />
-   player3<input type="radio" name="win" value="2" />
-   player4<input type="radio" name="win" value="3" />
-<input type="hidden" name="me" value="hash1" />
-<input type="submit" value="who will win?" />
+/* ask for login or display login info, needs to go at the end, so that we have the
+ * session-variable already set.
+ */
+output_navbar();
 
-</form>
-<?php
-              }
-            else if(sizeof($tmp)<5 && 1<sizeof($tmp) && !isset($_REQUEST["card"]))
-              {                 
-                if(sizeof($tmp)==2 && strlen($tmp[0])==1)
-                  {
-                    $next=$tmp[0];
-                    echo "found the start of a new trick at $next<br>";
-                  }
-                if($hash[$next]==$me)
-                  {
-                    
-                    echo "ITS YOUR TURN<br>";
-                    $allcards = $player[$me]["cards"];
-                    $mycards = explode(";",$allcards);
-                    
-                    sort($mycards);
-                    echo "your cards are <br>";
-                    foreach($mycards as $card) 
-                      {
-                        display_link_card($card,$me);
-                      }
-                    echo "<br />\n";   
-                  }
-                echo "<br />";
-                
-              }
-          }
-       }
+output_footer();
 
- }      /* is this the last player that needs to accept? */
-         /* yes, figure out who starts, send out email to first player */
-   /* no, email the rest to cancel game */
+DB_close();
 
-/* player wants to make a move? */
-  /* check if it is this players turn it is (if it's the players turn, convert cards into links) */
-  /* if it is the last card played*/
-     /* add checkbox for who one the trick */
-     /* email next player */
-     /* last card played? */
-        /* count score for each player */
+/*
+ *Local Variables:
+ *mode: php
+ *mode: hs-minor
+ *End:
+ */
 ?>
-
-</body>
-</html>