7f4435002fde194ce008ed41d22a3448ce19086b
[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_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   $trickid  = NULL;
268   $sequence = NULL;
269
270   $result = mysql_query("SELECT Trick.id,MAX(Play.sequence) FROM Play ".
271                         "LEFT JOIN Trick ON Play.trick_id=Trick.id ".
272                         "WHERE Trick.game_id=".DB_quote_smart($gameid)." ".
273                         "GROUP BY Trick.id");
274   while( $r = mysql_fetch_array($result,MYSQL_NUM) )
275     {
276       $trickid  = $r[0];
277       $sequence = $r[1];
278     };
279   
280   if(!$sequence || $sequence==4)
281     {
282       mysql_query("INSERT INTO Trick VALUES (NULL,NULL,NULL, ".DB_quote_smart($gameid).")");
283       $trickid  = mysql_insert_id();
284       $sequence = 1;
285     }
286   else
287     {
288       $sequence++;
289     }
290
291   return array($trickid,$sequence);
292 }
293
294 function DB_get_max_trickid($gameid)
295 {
296   $result = mysql_query("SELECT MAX(id) FROM Trick WHERE game_id=".DB_quote_smart($gameid));
297   $r = mysql_fetch_array($result,MYSQL_NUM) ;
298   
299   
300   return ($r?$r[0]:NULL);
301 }
302
303 function DB_play_card($trickid,$handcardid,$sequence)
304 {
305   mysql_query("INSERT INTO Play VALUES(NULL,NULL,NULL,".DB_quote_smart($trickid).
306               ",".DB_quote_smart($handcardid).",".DB_quote_smart($sequence).")");
307       
308   $playid = mysql_insert_id();
309   return $playid;
310 }
311
312 function DB_get_all_names_by_gameid($id)
313 {
314   $names = array();
315   
316   $result = mysql_query("SELECT fullname FROM Hand LEFT JOIN User ON Hand.user_id=User.id WHERE game_id=".
317                         DB_quote_smart($id)." ORDER BY position ASC");
318   while($r = mysql_fetch_array($result,MYSQL_NUM))
319     $names[] = $r[0];
320
321   return $names;
322 }
323
324 function DB_get_all_userid_by_gameid($id)
325 {
326   $names = array();
327   
328   $result = mysql_query("SELECT user_id FROM Hand WHERE game_id=".
329                         DB_quote_smart($id));
330   while($r = mysql_fetch_array($result,MYSQL_NUM))
331     $names[] = $r[0];
332
333   return $names;
334 }
335
336 function DB_get_hash_from_game_and_pos($id,$pos)
337 {
338   $result = mysql_query("SELECT hash FROM Hand WHERE game_id=".DB_quote_smart($id)." and position=".DB_quote_smart($pos));
339   $r      = mysql_fetch_array($result,MYSQL_NUM);
340   
341   if($r)
342     return $r[0];
343   else
344     return "";
345 }
346
347 function DB_get_all_names()
348 {
349   $names  = array();
350
351   $result = mysql_query("SELECT fullname FROM User");
352   while($r = mysql_fetch_array($result,MYSQL_NUM))
353     $names[] = $r[0];
354
355   return $names;
356 }
357
358 function DB_update_user_timestamp($userid)
359 {
360   mysql_query("UPDATE User SET last_login = CURRENT_TIMESTAMP WHERE id=".DB_quote_smart($userid));
361   return;
362 }
363
364 function DB_get_user_timestamp($userid)
365 {
366   $result = mysql_query("SELECT last_login FROM User WHERE id=".DB_quote_smart($userid));
367   $r      = mysql_fetch_array($result,MYSQL_NUM);
368   
369   if($r)
370     return $r[0];
371   else
372     return NULL;
373 }
374 function DB_get_user_timezone($userid)
375 {
376   $result = mysql_query("SELECT timezone FROM User WHERE id=".DB_quote_smart($userid));
377   $r      = mysql_fetch_array($result,MYSQL_NUM);
378   
379   if($r)
380     return $r[0];
381   else
382     return 0;
383 }
384
385 function DB_insert_comment($comment,$playid,$userid)
386 {
387   mysql_query("INSERT INTO Comment VALUES (NULL,NULL,NULL,$userid,$playid, ".DB_quote_smart($comment).")");
388   return;
389 }
390 ?>