]>
Commit | Line | Data |
---|---|---|
997305cf JP |
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(); | |
88b7d384 | 15 | if (mysql_error()) die($sql."<br />\n".mysql_error()); |
997305cf JP |
16 | return $res; |
17 | } | |
18 | ||
19 | function DBSelect($sql) { return DBSlave($sql); } | |
377015e0 JP |
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); } | |
997305cf JP |
32 | function DBShow($sql) { return DBSlave($sql); } |
33 | ||
34 | function calcDBSize($tdb) { | |
e346f2b3 JP |
35 | $sql_result = "SHOW DATABASES LIKE '".mysql_escape_string($tdb)."'"; |
36 | $result = DBShow($sql_result); | |
37 | if (!mysql_num_rows($result)) return null; | |
38 | ||
997305cf | 39 | $sql_result = "SHOW TABLE STATUS FROM `" .mysql_escape_string($tdb)."`"; |
997305cf JP |
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 | ||
9c70b481 JP |
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); | |
9840d102 JP |
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); | |
9c70b481 JP |
91 | } |
92 | ||
997305cf | 93 | ?> |