6 require_once('joe/util.lib.php');
8 function DBMaster($sql) {
10 $res = mysql_query($sql);
14 function DBSlave($sql) {
16 $res = mysql_query($sql);
18 if (mysql_error()) trigger_error($sql."<br />\n".mysql_error(),E_USER_ERROR);
22 function DBSelect($sql) { return DBSlave($sql); }
23 function DBInsert($sql) {
25 if (mysql_error()) trigger_error($sql."<br />\n".mysql_error(),E_USER_ERROR);
26 return mysql_insert_id();
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); }
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;
42 $sql_result = "SHOW TABLE STATUS FROM `" .mysql_escape_string($tdb)."`";
43 $result = DBShow($sql_result);
47 while ($data = mysql_fetch_array($result)) {
48 $size += $data["Data_length"] + $data["Index_length"];
50 mysql_free_result($result);
58 function checkQuotas($userId=null) {
60 $sql = 'SELECT DatabaseId,Name FROM DB WHERE bEnabled=1';
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));
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'",
71 mysql_escape_string($DBId));
74 $sql = "UPDATE UserStat SET nBytes = (
77 INNER JOIN DBOwner ON DBOwner.DatabaseId = DB.DatabaseId
78 WHERE DBOwner.UserId = UserStat.UserId
81 ), dLastCheck = NOW()";
82 if (!empty($userId)) $sql .= sprintf(" WHERE UserId = '%s'", mysql_escape_string($userId));
84 $sql = "UPDATE UserStat SET nDatabases = (
87 INNER JOIN DBOwner ON DBOwner.DatabaseId = DB.DatabaseId
88 WHERE DBOwner.UserId = UserStat.UserId
91 ), dLastCheck = NOW()";
92 if (!empty($userId)) $sql .= sprintf(" WHERE UserId = '%s'", mysql_escape_string($userId));