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