]>
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) { | |
35 | $sql_result = "SHOW TABLE STATUS FROM `" .mysql_escape_string($tdb)."`"; | |
36 | // $result = @mysql_db_query($tdb,$sql_result); | |
37 | $result = DBShow($sql_result); | |
38 | ||
39 | if($result) { | |
40 | $size = 0; | |
41 | while ($data = mysql_fetch_array($result)) { | |
42 | $size += $data["Data_length"] + $data["Index_length"]; | |
43 | } | |
44 | mysql_free_result($result); | |
45 | return $size; | |
46 | } | |
47 | else { | |
48 | return null; | |
49 | } | |
50 | } | |
51 | ||
9c70b481 JP |
52 | function checkQuotas($userId=null) { |
53 | if (empty($userId)) { | |
54 | $sql = 'SELECT DatabaseId,Name FROM DB WHERE bEnabled=1'; | |
55 | } else { | |
56 | $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)); | |
57 | } | |
58 | $databases = fetchRows(DBSelect($sql),'Name'); | |
59 | foreach($databases as $db) { | |
60 | $DBId = $db['DatabaseId']; | |
61 | $arr['dLastCheck'] = 'NOW()'; | |
62 | $arr['nBytes'] = calcDBSize($db['Name']); | |
63 | $sql = sprintf("UPDATE DB %s WHERE DatabaseId = '%s'", | |
64 | buildSQLSet($arr), | |
65 | mysql_escape_string($DBId)); | |
66 | DBUpdate($sql); | |
67 | } | |
68 | $sql = "UPDATE UserStat SET nBytes = ( | |
69 | SELECT SUM(nBytes) | |
70 | FROM DB | |
71 | INNER JOIN DBOwner ON DBOwner.DatabaseId = DB.DatabaseId | |
72 | WHERE DBOwner.UserId = UserStat.UserId | |
73 | AND DB.bEnabled=1 | |
74 | GROUP BY UserId | |
75 | ), dLastCheck = NOW()"; | |
76 | if (!empty($userId)) $sql .= sprintf(" WHERE UserId = '%s'", mysql_escape_string($userId)); | |
77 | DBUpdate($sql); | |
9840d102 JP |
78 | $sql = "UPDATE UserStat SET nDatabases = ( |
79 | SELECT COUNT(*) | |
80 | FROM DB | |
81 | INNER JOIN DBOwner ON DBOwner.DatabaseId = DB.DatabaseId | |
82 | WHERE DBOwner.UserId = UserStat.UserId | |
83 | AND DB.bEnabled=1 | |
84 | GROUP BY UserId | |
85 | ), dLastCheck = NOW()"; | |
86 | if (!empty($userId)) $sql .= sprintf(" WHERE UserId = '%s'", mysql_escape_string($userId)); | |
87 | DBUpdate($sql); | |
9c70b481 JP |
88 | } |
89 | ||
997305cf | 90 | ?> |