playing games should work now... new games can be started automatically at the end...
[e-DoKo.git] / db.php
1 <?php
2
3 /*
4  * open database 
5  */
6
7 function DB_open()
8 {
9   global $DB;
10   if ( $DB = mysql_connect('localhost','dokodb', 'doko') )
11     mysql_select_db('doko') or die('Could not select database'); 
12   else
13     die (mysql_error());
14   
15   return;
16 }
17
18 function DB_close()
19 {
20   global $DB;
21   mysql_close($DB);
22   return;
23 }
24
25 function DB_quote_smart($value)
26 {
27     /* Stripslashes */
28     if (get_magic_quotes_gpc()) {
29         $value = stripslashes($value);
30     }
31     /* Quote if not a number or a numeric string */
32     if (!is_numeric($value)) {
33         $value = "'" . mysql_real_escape_string($value) . "'";
34     }
35     return $value;
36 }
37
38
39 function DB_test()
40 {
41   $result = mysql_query("SELECT * FROM User");
42   while($r = mysql_fetch_array($result,MYSQL_NUM))
43     {
44       foreach($r as $thing)
45         echo "  $thing ";
46       echo "<br />\n";
47     }
48   return;
49 }
50
51 function DB_get_email_by_name($name)
52 {
53   $result = mysql_query("SELECT email FROM User WHERE fullname=".DB_quote_smart($name)."");
54   $r      = mysql_fetch_array($result,MYSQL_NUM);
55   
56   if($r)
57     return $r[0];
58   else
59     return "";
60 }
61
62 function DB_get_userid_by_name($name)
63 {
64   $result = mysql_query("SELECT id FROM User WHERE fullname=".DB_quote_smart($name));
65   $r      = mysql_fetch_array($result,MYSQL_NUM);
66   
67   if($r)
68     return $r[0];
69   else
70     return 0;
71 }
72 function DB_get_userid_by_passwd($passwd)
73 {
74   $result = mysql_query("SELECT id FROM User WHERE password=".DB_quote_smart($passwd));
75   $r      = mysql_fetch_array($result,MYSQL_NUM);
76   
77   if($r)
78     return $r[0];
79   else
80     return 0;
81 }
82 function DB_get_userid_by_email($email)
83 {
84   $result = mysql_query("SELECT id FROM User WHERE email=".DB_quote_smart($email));
85   $r      = mysql_fetch_array($result,MYSQL_NUM);
86   
87   if($r)
88     return $r[0];
89   else
90     return 0;
91 }
92
93 function DB_get_handid_by_hash($hash)
94 {
95   $result = mysql_query("SELECT id FROM Hand WHERE hash=".DB_quote_smart($hash));
96   $r      = mysql_fetch_array($result,MYSQL_NUM);
97   
98   if($r)
99     return $r[0];
100   else
101     return 0;
102 }
103
104 function DB_get_userid_by_hash($hash)
105 {
106   $result = mysql_query("SELECT user_id FROM Hand WHERE hash=".DB_quote_smart($hash));
107   $r      = mysql_fetch_array($result,MYSQL_NUM);
108   
109   if($r)
110     return $r[0];
111   else
112     return 0;
113 }
114
115 function DB_get_pos_by_hash($hash)
116 {
117   $result = mysql_query("SELECT position FROM Hand WHERE hash=".DB_quote_smart($hash));
118   $r      = mysql_fetch_array($result,MYSQL_NUM);
119   
120   if($r)
121     return $r[0];
122   else
123     return 0;
124 }
125
126 function DB_get_name_by_hash($hash)
127 {
128   $result = mysql_query("SELECT fullname FROM Hand LEFT JOIN User ON Hand.user_id=User.id WHERE hash=".DB_quote_smart($hash));
129   $r      = mysql_fetch_array($result,MYSQL_NUM);
130   
131   if($r)
132     return $r[0];
133   else
134     return "";
135 }
136
137 function DB_get_status_by_hash($hash)
138 {
139   $result = mysql_query("SELECT status FROM Hand WHERE hash=".DB_quote_smart($hash));
140   $r      = mysql_fetch_array($result,MYSQL_NUM);
141   
142   if($r)
143     return $r[0];
144   else
145     return 0;
146 }
147
148 function DB_set_game_status_by_gameid($id,$status)
149 {
150   mysql_query("UPDATE Game SET status='".$status."' WHERE id=".DB_quote_smart($id));
151   return;
152 }
153
154 function DB_get_game_status_by_gameid($id)
155 {
156   $result = mysql_query("SELECT status FROM Game WHERE id=".DB_quote_smart($id));
157   $r      = mysql_fetch_array($result,MYSQL_NUM);
158   
159   if($r)
160     return $r[0];
161   else
162     return NULL;
163 }
164
165 function DB_set_hand_status_by_hash($hash,$status)
166 {
167   mysql_query("UPDATE Hand SET status='".$status."' WHERE hash=".DB_quote_smart($hash));
168   return;
169 }
170
171 function DB_get_hand_status_by_userid($id)
172 {
173   $result = mysql_query("SELECT status FROM Hand WHERE user_id=".DB_quote_smart($id));
174   $r      = mysql_fetch_array($result,MYSQL_NUM);
175   
176   if($r)
177     return $r[0];
178   else
179     return 0;
180 }
181
182 function DB_get_gameid_by_hash($hash)
183 {
184   $result = mysql_query("SELECT game_id FROM Hand WHERE hash=".DB_quote_smart($hash));
185   $r      = mysql_fetch_array($result,MYSQL_NUM);
186   
187   if($r)
188     return $r[0];
189   else
190     return 0;
191 }
192
193 function DB_cancel_game($hash)
194 {
195   $gameid = DB_get_gameid_by_hash($me);
196
197   if(!$gameid)
198     return;
199
200   /* get the IDs of all players */
201   $result = mysql_query("SELECT id FROM Hand WHERE game_id=".DB_quote_smart($gameid));
202   while($r = mysql_fetch_array($result,MYSQL_NUM))
203     {
204       $id = $r[0];
205       
206       $tmp = mysql_query("SELECT id  FROM Hand_Card WHERE hand_id=".DB_quote_smart($id));
207       $tmp = mysql_fetch_array($tmp,MYSQL_NUM);
208       mysql_query("DELETE FROM Play WHERE hand_card_id=".DB_quote_smart($tmp[0]));
209
210       
211       mysql_query("DELETE FROM Hand_Card WHERE hand_id=".DB_quote_smart($id));
212       mysql_query("DELETE FROM Score WHERE hand_id=".DB_quote_smart($id));
213       mysql_query("DELETE FROM Hand WHERE id=".DB_quote_smart($id));
214     }
215   
216   /* delete game */
217   mysql_query("DELETE FROM User_Game_Prefs WHERE game_id=".DB_quote_smart($gameid));
218   mysql_query("DELETE FROM Trick WHERE game_id=".DB_quote_smart($gameid));
219   mysql_query("DELETE FROM Game WHERE id=".DB_quote_smart($gameid));
220   
221   return;
222 }
223
224 function DB_get_hand($me)
225 {
226   $cards = array();
227
228   $handid = DB_get_handid_by_hash($me);
229
230   $result = mysql_query("SELECT card_id FROM Hand_Card WHERE hand_id=".DB_quote_smart($handid)." and played='false' ");
231   while($r = mysql_fetch_array($result,MYSQL_NUM))
232     $cards[]=$r[0];
233
234   return $cards;
235 }
236
237 function DB_get_cards_by_trick($id)
238 {
239   $cards = array();
240   $cards[0]=0; /* need to return index 1-4 */
241
242   $result = mysql_query("SELECT card_id FROM Play LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id ".
243                         "LEFT JOIN Hand ON Hand.id=Hand_Card.hand_id ".
244                         "WHERE trick_id=".
245                         DB_quote_smart($id)." ORDER BY position ASC");
246   while($r = mysql_fetch_array($result,MYSQL_NUM))
247     $cards[]=$r[0];
248
249   return $cards;
250 }
251
252
253 function DB_set_solo_by_hash($me,$solo)
254 {
255   mysql_query("UPDATE Hand SET solo=".DB_quote_smart($solo)." WHERE hash=".DB_quote_smart($hash));
256   return;
257 }
258
259 function DB_set_sickness_by_hash($me,$sickness)
260 {
261   mysql_query("UPDATE Hand SET sickness=".DB_quote_smart($sickness)." WHERE hash=".DB_quote_smart($hash));
262   return;
263 }
264
265 function DB_get_current_trickid($gameid)
266 {
267   $result = mysql_query("SELECT Trick.id,MAX(Play.sequence) FROM Play ".
268                         "LEFT JOIN Trick ON Play.trick_id=Trick.id ".
269                         "WHERE Trick.game_id=".DB_quote_smart($gameid)." ".
270                         "GROUP BY Trick.id");
271   while(  $r = mysql_fetch_array($result,MYSQL_NUM) )
272     {
273       $trickid  = $r[0];
274       $sequence = $r[1];
275     };
276   
277   if(!$sequence || $sequence==4)
278     {
279       mysql_query("INSERT INTO Trick VALUES (NULL,NULL,NULL, ".DB_quote_smart($gameid).")");
280       $trickid  = mysql_insert_id();
281       $sequence = 1;
282     }
283   else
284     {
285       $sequence++;
286     }
287
288   return array($trickid,$sequence);
289 }
290
291 function DB_get_max_trickid($gameid)
292 {
293   $result = mysql_query("SELECT MAX(id) FROM Trick WHERE game_id=".DB_quote_smart($gameid));
294   $r = mysql_fetch_array($result,MYSQL_NUM) ;
295   
296   
297   return ($r?$r[0]:NULL);
298 }
299
300 function DB_play_card($trickid,$handcardid,$sequence)
301 {
302   mysql_query("INSERT INTO Play VALUES(NULL,NULL,NULL,".DB_quote_smart($trickid).
303               ",".DB_quote_smart($handcardid).",".DB_quote_smart($sequence).")");
304   return;
305 }
306
307 function DB_get_all_names_by_gameid($id)
308 {
309   $names = array();
310   
311   $result = mysql_query("SELECT fullname FROM Hand LEFT JOIN User ON Hand.user_id=User.id WHERE game_id=".
312                         DB_quote_smart($id)." ORDER BY position ASC");
313   while($r = mysql_fetch_array($result,MYSQL_NUM))
314     $names[] = $r[0];
315
316   return $names;
317 }
318
319 function DB_get_all_userid_by_gameid($id)
320 {
321   $names = array();
322   
323   $result = mysql_query("SELECT user_id FROM Hand WHERE game_id=".
324                         DB_quote_smart($id));
325   while($r = mysql_fetch_array($result,MYSQL_NUM))
326     $names[] = $r[0];
327
328   return $names;
329 }
330
331 function DB_get_hash_from_game_and_pos($id,$pos)
332 {
333   $result = mysql_query("SELECT hash FROM Hand WHERE game_id=".DB_quote_smart($id)." and position=".DB_quote_smart($pos));
334   $r      = mysql_fetch_array($result,MYSQL_NUM);
335   
336   if($r)
337     return $r[0];
338   else
339     return "";
340 }
341
342 ?>