]> andersk Git - sql-web.git/blame - lib/dbaccess.lib.php
git-svn-id: svn://presbrey.mit.edu/sql/web@112 a142d4bd-2cfb-0310-9673-cb33a7e74f58
[sql-web.git] / lib / dbaccess.lib.php
CommitLineData
997305cf 1<?php
79ffa771
JP
2/*
3 (c) 2005 Joe Presbrey
4*/
997305cf
JP
5
6require_once('joe.lib.php');
7
8function DBMaster($sql) {
9 sessTime($sql);
10 $res = mysql_query($sql);
11 sessTime();
12 return $res;
13}
14function DBSlave($sql) {
15 sessTime($sql);
16 $res = mysql_query($sql);
17 sessTime();
82ffc3b5 18 if (mysql_error()) trigger_error($sql."<br />\n".mysql_error(),E_USER_ERROR);
997305cf
JP
19 return $res;
20}
21
22function DBSelect($sql) { return DBSlave($sql); }
377015e0
JP
23function DBInsert($sql) {
24 DBMaster($sql);
82ffc3b5 25 if (mysql_error()) trigger_error($sql."<br />\n".mysql_error(),E_USER_ERROR);
377015e0
JP
26 return mysql_insert_id();
27}
28function DBUpdate($sql) { DBInsert($sql); }
29function DBDelete($sql) { DBInsert($sql); }
30function DBCreate($sql) { DBMaster($sql); }
31function DBDrop($sql) { DBMaster($sql); }
32function DBGrant($sql) { DBInsert($sql); }
33function DBRevoke($sql) { DBInsert($sql); }
34function DBSet($sql) { DBInsert($sql); }
997305cf
JP
35function DBShow($sql) { return DBSlave($sql); }
36
37function calcDBSize($tdb) {
e346f2b3
JP
38 $sql_result = "SHOW DATABASES LIKE '".mysql_escape_string($tdb)."'";
39 $result = DBShow($sql_result);
40 if (!mysql_num_rows($result)) return null;
41
997305cf 42 $sql_result = "SHOW TABLE STATUS FROM `" .mysql_escape_string($tdb)."`";
997305cf
JP
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
9c70b481
JP
58function 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 %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);
9840d102
JP
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);
9c70b481
JP
94}
95
997305cf 96?>
This page took 0.056357 seconds and 5 git commands to generate.