updated copyright notice for 2012
[e-DoKo.git] / index.php
1 <?php
2 /* Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 Arun Persaud <arun@nubati.net>
3  *
4  *   This file is part of e-DoKo.
5  *
6  *   e-DoKo is free software: you can redistribute it and/or modify
7  *   it under the terms of the GNU General Public License as published by
8  *   the Free Software Foundation, either version 3 of the License, or
9  *   (at your option) any later version.
10  *
11  *   e-DoKo is distributed in the hope that it will be useful,
12  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
13  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  *   GNU General Public License for more details.
15  *
16  *   You should have received a copy of the GNU General Public License
17  *   along with e-DoKo.  If not, see <http://www.gnu.org/licenses/>.
18  *
19  */
20
21 error_reporting(E_ALL);
22
23 /* start a session, if it is not already running.
24  * This way people don't have to log in all the times.
25  * The session variables can also be read out from different
26  * php scripts, so that the code can be easily split up across several files
27  */
28 session_start();
29
30 include_once("config.php");                /* needs to be first in list, since other includes use this */
31 include_once("./include/output.php");      /* html output only */
32 include_once("./include/db.php");          /* database only */
33 include_once("./include/functions.php");   /* the rest */
34
35 /* make sure that user has set all variables in config.php */
36 config_check();
37
38 /* open the database */
39 $DBopen = DB_open();
40 if($DBopen<0)
41   {
42     output_header();
43
44     if($DBopen == -1)
45       echo "Database error, can't connect... Please wait a while and try again. ".
46         "If the problem doesn't go away feel free to contact $ADMIN_NAME at $ADMIN_EMAIL.";
47     else if ($DBopen == -2)
48       echo "Wrong database version, please update your database using the update.php script.";
49
50     output_footer();
51     exit();
52   }
53
54 /* localization */
55 /* needs to be in front of output_header, but we don't know the users preferences at this time,
56  * so we go by the session variable or if language is set
57  */
58 if(myisset('language') || isset($_SESSION['language']))
59   {
60     $language = 'en';
61     if(isset($_SESSION['language']))
62        $language = $_SESSION['language'];
63     if(myisset('language'))
64       {
65         $language = $_REQUEST['language'];
66         $_SESSION['language'] = $language; /* overrule preferences */
67       }
68     switch($language)
69       {
70       case 'de':
71         putenv("LC_ALL=de_DE");
72         setlocale(LC_ALL, "de_DE");
73         // Specify location of translation tables
74         bindtextdomain("edoko", "./locale");
75         // Choose domain
76         textdomain("edoko");
77         break;
78       default:
79         /* do nothing */
80       }
81   }
82
83 /* done major error checking, output header of HTML page */
84 output_header();
85
86 /* The rest of the file consists of handling user input.
87  * The user sends information via html GET and POST variables,
88  * and the action variable tells the prog what the user wants to do
89  */
90 if(myisset("action"))
91   $action=$_REQUEST['action'];
92 else
93   $action=""; /* so that we can use a default option below */
94
95 switch($action)
96   {
97   case 'new':
98     require './include/newgame.php';
99     break;
100   case 'cancel':
101     require './include/cancelgame.php';
102     break;
103   case 'reminder':
104     require './include/reminder.php';
105     break;
106   case 'logout':
107     require './include/logout.php';
108     require './include/welcome.php';
109     break;
110   case 'login':
111     require './include/login.php';
112     require './include/user.php';
113     break;
114   case 'register':
115     require './include/register.php';
116     break;
117   case 'prefs':
118     require './include/preferences.php';
119     break;
120   case 'game':
121     require './include/game.php';
122     break;
123   case 'about':
124     require './include/about.php';
125     break;
126   case 'stats':
127     if(isset($_SESSION["name"]))
128       require './include/stats.php';
129     else
130       require './include/welcome.php';
131     break;
132   default:
133     if(isset($_SESSION["name"]))
134       require './include/user.php';
135     else
136       require './include/welcome.php';
137   }
138
139 /* ask for login or display login info, needs to go at the end, so that we have the
140  * session-variable already set.
141  */
142 output_status();
143
144 output_footer();
145
146 DB_close();
147
148 /*
149  *Local Variables:
150  *mode: php
151  *mode: hs-minor
152  *End:
153  */
154 ?>