]> andersk Git - sql-web.git/blob - lib/dbaccess.lib.php
696cdfe71d76e3d77210f4ce8913d43d2415ac41
[sql-web.git] / lib / dbaccess.lib.php
1 <?php
2
3 require_once('joe.lib.php');
4
5 function DBMaster($sql) {
6         sessTime($sql);
7         $res = mysql_query($sql);
8         sessTime();
9         return $res;
10 }
11 function DBSlave($sql) {
12         sessTime($sql);
13         $res = mysql_query($sql);
14         sessTime();
15         if (mysql_error()) die($sql."<br />\n".mysql_error());
16         return $res;
17 }
18
19 function DBSelect($sql) { return DBSlave($sql); }
20 function DBInsert($sql) {
21         DBMaster($sql);
22         if (mysql_error()) die($sql."<br />\n".mysql_error());
23         return mysql_insert_id();
24 }
25 function DBUpdate($sql) { DBInsert($sql); }
26 function DBDelete($sql) { DBInsert($sql); }
27 function DBCreate($sql) { DBMaster($sql); }
28 function DBDrop($sql) { DBMaster($sql); }
29 function DBGrant($sql) { DBInsert($sql); }
30 function DBRevoke($sql) { DBInsert($sql); }
31 function DBSet($sql) { DBInsert($sql); }
32 function DBShow($sql) { return DBSlave($sql); }
33
34 function calcDBSize($tdb) {
35         $sql_result = "SHOW DATABASES LIKE '".mysql_escape_string($tdb)."'";
36         $result = DBShow($sql_result);
37         if (!mysql_num_rows($result)) return null;
38         
39    $sql_result = "SHOW TABLE STATUS FROM `" .mysql_escape_string($tdb)."`";
40    $result = DBShow($sql_result);
41
42    if($result) {
43        $size = 0;
44        while ($data = mysql_fetch_array($result)) {
45              $size += $data["Data_length"] + $data["Index_length"];
46        }
47        mysql_free_result($result);
48        return $size;
49    }
50    else {
51        return null;
52    }
53 }
54
55 function checkQuotas($userId=null) {
56         if (empty($userId)) {
57                 $sql = 'SELECT DatabaseId,Name FROM DB WHERE bEnabled=1';
58         } else {
59                 $sql = sprintf("SELECT DB.DatabaseId,Name FROM DB INNER JOIN DBOwner ON DB.DatabaseId = DBOwner.DatabaseId WHERE bEnabled=1 AND UserId = '%s'", mysql_escape_string($userId));
60         }
61         $databases = fetchRows(DBSelect($sql),'Name');
62         foreach($databases as $db) {
63                 $DBId = $db['DatabaseId'];
64                 $arr['dLastCheck'] = 'NOW()';
65                 $arr['nBytes'] = calcDBSize($db['Name']);
66                 $sql = sprintf("UPDATE DB %s WHERE DatabaseId = '%s'",
67                                                 buildSQLSet($arr),
68                                                 mysql_escape_string($DBId));
69                 DBUpdate($sql);
70         }
71         $sql = "UPDATE UserStat SET nBytes = (
72                                 SELECT SUM(nBytes)
73                                 FROM DB
74                                 INNER JOIN DBOwner ON DBOwner.DatabaseId = DB.DatabaseId
75                                 WHERE DBOwner.UserId = UserStat.UserId
76                                   AND DB.bEnabled=1
77                                 GROUP BY UserId
78                                 ), dLastCheck = NOW()";
79         if (!empty($userId)) $sql .= sprintf(" WHERE UserId = '%s'", mysql_escape_string($userId));
80         DBUpdate($sql);
81         $sql = "UPDATE UserStat SET nDatabases = (
82                                 SELECT COUNT(*)
83                                 FROM DB
84                                 INNER JOIN DBOwner ON DBOwner.DatabaseId = DB.DatabaseId
85                                 WHERE DBOwner.UserId = UserStat.UserId
86                                   AND DB.bEnabled=1
87                                 GROUP BY UserId
88                                 ), dLastCheck = NOW()";
89         if (!empty($userId)) $sql .= sprintf(" WHERE UserId = '%s'", mysql_escape_string($userId));
90         DBUpdate($sql);
91 }
92
93 ?>
This page took 0.029905 seconds and 3 git commands to generate.