BUGFIX: reload during the setup could mess up the state machine
[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   $DB = @mysql_connect($DB_host,$DB_user, $DB_password);
11   if ( $DB )
12     {
13       mysql_select_db($DB_database) or die('Could not select database'); 
14     }
15   else
16     return -1;
17   
18   return 0;
19 }
20
21 function DB_close()
22 {
23   global $DB;
24   mysql_close($DB);
25   return;
26 }
27
28 function DB_quote_smart($value)
29 {
30     /* Stripslashes */
31     if (get_magic_quotes_gpc()) {
32         $value = stripslashes($value);
33     }
34     /* Quote if not a number or a numeric string */
35     if (!is_numeric($value)) {
36         $value = "'" . mysql_real_escape_string($value) . "'";
37     }
38     return $value;
39 }
40
41
42 function DB_test()
43 {
44   $result = mysql_query("SELECT * FROM User");
45   while($r = mysql_fetch_array($result,MYSQL_NUM))
46     {
47       foreach($r as $thing)
48         echo "  $thing ";
49       echo "<br />\n";
50     }
51   return;
52 }
53
54 function DB_get_email_by_name($name)
55 {
56   $result = mysql_query("SELECT email FROM User WHERE fullname=".DB_quote_smart($name)."");
57   $r      = mysql_fetch_array($result,MYSQL_NUM);
58   
59   if($r)
60     return $r[0];
61   else
62     return "";
63 }
64
65 function DB_get_email_by_userid($id)
66 {
67   $result = mysql_query("SELECT email FROM User WHERE id=".DB_quote_smart($id)."");
68   $r      = mysql_fetch_array($result,MYSQL_NUM);
69   
70   if($r)
71     return $r[0];
72   else
73     return "";
74 }
75
76 function DB_get_email_by_pos_and_gameid($pos,$gameid)
77 {
78   $result = mysql_query("SELECT email FROM User ".
79                         "LEFT JOIN Hand ON User.id=Hand.user_id ".
80                         "LEFT JOIN Game ON Game.id=Hand.game_id ". 
81                         "WHERE Game.id=".DB_quote_smart($gameid)." ".
82                         "AND Hand.position=".DB_quote_smart($pos)."");
83   $r      = mysql_fetch_array($result,MYSQL_NUM);
84   
85   if($r)
86     return $r[0];
87   else
88     return "";
89 }
90
91 function DB_get_email_by_hash($hash)
92 {
93   $result = mysql_query("SELECT User.email FROM User LEFT JOIN Hand ON Hand.user_id=User.id WHERE Hand.hash=".DB_quote_smart($hash)."");
94   $r      = mysql_fetch_array($result,MYSQL_NUM);
95   
96   if($r)
97     return $r[0];
98   else
99     return "";
100 }
101
102 function DB_get_userid_by_name($name)
103 {
104   $result = mysql_query("SELECT id FROM User WHERE fullname=".DB_quote_smart($name));
105   $r      = mysql_fetch_array($result,MYSQL_NUM);
106   
107   if($r)
108     return $r[0];
109   else
110     return 0;
111 }
112 function DB_get_userid_by_passwd($passwd)
113 {
114   $result = mysql_query("SELECT id FROM User WHERE password=".DB_quote_smart($passwd));
115   $r      = mysql_fetch_array($result,MYSQL_NUM);
116   
117   if($r)
118     return $r[0];
119   else
120     return 0;
121 }
122 function DB_get_userid_by_email($email)
123 {
124   $result = mysql_query("SELECT id FROM User WHERE email=".DB_quote_smart($email));
125   $r      = mysql_fetch_array($result,MYSQL_NUM);
126   
127   if($r)
128     return $r[0];
129   else
130     return 0;
131 }
132 function DB_get_userid_by_email_and_password($email,$password)
133 {
134   $result = mysql_query("SELECT id FROM User WHERE email=".DB_quote_smart($email)." AND password=".DB_quote_smart($password));
135   $r      = mysql_fetch_array($result,MYSQL_NUM);
136   
137   /* test if a recovery password has been set */
138   if(!$r)
139     {
140       $result = mysql_query("SELECT User.id FROM User".
141                             " LEFT JOIN Recovery ON User.id=Recovery.user_id".
142                             " WHERE email=".DB_quote_smart($email).
143                             " AND Recovery.password=".DB_quote_smart($password).
144                             " AND DATE_SUB(CURDATE(),INTERVAL 1 DAY) <= Recovery.create_date");
145       $r      = mysql_fetch_array($result,MYSQL_NUM);
146     }
147
148   if($r)
149     return $r[0];
150   else
151     return 0;
152 }
153
154 function DB_get_handid_by_hash($hash)
155 {
156   $result = mysql_query("SELECT id FROM Hand WHERE hash=".DB_quote_smart($hash));
157   $r      = mysql_fetch_array($result,MYSQL_NUM);
158   
159   if($r)
160     return $r[0];
161   else
162     return 0;
163 }
164
165 function DB_get_handid_by_gameid_and_position($gameid,$pos)
166 {
167   $result = mysql_query("SELECT id FROM Hand WHERE game_id=".
168                         DB_quote_smart($gameid)." AND position=".
169                         DB_quote_smart($pos));
170   $r      = mysql_fetch_array($result,MYSQL_NUM);
171   
172   if($r)
173     return $r[0];
174   else
175     return -1;
176 }
177 function DB_get_userid_by_gameid_and_position($gameid,$pos)
178 {
179   $result = mysql_query("SELECT user_id FROM Hand WHERE game_id=".
180                         DB_quote_smart($gameid)." AND position=".
181                         DB_quote_smart($pos));
182   $r      = mysql_fetch_array($result,MYSQL_NUM);
183   
184   if($r)
185     return $r[0];
186   else
187     return -1;
188 }
189
190
191 function DB_get_handid_by_gameid_and_userid($gameid,$userid)
192 {
193   $result = mysql_query("SELECT id FROM Hand WHERE game_id=".
194                         DB_quote_smart($gameid)." AND user_id=".
195                         DB_quote_smart($userid));
196   $r      = mysql_fetch_array($result,MYSQL_NUM);
197   
198   if($r)
199     return $r[0];
200   else
201     return -1;
202 }
203
204 function DB_get_userid_by_hash($hash)
205 {
206   $result = mysql_query("SELECT user_id FROM Hand WHERE hash=".DB_quote_smart($hash));
207   $r      = mysql_fetch_array($result,MYSQL_NUM);
208   
209   if($r)
210     return $r[0];
211   else
212     return 0;
213 }
214
215 function DB_get_pos_by_hash($hash)
216 {
217   $result = mysql_query("SELECT position FROM Hand WHERE hash=".DB_quote_smart($hash));
218   $r      = mysql_fetch_array($result,MYSQL_NUM);
219   
220   if($r)
221     return $r[0];
222   else
223     return 0;
224 }
225
226 function DB_get_name_by_hash($hash)
227 {
228   $result = mysql_query("SELECT fullname FROM Hand LEFT JOIN User ON Hand.user_id=User.id WHERE hash=".DB_quote_smart($hash));
229   $r      = mysql_fetch_array($result,MYSQL_NUM);
230   
231   if($r)
232     return $r[0];
233   else
234     return "";
235 }
236
237 function DB_get_name_by_email($email)
238 {
239   $result = mysql_query("SELECT fullname FROM User WHERE email=".DB_quote_smart($email));
240   $r      = mysql_fetch_array($result,MYSQL_NUM);
241   
242   if($r)
243     return $r[0];
244   else
245     return "";
246 }
247
248 function DB_get_name_by_userid($id)
249 {
250   $result = mysql_query("SELECT fullname FROM User  WHERE id=".DB_quote_smart($id));
251   $r      = mysql_fetch_array($result,MYSQL_NUM);
252   
253   if($r)
254     return $r[0];
255   else
256     return "";
257 }
258
259 function DB_get_status_by_hash($hash)
260 {
261   $result = mysql_query("SELECT status FROM Hand WHERE hash=".DB_quote_smart($hash));
262   $r      = mysql_fetch_array($result,MYSQL_NUM);
263   
264   if($r)
265     return $r[0];
266   else
267     return 0;
268 }
269
270 function DB_set_game_status_by_gameid($id,$status)
271 {
272   mysql_query("UPDATE Game SET status='".$status."' WHERE id=".DB_quote_smart($id));
273   return;
274 }
275
276 function DB_set_sickness_by_gameid($id,$status)
277 {
278   mysql_query("UPDATE Game SET sickness='".$status."' WHERE id=".DB_quote_smart($id));
279   return;
280 }
281 function DB_get_sickness_by_gameid($id)
282 {
283   $result = mysql_query("SELECT sickness FROM Game WHERE id=".DB_quote_smart($id));
284   $r      = mysql_fetch_array($result,MYSQL_NUM);
285   
286   if($r)
287     return $r[0];
288   else
289     return NULL;
290 }
291
292 function DB_get_game_status_by_gameid($id)
293 {
294   $result = mysql_query("SELECT status FROM Game WHERE id=".DB_quote_smart($id));
295   $r      = mysql_fetch_array($result,MYSQL_NUM);
296   
297   if($r)
298     return $r[0];
299   else
300     return NULL;
301 }
302
303 function DB_set_hand_status_by_hash($hash,$status)
304 {
305   mysql_query("UPDATE Hand SET status='".$status."' WHERE hash=".DB_quote_smart($hash));
306   return;
307 }
308
309 function DB_get_hand_status_by_userid_and_gameid($uid,$gid)
310 {
311   $result = mysql_query("SELECT status FROM Hand WHERE user_id=".DB_quote_smart($uid).
312                         " AND game_id=".DB_quote_smart($gid));
313   $r      = mysql_fetch_array($result,MYSQL_NUM);
314   
315   if($r)
316     return $r[0];
317   else
318     return 0;
319 }
320
321 function DB_get_sickness_by_userid_and_gameid($uid,$gid)
322 {
323   $result = mysql_query("SELECT sickness FROM Hand WHERE user_id=".DB_quote_smart($uid).
324                         " AND game_id=".DB_quote_smart($gid));
325   $r      = mysql_fetch_array($result,MYSQL_NUM);
326   
327   if($r)
328     return $r[0];
329   else
330     return 0;
331 }
332
333 function DB_get_sickness_by_pos_and_gameid($pos,$gid)
334 {
335   $result = mysql_query("SELECT sickness FROM Hand WHERE position=".DB_quote_smart($pos).
336                         " AND game_id=".DB_quote_smart($gid));
337   $r      = mysql_fetch_array($result,MYSQL_NUM);
338   
339   if($r)
340     return $r[0];
341   else
342     return 0;
343 }
344
345 function DB_get_gameid_by_hash($hash)
346 {
347   $result = mysql_query("SELECT game_id FROM Hand WHERE hash=".DB_quote_smart($hash));
348   $r      = mysql_fetch_array($result,MYSQL_NUM);
349   
350   if($r)
351     return $r[0];
352   else
353     return 0;
354 }
355
356 function DB_cancel_game($hash)
357 {
358   $gameid = DB_get_gameid_by_hash($hash);
359
360   if(!$gameid)
361     return;
362
363   /* get the IDs of all players */
364   $result = mysql_query("SELECT id FROM Hand WHERE game_id=".DB_quote_smart($gameid));
365   while($r = mysql_fetch_array($result,MYSQL_NUM))
366     {
367       $id = $r[0];
368       
369       $tmp = mysql_query("SELECT id  FROM Hand_Card WHERE hand_id=".DB_quote_smart($id));
370       $tmp = mysql_fetch_array($tmp,MYSQL_NUM);
371       mysql_query("DELETE FROM Play WHERE hand_card_id=".DB_quote_smart($tmp[0]));
372
373       
374       mysql_query("DELETE FROM Hand_Card WHERE hand_id=".DB_quote_smart($id));
375       mysql_query("DELETE FROM Score WHERE hand_id=".DB_quote_smart($id));
376       mysql_query("DELETE FROM Hand WHERE id=".DB_quote_smart($id));
377     }
378   
379   /* delete game */
380   mysql_query("DELETE FROM User_Game_Prefs WHERE game_id=".DB_quote_smart($gameid));
381   mysql_query("DELETE FROM Trick WHERE game_id=".DB_quote_smart($gameid));
382   mysql_query("DELETE FROM Game WHERE id=".DB_quote_smart($gameid));
383   
384   return;
385 }
386
387 function DB_get_hand($me)
388 {
389   $cards = array();
390
391   $handid = DB_get_handid_by_hash($me);
392
393   $result = mysql_query("SELECT card_id FROM Hand_Card WHERE hand_id=".DB_quote_smart($handid)." and played='false' ");
394   while($r = mysql_fetch_array($result,MYSQL_NUM))
395     $cards[]=$r[0];
396
397   return $cards;
398 }
399
400 function DB_get_all_hand($me)
401 {
402   $cards = array();
403
404   $handid = DB_get_handid_by_hash($me);
405
406   $result = mysql_query("SELECT card_id FROM Hand_Card WHERE hand_id=".DB_quote_smart($handid));
407   while($r = mysql_fetch_array($result,MYSQL_NUM))
408     $cards[]=$r[0];
409
410   return $cards;
411 }
412
413 function DB_get_cards_by_trick($id)
414 {
415   $cards = array();
416   $i     = 1;
417   
418   $result = mysql_query("SELECT card_id,position FROM Play LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id ".
419                         "LEFT JOIN Hand ON Hand.id=Hand_Card.hand_id ".
420                         "WHERE trick_id=".
421                         DB_quote_smart($id)." ORDER BY sequence ASC");
422   while($r = mysql_fetch_array($result,MYSQL_NUM))
423     {
424       $cards[$i]=array("card"=>$r[0],"pos"=>$r[1]);
425       $i++;
426     }
427
428   return $cards;
429 }
430
431
432 function DB_set_solo_by_hash($hash,$solo)
433 {
434   mysql_query("UPDATE Hand SET solo=".DB_quote_smart($solo)." WHERE hash=".DB_quote_smart($hash));
435   return;
436 }
437
438 function DB_set_solo_by_gameid($id,$solo)
439 {
440   mysql_query("UPDATE Game SET solo=".DB_quote_smart($solo)." WHERE id=".DB_quote_smart($id));
441   return;
442 }
443
444 function DB_set_sickness_by_hash($hash,$sickness)
445 {
446   mysql_query("UPDATE Hand SET sickness=".DB_quote_smart($sickness)." WHERE hash=".DB_quote_smart($hash));
447   return;
448 }
449
450 function DB_get_current_trickid($gameid)
451 {
452   $trickid  = NULL;
453   $sequence = NULL;
454   $number   = 0;
455
456   $result = mysql_query("SELECT Trick.id,MAX(Play.sequence) FROM Play ".
457                         "LEFT JOIN Trick ON Play.trick_id=Trick.id ".
458                         "WHERE Trick.game_id=".DB_quote_smart($gameid)." ".
459                         "GROUP BY Trick.id");
460   while( $r = mysql_fetch_array($result,MYSQL_NUM) )
461     {
462       $trickid  = $r[0];
463       $sequence = $r[1];
464       $number++;
465     };
466   
467   if(!$sequence || $sequence==4)
468     {
469       mysql_query("INSERT INTO Trick VALUES (NULL,NULL,NULL, ".DB_quote_smart($gameid).",NULL)");
470       $trickid  = mysql_insert_id();
471       $sequence = 1;
472       $number++;
473     }
474   else
475     {
476       $sequence++;
477     }
478
479   return array($trickid,$sequence,$number);
480 }
481
482 function DB_get_max_trickid($gameid)
483 {
484   $result = mysql_query("SELECT MAX(id) FROM Trick WHERE game_id=".DB_quote_smart($gameid));
485   $r = mysql_fetch_array($result,MYSQL_NUM) ;
486   
487   
488   return ($r?$r[0]:NULL);
489 }
490
491 function DB_play_card($trickid,$handcardid,$sequence)
492 {
493   mysql_query("INSERT INTO Play VALUES(NULL,NULL,NULL,".DB_quote_smart($trickid).
494               ",".DB_quote_smart($handcardid).",".DB_quote_smart($sequence).")");
495       
496   $playid = mysql_insert_id();
497   return $playid;
498 }
499
500 function DB_get_all_names_by_gameid($id)
501 {
502   $names = array();
503   
504   $result = mysql_query("SELECT fullname FROM Hand LEFT JOIN User ON Hand.user_id=User.id WHERE game_id=".
505                         DB_quote_smart($id)." ORDER BY position ASC");
506   while($r = mysql_fetch_array($result,MYSQL_NUM))
507     $names[] = $r[0];
508
509   return $names;
510 }
511
512 function DB_get_all_userid_by_gameid($id)
513 {
514   $names = array();
515   
516   $result = mysql_query("SELECT user_id FROM Hand WHERE game_id=".
517                         DB_quote_smart($id)." ORDER BY position ");
518   while($r = mysql_fetch_array($result,MYSQL_NUM))
519     $names[] = $r[0];
520
521   return $names;
522 }
523
524 function DB_get_hash_from_game_and_pos($id,$pos)
525 {
526   $result = mysql_query("SELECT hash FROM Hand WHERE game_id=".DB_quote_smart($id)." and position=".DB_quote_smart($pos));
527   $r      = mysql_fetch_array($result,MYSQL_NUM);
528   
529   if($r)
530     return $r[0];
531   else
532     return "";
533 }
534
535 function DB_get_hash_from_gameid_and_userid($id,$user)
536 {
537   $result = mysql_query("SELECT hash FROM Hand WHERE game_id=".DB_quote_smart($id)." and user_id=".DB_quote_smart($user));
538   $r      = mysql_fetch_array($result,MYSQL_NUM);
539   
540   if($r)
541     return $r[0];
542   else
543     return "";
544 }
545
546 function DB_get_all_names()
547 {
548   $names  = array();
549
550   $result = mysql_query("SELECT fullname FROM User");
551   while($r = mysql_fetch_array($result,MYSQL_NUM))
552     $names[] = $r[0];
553
554   return $names;
555 }
556
557 function DB_update_game_timestamp($gameid)
558 {
559   mysql_query("UPDATE Game SET mod_date = CURRENT_TIMESTAMP WHERE id=".DB_quote_smart($gameid));
560   return;
561 }
562
563
564 function DB_update_user_timestamp($userid)
565 {
566   mysql_query("UPDATE User SET last_login = CURRENT_TIMESTAMP WHERE id=".DB_quote_smart($userid));
567   return;
568 }
569
570 function DB_get_user_timestamp($userid)
571 {
572   $result = mysql_query("SELECT last_login FROM User WHERE id=".DB_quote_smart($userid));
573   $r      = mysql_fetch_array($result,MYSQL_NUM);
574   
575   if($r)
576     return $r[0];
577   else
578     return NULL;
579 }
580 function DB_get_user_timezone($userid)
581 {
582   $result = mysql_query("SELECT timezone FROM User WHERE id=".DB_quote_smart($userid));
583   $r      = mysql_fetch_array($result,MYSQL_NUM);
584   
585   if($r)
586     return $r[0];
587   else
588     return 0;
589 }
590
591 function DB_insert_comment($comment,$playid,$userid)
592 {
593   mysql_query("INSERT INTO Comment VALUES (NULL,NULL,NULL,$userid,$playid, ".DB_quote_smart($comment).")");
594   return;
595 }
596
597 function DB_get_gametype_by_gameid($id)
598 {
599   $result = mysql_query("SELECT type FROM Game WHERE id=".DB_quote_smart($id));
600   $r      = mysql_fetch_array($result,MYSQL_NUM);
601   
602   if($r)
603     return $r[0]."";
604   else
605     return "";
606 }
607
608 function DB_set_gametype_by_gameid($id,$p)
609 {
610   mysql_query("UPDATE Game SET type='".$p."' WHERE id=".DB_quote_smart($id));
611   return;
612 }
613
614 function DB_get_solo_by_gameid($id)
615 {
616   $result = mysql_query("SELECT solo FROM Game WHERE id=".DB_quote_smart($id));
617   $r      = mysql_fetch_array($result,MYSQL_NUM);
618   
619   if($r)
620     return $r[0]."";
621   else
622     return "";
623 }
624
625
626 function DB_get_startplayer_by_gameid($id)
627 {
628   $result = mysql_query("SELECT startplayer FROM Game WHERE id=".DB_quote_smart($id));
629   $r      = mysql_fetch_array($result,MYSQL_NUM);
630   
631   if($r)
632     return $r[0];
633   else
634     return 0;
635 }
636
637 function DB_set_startplayer_by_gameid($id,$p)
638 {
639   mysql_query("UPDATE Game SET startplayer='".$p."' WHERE id=".DB_quote_smart($id));
640   return;
641 }
642
643 function DB_get_player_by_gameid($id)
644 {
645   $result = mysql_query("SELECT player FROM Game WHERE id=".DB_quote_smart($id));
646   $r      = mysql_fetch_array($result,MYSQL_NUM);
647   
648   if($r)
649     return $r[0];
650   else
651     return 0;
652 }
653 function DB_set_player_by_gameid($id,$p)
654 {
655   mysql_query("UPDATE Game SET player='".DB_quote_smart($p)."' WHERE id=".DB_quote_smart($id));
656   return;
657 }
658
659
660
661 function DB_get_ruleset_by_gameid($id)
662 {
663   $result = mysql_query("SELECT ruleset FROM Game WHERE id=".DB_quote_smart($id));
664   $r      = mysql_fetch_array($result,MYSQL_NUM);
665   
666   if($r)
667     return $r[0];
668   else
669     return NULL;
670 }
671
672 function DB_get_session_by_gameid($id)
673 {
674   $result = mysql_query("SELECT session FROM Game WHERE id=".DB_quote_smart($id));
675   $r      = mysql_fetch_array($result,MYSQL_NUM);
676   
677   if($r)
678     return $r[0];
679   else
680     return NULL;
681 }
682
683 function DB_get_max_session()
684 {
685   $result = mysql_query("SELECT MAX(session) FROM Game");
686   $r      = mysql_fetch_array($result,MYSQL_NUM);
687   
688   if($r)
689     return $r[0];
690   else
691     return 0;
692 }
693
694 function DB_get_hashes_by_session($session,$user)
695 {
696   $r = array();
697
698   $result = mysql_query("SELECT Hand.hash FROM Hand".
699                         " LEFT JOIN Game ON Game.id=Hand.game_id ".
700                         " WHERE Game.session=".DB_quote_smart($session).
701                         " AND Hand.user_id=".DB_quote_smart($user));
702   while($t = mysql_fetch_array($result,MYSQL_NUM))
703     $r[] = $t[0];
704
705   return $r;
706 }
707
708 function DB_get_ruleset($dullen,$schweinchen,$call)
709 {
710   $r = array();
711   
712   $result = mysql_query("SELECT id FROM Rulesets WHERE".
713                         " dullen=".DB_quote_smart($dullen)." AND ".
714                         " call=".DB_quote_smart($call)." AND ".
715                         " schweinchen=".DB_quote_smart($schweinchen));
716   if($result)
717     $r    = mysql_fetch_array($result,MYSQL_NUM);
718   
719   if($r)
720     return $r[0]; /* found ruleset */
721   else
722     {
723       /* create new one */
724       $result = mysql_query("INSERT INTO Rulesets VALUES (NULL, NULL, ".
725                             DB_quote_smart($dullen).",".
726                             DB_quote_smart($schweinchen).",".
727                             DB_quote_smart($call).
728                             ", NULL)");
729       if($result)
730         return mysql_insert_id();
731     };
732
733   return -1; /* something went wrong */
734 }
735
736 function DB_get_party_by_hash($hash)
737 {
738   $result = mysql_query("SELECT party FROM Hand WHERE hash=".DB_quote_smart($hash));
739   $r      = mysql_fetch_array($result,MYSQL_NUM);
740   
741   if($r)
742     return $r[0];
743   else
744     return NULL;
745 }
746 function DB_set_party_by_hash($hash,$party)
747 {
748   mysql_query("UPDATE Hand SET party=".DB_quote_smart($party)." WHERE hash=".DB_quote_smart($hash));
749   return;
750 }
751
752 function DB_get_PREF($myid)
753 {
754   global $PREF;
755
756     $result = mysql_query("SELECT value from User_Prefs".
757                           " WHERE user_id='$myid' AND pref_key='cardset'" );
758     $r = mysql_fetch_array($result,MYSQL_NUM);
759     if($r)
760       {
761         if($r[0]=="germancards" && (time()-strtotime( "2009-12-31 23:59:59")<0) ) /* licence only valid until then */
762           $PREF["cardset"]="altenburg";
763       else
764         $PREF["cardset"]="english";
765       }
766     else
767       $PREF["cardset"]="english";
768
769     return;
770 }
771
772 function DB_get_unused_randomnumbers($userstr)
773 {
774   $queryresult = mysql_query("SELECT randomnumbers,Game.id, COUNT(*) as num FROM Game ".
775                              "  LEFT JOIN Hand ON Hand.game_id=Game.id ".
776                              "                 AND user_id not in (".$userstr.")".
777                              "  GROUP BY  Game.id ".
778                              "  HAVING num=4");
779   
780   $r = mysql_fetch_array($queryresult,MYSQL_NUM);
781   if($r)
782     return $r[0];
783   else
784     return "";
785 }
786
787 function DB_get_number_of_passwords_recovery($user)
788 {
789   $queryresult = mysql_query("SELECT COUNT(*) FROM Recovery ".
790                              "  WHERE user_id=$user ".
791                              "  AND DATE_SUB(CURDATE(),INTERVAL 1 DAY) <= create_date".
792                              "  GROUP BY user_id " );
793   
794   $r = mysql_fetch_array($queryresult,MYSQL_NUM);
795   if($r)
796     return $r[0];
797   else
798     return 0;
799 }
800
801 function DB_set_recovery_password($user,$newpw)
802 {
803   mysql_query("INSERT INTO Recovery VALUES(NULL,".DB_quote_smart($user).
804               ",".DB_quote_smart($newpw).",NULL)");
805               
806   return;
807 }
808
809 function DB_get_card_name($card)
810 {
811   $queryresult = mysql_query("SELECT strength,suite FROM Card WHERE id='$card'");
812   
813   $r = mysql_fetch_array($queryresult,MYSQL_NUM);
814   if($r)
815     return $r[0]." of ".$r[1];
816   else
817     return "Error during get_card_name ".$card;
818 }
819
820 ?>