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