f8937486685eff28431f2d59f648cc056d13fba8
[e-DoKo.git] / db.php
1 <?php
2
3 /*
4  * open database 
5  */
6
7 function DB_open()
8 {
9   global $DB,$DB_user,$DB_host,$DB_database,$DB_password;
10   if ( $DB = mysql_connect($DB_host,$DB_user, $DB_password) )
11     mysql_select_db($DB_database) 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_email_by_hash($hash)
63 {
64   $result = mysql_query("SELECT User.email FROM User LEFT JOIN Hand ON Hand.user_id=User.id WHERE Hand.hash=".DB_quote_smart($hash)."");
65   $r      = mysql_fetch_array($result,MYSQL_NUM);
66   
67   if($r)
68     return $r[0];
69   else
70     return "";
71 }
72
73 function DB_get_userid_by_name($name)
74 {
75   $result = mysql_query("SELECT id FROM User WHERE fullname=".DB_quote_smart($name));
76   $r      = mysql_fetch_array($result,MYSQL_NUM);
77   
78   if($r)
79     return $r[0];
80   else
81     return 0;
82 }
83 function DB_get_userid_by_passwd($passwd)
84 {
85   $result = mysql_query("SELECT id FROM User WHERE password=".DB_quote_smart($passwd));
86   $r      = mysql_fetch_array($result,MYSQL_NUM);
87   
88   if($r)
89     return $r[0];
90   else
91     return 0;
92 }
93 function DB_get_userid_by_email($email)
94 {
95   $result = mysql_query("SELECT id FROM User WHERE email=".DB_quote_smart($email));
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_handid_by_hash($hash)
105 {
106   $result = mysql_query("SELECT 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_userid_by_hash($hash)
116 {
117   $result = mysql_query("SELECT user_id 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_pos_by_hash($hash)
127 {
128   $result = mysql_query("SELECT position FROM Hand 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 0;
135 }
136
137 function DB_get_name_by_hash($hash)
138 {
139   $result = mysql_query("SELECT fullname FROM Hand LEFT JOIN User ON Hand.user_id=User.id 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 "";
146 }
147
148 function DB_get_status_by_hash($hash)
149 {
150   $result = mysql_query("SELECT status FROM Hand WHERE hash=".DB_quote_smart($hash));
151   $r      = mysql_fetch_array($result,MYSQL_NUM);
152   
153   if($r)
154     return $r[0];
155   else
156     return 0;
157 }
158
159 function DB_set_game_status_by_gameid($id,$status)
160 {
161   mysql_query("UPDATE Game SET status='".$status."' WHERE id=".DB_quote_smart($id));
162   return;
163 }
164
165 function DB_get_game_status_by_gameid($id)
166 {
167   $result = mysql_query("SELECT status FROM Game WHERE id=".DB_quote_smart($id));
168   $r      = mysql_fetch_array($result,MYSQL_NUM);
169   
170   if($r)
171     return $r[0];
172   else
173     return NULL;
174 }
175
176 function DB_set_hand_status_by_hash($hash,$status)
177 {
178   mysql_query("UPDATE Hand SET status='".$status."' WHERE hash=".DB_quote_smart($hash));
179   return;
180 }
181
182 function DB_get_hand_status_by_userid($id)
183 {
184   $result = mysql_query("SELECT status FROM Hand WHERE user_id=".DB_quote_smart($id));
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_get_gameid_by_hash($hash)
194 {
195   $result = mysql_query("SELECT game_id FROM Hand WHERE hash=".DB_quote_smart($hash));
196   $r      = mysql_fetch_array($result,MYSQL_NUM);
197   
198   if($r)
199     return $r[0];
200   else
201     return 0;
202 }
203
204 function DB_cancel_game($hash)
205 {
206   $gameid = DB_get_gameid_by_hash($me);
207
208   if(!$gameid)
209     return;
210
211   /* get the IDs of all players */
212   $result = mysql_query("SELECT id FROM Hand WHERE game_id=".DB_quote_smart($gameid));
213   while($r = mysql_fetch_array($result,MYSQL_NUM))
214     {
215       $id = $r[0];
216       
217       $tmp = mysql_query("SELECT id  FROM Hand_Card WHERE hand_id=".DB_quote_smart($id));
218       $tmp = mysql_fetch_array($tmp,MYSQL_NUM);
219       mysql_query("DELETE FROM Play WHERE hand_card_id=".DB_quote_smart($tmp[0]));
220
221       
222       mysql_query("DELETE FROM Hand_Card WHERE hand_id=".DB_quote_smart($id));
223       mysql_query("DELETE FROM Score WHERE hand_id=".DB_quote_smart($id));
224       mysql_query("DELETE FROM Hand WHERE id=".DB_quote_smart($id));
225     }
226   
227   /* delete game */
228   mysql_query("DELETE FROM User_Game_Prefs WHERE game_id=".DB_quote_smart($gameid));
229   mysql_query("DELETE FROM Trick WHERE game_id=".DB_quote_smart($gameid));
230   mysql_query("DELETE FROM Game WHERE id=".DB_quote_smart($gameid));
231   
232   return;
233 }
234
235 function DB_get_hand($me)
236 {
237   $cards = array();
238
239   $handid = DB_get_handid_by_hash($me);
240
241   $result = mysql_query("SELECT card_id FROM Hand_Card WHERE hand_id=".DB_quote_smart($handid)." and played='false' ");
242   while($r = mysql_fetch_array($result,MYSQL_NUM))
243     $cards[]=$r[0];
244
245   return $cards;
246 }
247
248 function DB_get_cards_by_trick($id)
249 {
250   $cards = array();
251   $cards[0]=0; /* need to return index 1-4 */
252
253   $result = mysql_query("SELECT card_id FROM Play LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id ".
254                         "LEFT JOIN Hand ON Hand.id=Hand_Card.hand_id ".
255                         "WHERE trick_id=".
256                         DB_quote_smart($id)." ORDER BY position ASC");
257   while($r = mysql_fetch_array($result,MYSQL_NUM))
258     $cards[]=$r[0];
259
260   return $cards;
261 }
262
263
264 function DB_set_solo_by_hash($me,$solo)
265 {
266   mysql_query("UPDATE Hand SET solo=".DB_quote_smart($solo)." WHERE hash=".DB_quote_smart($hash));
267   return;
268 }
269
270 function DB_set_sickness_by_hash($hash,$sickness)
271 {
272   mysql_query("UPDATE Hand SET sickness=".DB_quote_smart($sickness)." WHERE hash=".DB_quote_smart($hash));
273   return;
274 }
275
276 function DB_get_current_trickid($gameid)
277 {
278   $trickid  = NULL;
279   $sequence = NULL;
280
281   $result = mysql_query("SELECT Trick.id,MAX(Play.sequence) FROM Play ".
282                         "LEFT JOIN Trick ON Play.trick_id=Trick.id ".
283                         "WHERE Trick.game_id=".DB_quote_smart($gameid)." ".
284                         "GROUP BY Trick.id");
285   while( $r = mysql_fetch_array($result,MYSQL_NUM) )
286     {
287       $trickid  = $r[0];
288       $sequence = $r[1];
289     };
290   
291   if(!$sequence || $sequence==4)
292     {
293       mysql_query("INSERT INTO Trick VALUES (NULL,NULL,NULL, ".DB_quote_smart($gameid).")");
294       $trickid  = mysql_insert_id();
295       $sequence = 1;
296     }
297   else
298     {
299       $sequence++;
300     }
301
302   return array($trickid,$sequence);
303 }
304
305 function DB_get_max_trickid($gameid)
306 {
307   $result = mysql_query("SELECT MAX(id) FROM Trick WHERE game_id=".DB_quote_smart($gameid));
308   $r = mysql_fetch_array($result,MYSQL_NUM) ;
309   
310   
311   return ($r?$r[0]:NULL);
312 }
313
314 function DB_play_card($trickid,$handcardid,$sequence)
315 {
316   mysql_query("INSERT INTO Play VALUES(NULL,NULL,NULL,".DB_quote_smart($trickid).
317               ",".DB_quote_smart($handcardid).",".DB_quote_smart($sequence).")");
318       
319   $playid = mysql_insert_id();
320   return $playid;
321 }
322
323 function DB_get_all_names_by_gameid($id)
324 {
325   $names = array();
326   
327   $result = mysql_query("SELECT fullname FROM Hand LEFT JOIN User ON Hand.user_id=User.id WHERE game_id=".
328                         DB_quote_smart($id)." ORDER BY position ASC");
329   while($r = mysql_fetch_array($result,MYSQL_NUM))
330     $names[] = $r[0];
331
332   return $names;
333 }
334
335 function DB_get_all_userid_by_gameid($id)
336 {
337   $names = array();
338   
339   $result = mysql_query("SELECT user_id FROM Hand WHERE game_id=".
340                         DB_quote_smart($id));
341   while($r = mysql_fetch_array($result,MYSQL_NUM))
342     $names[] = $r[0];
343
344   return $names;
345 }
346
347 function DB_get_hash_from_game_and_pos($id,$pos)
348 {
349   $result = mysql_query("SELECT hash FROM Hand WHERE game_id=".DB_quote_smart($id)." and position=".DB_quote_smart($pos));
350   $r      = mysql_fetch_array($result,MYSQL_NUM);
351   
352   if($r)
353     return $r[0];
354   else
355     return "";
356 }
357
358 function DB_get_all_names()
359 {
360   $names  = array();
361
362   $result = mysql_query("SELECT fullname FROM User");
363   while($r = mysql_fetch_array($result,MYSQL_NUM))
364     $names[] = $r[0];
365
366   return $names;
367 }
368
369 function DB_update_user_timestamp($userid)
370 {
371   mysql_query("UPDATE User SET last_login = CURRENT_TIMESTAMP WHERE id=".DB_quote_smart($userid));
372   return;
373 }
374
375 function DB_get_user_timestamp($userid)
376 {
377   $result = mysql_query("SELECT last_login FROM User WHERE id=".DB_quote_smart($userid));
378   $r      = mysql_fetch_array($result,MYSQL_NUM);
379   
380   if($r)
381     return $r[0];
382   else
383     return NULL;
384 }
385 function DB_get_user_timezone($userid)
386 {
387   $result = mysql_query("SELECT timezone FROM User WHERE id=".DB_quote_smart($userid));
388   $r      = mysql_fetch_array($result,MYSQL_NUM);
389   
390   if($r)
391     return $r[0];
392   else
393     return 0;
394 }
395
396 function DB_insert_comment($comment,$playid,$userid)
397 {
398   mysql_query("INSERT INTO Comment VALUES (NULL,NULL,NULL,$userid,$playid, ".DB_quote_smart($comment).")");
399   return;
400 }
401 ?>