bd375322e0773f06337f2c6beb5cdc0d215de52d
[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   echo "*looking for $name*";
54   $result = mysql_query("SELECT email FROM user WHERE fullname=".DB_quote_smart($name)."");
55   $r      = mysql_fetch_array($result,MYSQL_NUM);
56   
57   if($r)
58     return $r[0];
59   else
60     return "";
61 }
62
63 function DB_get_userid_by_name($name)
64 {
65   $result = mysql_query("SELECT id FROM user WHERE fullname=".DB_quote_smart($name));
66   $r      = mysql_fetch_array($result,MYSQL_NUM);
67   
68   if($r)
69     return $r[0];
70   else
71     return 0;
72 }
73 function DB_get_userid_by_passwd($passwd)
74 {
75   $result = mysql_query("SELECT id FROM user WHERE password=".DB_quote_smart($passwd));
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_email($email)
84 {
85   $result = mysql_query("SELECT id FROM user WHERE email=".DB_quote_smart($email));
86   $r      = mysql_fetch_array($result,MYSQL_NUM);
87   
88   if($r)
89     return $r[0];
90   else
91     return 0;
92 }
93
94 function DB_get_handid_by_hash($hash)
95 {
96   $result = mysql_query("SELECT id FROM hand WHERE hash=".DB_quote_smart($hash));
97   $r      = mysql_fetch_array($result,MYSQL_NUM);
98   
99   if($r)
100     return $r[0];
101   else
102     return 0;
103 }
104
105 function DB_get_userid_by_hash($hash)
106 {
107   $result = mysql_query("SELECT user_id FROM hand WHERE hash=".DB_quote_smart($hash));
108   $r      = mysql_fetch_array($result,MYSQL_NUM);
109   
110   if($r)
111     return $r[0];
112   else
113     return 0;
114 }
115
116 function DB_get_pos_by_hash($hash)
117 {
118   $result = mysql_query("SELECT position FROM hand WHERE hash=".DB_quote_smart($hash));
119   $r      = mysql_fetch_array($result,MYSQL_NUM);
120   
121   if($r)
122     return $r[0];
123   else
124     return 0;
125 }
126
127 function DB_get_name_by_hash($hash)
128 {
129   $result = mysql_query("SELECT fullname FROM hand LEFT JOIN user ON hand.user_id=user.id WHERE hash=".DB_quote_smart($hash));
130   $r      = mysql_fetch_array($result,MYSQL_NUM);
131   
132   if($r)
133     return $r[0];
134   else
135     return "";
136 }
137
138 function DB_get_status_by_hash($hash)
139 {
140   $result = mysql_query("SELECT status FROM hand WHERE hash=".DB_quote_smart($hash));
141   $r      = mysql_fetch_array($result,MYSQL_NUM);
142   
143   if($r)
144     return $r[0];
145   else
146     return 0;
147 }
148
149 function DB_set_hand_status_by_hash($hash,$status)
150 {
151   mysql_query("UPDATE hand SET status='".$status."' WHERE hash=".DB_quote_smart($hash));
152   return;
153 }
154
155 function DB_get_gameid_by_hash($hash)
156 {
157   $result = mysql_query("SELECT game_id FROM hand WHERE hash=".DB_quote_smart($hash));
158   $r      = mysql_fetch_array($result,MYSQL_NUM);
159   
160   if($r)
161     return $r[0];
162   else
163     return 0;
164 }
165
166 function DB_cancel_game($hash)
167 {
168   $gameid = DB_get_gameid_by_hash($me);
169
170   if(!$gameid)
171     return;
172
173   /* get the IDs of all players */
174   $result = mysql_query("SELECT id FROM hand WHERE game_id=".DB_quote_smart($gameid));
175   while($r = mysql_fetch_array($result,MYSQL_NUM))
176     {
177       $id = $r[0];
178       
179       $tmp = mysql_query("SELECT id  FROM hand_card WHERE hand_id=".DB_quote_smart($id));
180       $tmp = mysql_fetch_array($tmp,MYSQL_NUM);
181       mysql_query("DELETE FROM play WHERE hand_card_id=".DB_quote_smart($tmp[0]));
182
183       
184       mysql_query("DELETE FROM hand_card WHERE hand_id=".DB_quote_smart($id));
185       mysql_query("DELETE FROM score WHERE hand_id=".DB_quote_smart($id));
186       mysql_query("DELETE FROM hand WHERE id=".DB_quote_smart($id));
187     }
188   
189   /* delete game */
190   mysql_query("DELETE FROM user_game_prefs WHERE game_id=".DB_quote_smart($gameid));
191   mysql_query("DELETE FROM trick WHERE game_id=".DB_quote_smart($gameid));
192   mysql_query("DELETE FROM game WHERE id=".DB_quote_smart($gameid));
193   
194   return;
195 }
196
197 function DB_get_hand($me)
198 {
199   $cards = array();
200
201   $handid = DB_get_handid_by_hash($me);
202
203   $result = mysql_query("SELECT card_id FROM hand_card WHERE hand_id=".DB_quote_smart($handid)." and played='false' ");
204   while($r = mysql_fetch_array($result,MYSQL_NUM))
205     $cards[]=$r[0];
206
207   return $cards;
208 }
209
210 function DB_set_solo_by_hash($me,$solo)
211 {
212   mysql_query("UPDATE hand SET solo=".DB_quote_smart($solo)." WHERE hash=".DB_quote_smart($hash));
213   return;
214 }
215
216 function DB_set_sickness_by_hash($me,$sickness)
217 {
218   mysql_query("UPDATE hand SET sickness=".DB_quote_smart($sickness)." WHERE hash=".DB_quote_smart($hash));
219   return;
220 }
221
222 function DB_get_current_trickid($gameid)
223 {
224   $result = mysql_query("SELECT trick.id,MAX(play.sequence) FROM play ".
225                         "LEFT JOIN trick ON play.trick_id=trick.id ".
226                         "WHERE trick.game_id=".DB_quote_smart($gameid)." ".
227                         "GROUP BY trick.id");
228   while(  $r = mysql_fetch_array($result,MYSQL_NUM) )
229     {
230       $trickid  = $r[0];
231       $sequence = $r[1];
232     };
233   
234   if(!$sequence || $sequence==4)
235     {
236       mysql_query("INSERT INTO trick VALUES (NULL,NULL,NULL, ".DB_quote_smart($gameid).")");
237       $trickid  = mysql_insert_id();
238       $sequence = 1;
239     }
240   else
241     {
242       $sequence++;
243     }
244
245   return array($trickid,$sequence);
246 }
247
248 function DB_get_max_trickid($gameid)
249 {
250   $result = mysql_query("SELECT MAX(id) FROM trick WHERE game_id=".DB_quote_smart($gameid));
251   $r = mysql_fetch_array($result,MYSQL_NUM) ;
252   
253   
254   return ($r?$r[0]:NULL);
255 }
256
257 function DB_play_card($trickid,$handcardid,$sequence)
258 {
259   mysql_query("INSERT into play VALUES(NULL,NULL,NULL,".DB_quote_smart($trickid).
260               ",".DB_quote_smart($handcardid).",".DB_quote_smart($sequence).")");
261   return;
262 }
263
264 ?>