File: mysql.class

package info (click to toggle)
basilix 1.0.3b-1.1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 828 kB
  • ctags: 206
  • sloc: php: 2,681; sql: 45; makefile: 40; sh: 7
file content (318 lines) | stat: -rw-r--r-- 10,625 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
<?
/*
+-------------------------------------------------------------------+
| BasiliX - Copyright (C) 2000 Murat Arslan <arslanm@cyberdude.com> |
+-------------------------------------------------------------------+
*/

// MySQL related stuff (tired of commenting)
// ------------------------------------------------------------------
class MySQL {
   var $socket = "";
   var $dbname = "";
   var $dbhost = "";
   var $dbuser = ""; 
   var $dbpass = "";
   
   function MySQL() {
       // init
       global $BSX_DB_USER, $BSX_DB_PASS, $BSX_DB_NAME, $BSX_DB_HOST;
       $this->dbuser = $BSX_DB_USER;
       $this->dbpass = $BSX_DB_PASS;
       $this->dbname = $BSX_DB_NAME;
       $this->dbhost = $BSX_DB_HOST;
   }
   // errors
   function error($text) {
      $err_no = mysql_errno();
      $err_msg = mysql_error();
      printf("<b>MySQL ERROR:</b> %s (%d):<br>%s<br>\n",
	     $err_msg, $err_no, $text);
      exit();
   }
   
   // connect to the db
   function open() {
      $i = mysql_connect($this->dbhost, $this->dbuser, $this->dbpass);
      if(!$i)
	$this->error("Error connecting to the database server.");
      if(!mysql_select_db($this->dbname, $i))
	$this->error("Error selecting the database.");
      $this->socket = $i;
   }
   
   // close the connection
   function close() {
      if($this->socket) mysql_close($this->socket);
      $this->socket = "";
   }

   // select the rows and append them to an array
   function select_rows($query) {
      if(empty($this->socket)) return false;

      $results = mysql_query($query, $this->socket);
      if(!$results || empty($results)) return false;

      $i = 0;
      $data = array();
      while($row = mysql_fetch_array($results)) {
	 $data[$i] = $row;
	 $i++;
      }
      mysql_free_result($results);
      return $data;
   }
   
   // insert a row
   function insert_row($query) {
      if(empty($this->socket)) return false;
      $rc = mysql_query($query);
      if($rc == false) return false;
      $id = mysql_insert_id($this->socket);
      return $id;
   }
   
   // sessions
   function session_create($u, $d, $p, $s, $t, $h, $a) {
      if($h == "") $h = "Unknown";
      $query = "INSERT INTO SESSION (USERNAME,DOMAIN,PASSWORD,SESSIONID,LASTACCESS,LASTTIME,LASTHOST,LASTADDR) ";
      $query .= "VALUES ('$u', '$d', '$p','$s','$t','$t','$h','$a')";
      $rc = $this->insert_row($query);
      return $rc;
   }

   function session_update($r, $p, $s, $t, $h, $a) {
      if($h == "") $h = "Unknown";
      $query = "UPDATE SESSION SET SESSIONID='$s',PASSWORD='$p',LASTTIME='$t',LASTHOST='$h',LASTADDR='$a' WHERE CUSTOMERID='$r'";
      $rc = mysql_query($query);
      return $rc;
   }

   function session_checkuser($u, $d) {
      $query = "SELECT CUSTOMERID,LASTTIME,LASTHOST,LASTADDR FROM SESSION WHERE USERNAME='$u' AND DOMAIN='$d'";
      return $this->select_rows($query);
   }

   function session_zero($s) {
      $query = "UPDATE SESSION SET PASSWORD='',SESSIONID='' WHERE SESSIONID='$s'";
      $rc = mysql_query($query);
      return $rc;
   }

   function session_getuservals($s) {
      $query = "SELECT CUSTOMERID,USERNAME,DOMAIN,PASSWORD FROM SESSION WHERE SESSIONID='$s'";
      $data = $this->select_rows($query);
      if(!empty($data)) {
	$tt = time();
	$query = "UPDATE SESSION SET LASTACCESS='$tt' WHERE SESSIONID='$s'";
	$rc = mysql_query($query);
      }
      return $data;
   }
   // online users
   function online_users() {
      $t = time();
      $query = "SELECT COUNT(*) CNT FROM SESSION WHERE PASSWORD != '' AND ($t - LASTACCESS < 900)"; #15m
      $data = $this->select_rows($query);
      $ou = $data[0]["CNT"];
      return $ou;
   }

   // address book
   // load the addressbook items of the user
   function get_allabook($cid) {
      $query = "SELECT * FROM ADDRESSBOOK WHERE OWNERID=$cid";
      return $this->select_rows($query);
   }

   // load the addressbook group items of the user
   function get_allabookgrp($cid) {
      $query = "SELECT * FROM ADDRESSBOOKGRP WHERE OWNERID=$cid ORDER BY GRPNAME";
      return $this->select_rows($query);
   }
           
   // add an entry
   function addr_add($cid, $nick, $email, $name, $tel, $fax, $note) {
      $nick = addslashes($nick);
      $email = addslashes($email);
      $name = addslashes($name);
      $tel = addslashes($tel);
      $fax = addslashes($fax);
      $note = addslashes($note);
      $query = "INSERT INTO ADDRESSBOOK (OWNERID, NICKNAME, EMAIL, NAME, TELEPHONE, FAX, NOTE) VALUES ";
      $query .= "('$cid', '$nick','$email','$name','$tel','$fax','$note')";
      $rc = $this->insert_row($query);
      return $rc;
   }

   // delete an entry
   function addr_delitem($cid, $id) {
      // first erase the user from the groups
      $this->addr_delitemgrp($cid, $id);
      $query = "DELETE FROM ADDRESSBOOK WHERE OWNERID=$cid AND ROWID=$id";
      $rc = mysql_query($query);
      if($rc == false) return false;
      $ar = mysql_affected_rows($this->socket);
      if($ar == 0) return false;
      else return true;
   }
 
   // user -> which groups
   function addr_uid2grps($cid, $id) {
      $query = "SELECT AG.MEMBERS MEMBERS, AG.GRPNAME GRPNAME, AG.ROWID ROWID ";
      $query .= "FROM ADDRESSBOOKGRP AG, ADDRESSBOOK A ";
      $query .= "WHERE AG.OWNERID=$cid AND AG.OWNERID=A.OWNERID AND ";
      $query .= "(MEMBERS LIKE '$id,%' OR MEMBERS LIKE '%,$id,%' OR MEMBERS LIKE '%,$id' OR MEMBERS='$id') ";
      $query .= "GROUP BY ROWID";
      $data = $this->select_rows($query);
      if(empty($data)) return false;
      return $data;
   }

   // erase the user from all the groups he is subscribed.
   function addr_delitemgrp($cid, $id) {
      // first find out to which groups this user subscribed.
      $grps = $this->addr_uid2grps($cid, $id);
      if(empty($grps)) return 0;
      $ret = 0;
      for($i = 0 ; $i < count($grps) ; $i++) {
          $cur_grp = $grps[$i];
          $rowid = $cur_grp["ROWID"];
          $members = $cur_grp["MEMBERS"];
          $m_arr = explode(",", $members);
          $nmembers = "";
          for($j = 0 ; $j < count($m_arr) ; $j++) {
              if($m_arr[$j] != $id) {
		 if(empty($nmembers)) $nmembers = $m_arr[$j];
		 else $nmembers = $nmembers . "," . $m_arr[$j];
	      }
          }
          $query = "UPDATE ADDRESSBOOKGRP SET MEMBERS='$nmembers' WHERE OWNERID=$cid AND ROWID=$rowid";
          $ret += mysql_query($query);
      }
      return $ret;
   }

   // update an entry
   function addr_update($cid, $rowid, $nick, $email, $name, $tel, $fax, $note) {
      $nick = addslashes($nick);
      $email = addslashes($email);
      $name = addslashes($name);
      $tel = addslashes($tel);
      $fax = addslashes($fax);
      $note = addslashes($note);
      $query = "UPDATE ADDRESSBOOK SET NICKNAME='$nick',EMAIL='$email',NAME='$name',TELEPHONE='$tel',FAX='$fax',NOTE='$note' ";
      $query .= "WHERE OWNERID=$cid AND ROWID=$rowid";
      return mysql_query($query);
   }

   // retrieve an entry
   function addr_getitem($cid, $rowid) {
      $query = "SELECT * FROM ADDRESSBOOK WHERE OWNERID=$cid AND ROWID=$rowid";
      return $this->select_rows($query);
   }

   // add a new group
   function addr_addgrp($cid, $name) {
      $name = addslashes($name);
      $query = "INSERT INTO ADDRESSBOOKGRP (OWNERID, GRPNAME) VALUES ";
      $query .= "('$cid','$name')";
      $rc = $this->insert_row($query);
      return $rc;
   }

   // delete a group
   function addr_delgrp($cid, $id) {
      $query = "DELETE FROM ADDRESSBOOKGRP WHERE OWNERID=$cid AND ROWID=$id";
      $rc = mysql_query($query);
      if($rc == false) return false;
      $ar = mysql_affected_rows($this->socket);
      if($ar == 0) return false;
      else return true;
   }

   // retrieve the members of the group
   function addr_grpmem($cid, $id) {
      $query = "SELECT MEMBERS FROM ADDRESSBOOKGRP WHERE OWNERID=$cid AND ROWID=$id";
      $dat = $this->select_rows($query);
      $members = $dat[0]["MEMBERS"];
      $mem_arr = explode(",", $members);
      if(count($members) == 1 && empty($mem_arr[0])) return array();
      return $mem_arr;
   }

   function addr_uid2nick($cid, $id) {
      $query = "SELECT NICKNAME FROM ADDRESSBOOK WHERE OWNERID=$cid AND ROWID=$id";
      $dat = $this->select_rows($query);
      $nick = $dat[0]["NICKNAME"];
      return $nick;
   }

   // retrieve the name of the group
   function addr_getgrpname($cid, $id) {
      $query = "SELECT GRPNAME FROM ADDRESSBOOKGRP WHERE OWNERID=$cid AND ROWID=$id";
      $data = $this->select_rows($query);
      if(empty($data)) return "";
      return $data[0]["GRPNAME"];
   }

   // add user to a group
   function addr_grpaddmem($cid, $gid, $uid) {
      $query = "SELECT MEMBERS FROM ADDRESSBOOKGRP WHERE OWNERID=$cid AND ROWID=$gid";
      $dat = $this->select_rows($query);
      $members = $dat[0]["MEMBERS"];
      if(empty($members)) $nmembers = $uid;
      else {
	 $mem_arr = explode(",", $members);
	 for($i = 0 ; $i < count($mem_arr) ; $i++) {
	    if($mem_arr[$i] == $uid) return false;
	 }
         $nmembers = $members . "," . $uid;
      }
      $nmembers = addslashes($nmembers);
      $query = "UPDATE ADDRESSBOOKGRP SET MEMBERS='$nmembers' WHERE OWNERID=$cid AND ROWID=$gid";
      return mysql_query($query);
   }

   // delete a user from the group
   function addr_grpdelmem($cid, $gid, $uid) {
      $members = $this->addr_grpmem($cid, $gid);
      if(empty($members)) return false;
      $nmembers = "";
      for($i = 0 ; $i < count($members) ; $i++) {
          if($members[$i] != $uid) {
             if(empty($nmembers)) $nmembers = $members[$i];
             else $nmembers = $nmembers . "," . $members[$i];
          }
      }
      $query = "UPDATE ADDRESSBOOKGRP SET MEMBERS='$nmembers' WHERE OWNERID=$cid AND ROWID=$gid";
      return mysql_query($query);
   }

     
   // settings
   // save
   function settings_save($cid, $lang, $name, $sign, $sort, $rsort, $sent, $trash, $psize, $theme) {
      $name = addslashes($name);
      $sign = addslashes($sign);

      $query = "UPDATE SETTINGS SET ";
      $query .= "NAME='$name', SIGN='$sign', LANG='$lang', SORT='$sort', RSORT='$rsort',";
      $query .= "PSIZE='$psize', SAVESENT='$sent', MOVETRASH='$trash', THEME='$theme' WHERE CUSTOMERID='$cid'";
      return mysql_query($query);
   }

   // load
   function settings_load($cid) {
      $query = "SELECT * FROM SETTINGS WHERE CUSTOMERID='$cid'";
      return $this->select_rows($query);
   }

   // init
   function settings_init($cid) {
      $query = "INSERT INTO SETTINGS (CUSTOMERID) VALUES ('$cid')";
      return $this->insert_row($query);
   }
}
?>