include 'tpl/head.php';
foreach($users as $id=>$user) {
- echo '<a href="',newQSA(array('impersonate'=>$id)),'">',$user['Username'],'</a> (',$user['Name'],')<br />';
+ echo '<a href="do/admin/main',newQSA(array('impersonate'=>$id)),'">',$user['Username'],'</a> (',$user['Name'],')<br />';
}
include 'tpl/foot.php';
unset($_SESSION['LoginSSL']);
}
+if (isPost() || isset($i_refresh)) {
+ checkQuotas($UserId);
+ isset($i_refresh) && redirect('main');
+}
?>
}
}
+function checkQuotas($userId=null) {
+ if (empty($userId)) {
+ $sql = 'SELECT DatabaseId,Name FROM DB WHERE bEnabled=1';
+ } else {
+ $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));
+ }
+ $databases = fetchRows(DBSelect($sql),'Name');
+ foreach($databases as $db) {
+ $DBId = $db['DatabaseId'];
+ $arr['dLastCheck'] = 'NOW()';
+ $arr['nBytes'] = calcDBSize($db['Name']);
+ $sql = sprintf("UPDATE DB %s WHERE DatabaseId = '%s'",
+ buildSQLSet($arr),
+ mysql_escape_string($DBId));
+ DBUpdate($sql);
+ }
+ $sql = "UPDATE UserStat SET nBytes = (
+ SELECT SUM(nBytes)
+ FROM DB
+ INNER JOIN DBOwner ON DBOwner.DatabaseId = DB.DatabaseId
+ WHERE DBOwner.UserId = UserStat.UserId
+ AND DB.bEnabled=1
+ GROUP BY UserId
+ ), dLastCheck = NOW()";
+ if (!empty($userId)) $sql .= sprintf(" WHERE UserId = '%s'", mysql_escape_string($userId));
+ DBUpdate($sql);
+}
+
?>
$color2 = 'white';
$color3 = 'white';
$color4 = 'black';
- if ($percent>1) {
+ /* if ($percent>1) {
$percent = $percent/100;
- } /*
+ }
} elseif (!is_integer($percent) && $percent<2) {
$percent = $percent*100;
} elseif ($percent == 1) {
$percent = 100;
} */
- $per1 = $per2 = ceil($percent*100);
- $per2 = 100 - $per2;
+ $per1 = $per2 = floor($percent*100);
+ if ($per1>100) {
+ $per1 = 100;
+ $per2 = 0;
+ } else {
+ $per2 = 100 - $per2;
+ }
$per1 .= "%";
$per2 .= "%";
- return '<table cellpadding=0 cellspacing=0 width="100%" class="bargraph">
+/* return '<table cellpadding=0 cellspacing=0 width="100%" class="bargraph">
<tr>
<td class="bar" align="left" width="'.$per1.'"><div style="position: relative;"><div style="left: 0; display: inline; position: absolute;"> '.$txt1.' </div> </div></td>
- <td class="fill" width="'.$per2.'"><div style="position: relative;"> <div style="right: 0; display: inline; position: absolute;">'.$txt2.' <em>'.$per1.'</em></div></div></td>
- </tr></table>';
+ <td class="fill" align="left" width="'.$per2.'"><div style="position: relative;"> <div style="right: 0; display: inline; position: absolute;">'.$txt2.' <em>'.$per1.'</em></div></div></td>
+ </tr></table>';*/
+ return '<table cellpadding=0 cellspacing=0 width="100%" class="bargraph">
+ <tr>
+ <td class="bar" align="left" width="'.$per1.'"><div style="position: relative;"></div></td>
+ <td class="fill" align="right" width="'.$per2.'"><div style="position: relative;"></div></td>
+ </tr>
+ </table><table cellpadding=0 cellspacing=0 width="100%">
+ <tr style="height: 1px;">
+ <td class="bar" align="left" width="50%"><div style="position: relative;"><div style="bottom: 3px; left: 5px; position: absolute;">'.$txt1.'</div></div></td>
+ <td class="fill" align="right" width="50%"><div style="position: relative;"><div style="bottom: 3px; right: 3px; position: absolute;">'.$txt2.' <em>'.$per1.'</em></div></div></td>
+ </tr>
+ </table>';
}
?>
var $dblist;
function User($userId) {
$this->userId = $userId;
- $sql = sprintf("SELECT User.UserId, Username, Password, Name, Email, UL, bEnabled, nBytesSoft, nBytesHard, nBytes, nDatabases, nDatabasesHard
+ $sql = sprintf("SELECT User.UserId, Username, Password, Name, Email, UL, bEnabled, nBytesSoft, nBytesHard, nBytes, nDatabases, nDatabasesHard, IF(nBytes>nBytesHard,1,0) AS bOverQuota
FROM User
INNER JOIN UserQuota ON User.UserId = UserQuota.UserId
INNER JOIN UserStat ON User.UserId = UserStat.UserId
function getUsername() {
return $this->exists()?$this->info['Username']:'';
}
+ function isOverQuota() {
+ return $this->exists()?($this->info['bOverQuota']>0?true:false):'';
+ }
function getBytes() {
if($this->exists()) {
$arr['nBytes'] = $this->info['nBytes'];
mysql_escape_string($this->getUserId()));
// $r = fetchRows(DBSelect($sql),'DatabaseId');
$r = fetchRows(DBSelect($sql),'Name');
+ ksort($r);
return $r;
}
}
if (isPost()) {
if (isset($i_newdb)) {
$dbname = $User->getUsername().DELIMETER.$i_newdb;
- if ($User->addDB($dbname)==false) {
+ if ($User->isOverQuota()) {
+ $err[] = 'You are over your quota. You may not add databases.';
+ } elseif ($User->addDB($dbname)==false) {
$err[] = mysql_error();
} else {
- $User->refresh();
$msg[] = 'Database `'.$dbname.'` created.';
}
}
$err[] = mysql_error();
}
}
- if (!count($err))
- $User->refresh();
}
+ if (!count($err))
+ $User->refresh();
}
$myDBs = $User->getDBList();
defined('ADMINDB') || define('ADMINDB', 'mitsql');
$BASE_PATH = dirname(__FILE__).'/';
-$BASE_URL = BASE_URL;
+$BASE_URL = 'http://'.$_SERVER['SERVER_NAME'].BASE_URL;
//$BASE_URL = isset($_SERVER['SCRIPT_NAME'])?dirname($_SERVER['SCRIPT_NAME']).'/':'';
set_time_limit(0);
return $owners;
}
-function checkQuotas() {
- $databases = fetchRows(DBSelect('SELECT DatabaseId,Name FROM DB WHERE bEnabled=1'),'Name');
- foreach($databases as $db) {
- $DBId = $db['DatabaseId'];
- $arr['dLastCheck'] = 'NOW()';
- $arr['nBytes'] = calcDBSize($db['Name']);
- $sql = sprintf("UPDATE DB %s WHERE DatabaseId = '%s'",
- buildSQLSet($arr),
- mysql_escape_string($DBId));
- DBUpdate($sql);
- }
-}
-
/*
$g = getManagedDBs();
print_r($g);
<head>\r
<title>MIT SQL Services for Athena</title>\r
<link rel=stylesheet href="<?=$BASE_URL?>mitsql.css" type="text/css">\r
+ <base href="<?=$BASE_URL?>">\r
</head>\r
\r
<body>\r
<div id="body">\r
-<div id="content0"><span id="sitename">MIT SQL Services</span><span id="contact"><a href="contact">Contact/Help</a></span></div>\r
+<div id="content0"><span id="sitename">MIT SQL Services</span><span id="contact"><a href="do/contact">Contact/Help</a></span></div>\r
<?php include 'menu.php'; ?>\r
<div id="content2">\r
$total = $bytes['nBytesHard'];
foreach($myDBs as $db) {
echo '<tr><td width="100%">';
- $usage += $db['nBytes'];
if ($total>0)
$percentage = $db['nBytes']/$total;
else $percentage = 0;
- echo printBar($percentage, $db['Name'], sprintSize($db['nBytes']));
+ echo printBar($percentage, $db['Name'], str_replace(' ', ' ', sprintSize($db['nBytes'])));
echo '</td><td>';
echo '<input type="submit" name="dropask[',$db['Name'],']" value="drop">';
echo '</td></tr>';
}
- if ($total>0)
+ if ($total>0) {
$percentage = $usage/$total;
- else
+ } else {
$percentage = 0;
- echo printBar($percentage, '<b>TOTAL</b>', sprintSize($usage).' / '.sprintSize($total));
+ }
+ echo '<tr><td colspan=2>';
+ echo '<hr />';
+ echo '</td></tr>';
+ echo '<tr><td colspan=2>';
+ echo printBar($percentage, '<b>TOTAL USED</b>', str_replace(' ', ' ', sprintSize($usage).' of '.sprintSize($total)));
+ echo '</td></tr>';
?>
</form>
</table>
<div id="content1">
<?php if (isLoggedIn()): ?>
<div style="float:left">
-<a href="main">Main</a> |
-<a href="logout">Logout</a>
+<a href="do/main">Main</a> |
+<a href="do/main?refresh">Refresh</a> |
+<?php if (isAdmin()) { ?>
+<a href="do/admin/main">Admin</a> |
+<?php } ?>
+<a href="do/logout">Logout</a>
</div>
<?php
$loggedInText = $Login->getUsername();
if (isImpersonating()) {
- $loggedInText = '<a href="admin/main?impersonate">'.$loggedInText.'</a>';
+ $loggedInText = '<a href="do/admin/main?impersonate">'.$loggedInText.'</a>';
}
?>
Logged in as <em><?=$loggedInText?></em> on <?=DBHOST?>
<?php else: ?>
<div style="float:left">
-<a href="index">Home</a> |
-<?php if (isAdmin()) { ?>
-<a href="admin/main">Admin</a> |
-<?php } ?>
-<a href="signup">Signup</a> |
-Login via <a href="login?ssl=0">SQL</a> or <a href="login?ssl=1">SSL</a>
+<a href="do/index">Home</a> |
+<a href="do/signup">Signup</a> |
+Login via <a href="do/login?ssl=0">SQL</a> or <a href="do/login?ssl=1">SSL</a>
</div>
<?php endif; ?>
</div>