var $u, $p;
var $info;
function Login($u, $p=null) {
+ if (empty($u)) return;
$this->u = $u;
$this->p = $p;
- $opt = is_null($p)?'':sprintf(" AND Password='%s' ", mysql_escape_string(base64_encode($p)));
+ $opt = sprintf(" Username = '%s'", mysql_escape_string($u));
+ $opt .= (is_null($p)?'':sprintf(" AND Password='%s'", mysql_escape_string(base64_encode($p))));
+ is_numeric($u) && $opt = sprintf(" UserId = '%s'", mysql_escape_string($u));
$sql = sprintf("SELECT UserId, Username, Name, Email, UL, bEnabled
FROM User
- WHERE Username = '%s'
- $opt",
- mysql_escape_string($u));
+ WHERE %s", $opt);
$r = fetchRows(DBSelect($sql),'UserId');
$this->info = count($r)?array_shift($r):$r;
}
if (!empty($upd) && $upd != 'SET')
DBUpdate($sql);
if (isset($arr['Name']))
- $this->name = $arr['Name'];
+ $this->info['Name'] = $arr['Name'];
if (isset($arr['Email']))
- $this->email = $arr['Email'];
+ $this->info['Email'] = $arr['Email'];
}
}
class User {
var $userId;
var $info;
- var $pass;
var $dblist;
function User($userId) {
$this->userId = $userId;
mysql_escape_string($userId));
$r = fetchRows(DBSelect($sql),'UserId');
$this->info = count($r)?array_shift($r):$r;
- $this->pass = base64_decode($this->info['Password']);
+ $this->dblist = $this->getDBList();
+// $this->pass = base64_decode($this->info['Password']);
}
function exists() {
return count($this->info);
$sql = sprintf("UPDATE User %s WHERE UserId = '%s'",
buildSQLSet($arr), mysql_escape_string($this->getUserId()));
DBUpdate($sql);
+ $sql = sprintf('SET PASSWORD FOR \'%s\'@\'%%\'=PASSWORD(\'%s\')',
+ mysql_escape_string($this->getUsername()),
+ mysql_escape_string($pwd));
+ DBSet($sql);
}
function signup($pwd) {
$this->pass = $pwd;
mysql_escape_string($verb),
mysql_escape_string($name),
mysql_escape_string($prep),
- $this->getUsername,
+ mysql_escape_string($this->getUsername()),
'%');
DBGrant($sql);
}
$sql = sprintf("SELECT *
FROM DBOwner
INNER JOIN DB ON DB.DatabaseId = DBOwner.DatabaseId
- INNER JOIN DBQuota ON DBQuota.DatabaseId = DBOwner.DatabaseId
- WHERE UserId = '%s'",
+ LEFT JOIN DBQuota ON DBQuota.DatabaseId = DBOwner.DatabaseId
+ WHERE UserId = '%s' AND DB.bEnabled=1",
mysql_escape_string($this->getUserId()));
$r = fetchRows(DBSelect($sql),'DatabaseId');
return $r;
}
+ function addDB($name) {
+ if (!addDB($name, $this->getUserId())) return false;
+ $this->setAccess($name);
+ return true;
+ }
}
return $UserId;
}
-?>
+function addDB($dbname,$userid) {
+ global $_NEW_DB, $_NEW_DBQUOTA, $_NEW_DBOWNER;
+
+ DBCreate(sprintf('CREATE DATABASE `%s`', mysql_escape_string($dbname)));
+ if (mysql_error()) return false;
+
+ $newdb['Name'] = $dbname;
+ $arr = array_merge($newdb, $_NEW_DB);
+ $arr['bEnabled'] = 1;
+ $sql = sprintf("INSERT INTO DB %s",
+ buildSQLInsert($arr));
+ $DBId = DBInsert($sql);
+
+ $arr = $_NEW_DBQUOTA;
+ $arr['DatabaseId'] = $DBId;
+ $sql = sprintf("INSERT INTO DBQuota %s",
+ buildSQLInsert($arr));
+ DBInsert($sql);
+
+ $arr = $_NEW_DBOWNER;
+ $arr['DatabaseId'] = $DBId;
+ $arr['UserId'] = $userid;
+ $sql = sprintf("INSERT INTO DBOwner %s",
+ buildSQLInsert($arr));
+ DBInsert($sql);
+
+ return $DBId;
+}
+
+?>
\ No newline at end of file
--- MySQL dump 10.9\r
---\r
--- Host: localhost Database: mitsql\r
--- ------------------------------------------------------\r
--- Server version 4.1.12-nt\r
-\r
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\r
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\r
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\r
-/*!40101 SET NAMES utf8 */;\r
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\r
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\r
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\r
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\r
-\r
---\r
--- Table structure for table `db`\r
---\r
-\r
-DROP TABLE IF EXISTS `db`;\r
-CREATE TABLE `db` (\r
- `DatabaseId` int(10) unsigned NOT NULL auto_increment,\r
- `Name` varchar(200) NOT NULL default '',\r
- `nBytes` int(10) unsigned NOT NULL default '0',\r
- `dLastCheck` datetime NOT NULL default '0000-00-00 00:00:00',\r
- `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',\r
- `bEnabled` tinyint(3) unsigned NOT NULL default '1',\r
- PRIMARY KEY (`DatabaseId`)\r
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r
-\r
---\r
--- Table structure for table `dbowner`\r
---\r
-\r
-DROP TABLE IF EXISTS `dbowner`;\r
-CREATE TABLE `dbowner` (\r
- `DatabaseId` int(10) unsigned NOT NULL default '0',\r
- `UserId` int(10) unsigned NOT NULL default '0',\r
- `GroupId` int(10) unsigned NOT NULL default '0',\r
- KEY `DatabaseId` (`DatabaseId`),\r
- KEY `UserId` (`UserId`),\r
- KEY `GroupId` (`GroupId`)\r
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r
-\r
---\r
--- Table structure for table `dbquota`\r
---\r
-\r
-DROP TABLE IF EXISTS `dbquota`;\r
-CREATE TABLE `dbquota` (\r
- `DatabaseId` int(10) unsigned NOT NULL default '0',\r
- `nBytesSoft` int(10) unsigned NOT NULL default '0',\r
- `nBytesHard` int(10) unsigned NOT NULL default '0',\r
- `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',\r
- PRIMARY KEY (`DatabaseId`)\r
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r
-\r
---\r
--- Table structure for table `group`\r
---\r
-\r
-DROP TABLE IF EXISTS `group`;\r
-CREATE TABLE `group` (\r
- `GroupId` int(10) unsigned NOT NULL auto_increment,\r
- `Username` varchar(200) NOT NULL default '',\r
- `Password` varchar(200) NOT NULL default '',\r
- `Name` text NOT NULL,\r
- `Email` text NOT NULL,\r
- `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',\r
- `bEnabled` tinyint(3) unsigned NOT NULL default '1',\r
- PRIMARY KEY (`GroupId`)\r
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r
-\r
---\r
--- Table structure for table `groupquota`\r
---\r
-\r
-DROP TABLE IF EXISTS `groupquota`;\r
-CREATE TABLE `groupquota` (\r
- `GroupId` int(10) unsigned NOT NULL default '0',\r
- `nDatabases` int(10) unsigned NOT NULL default '0',\r
- `nBytesSoft` int(10) unsigned NOT NULL default '0',\r
- `nBytesHard` int(10) unsigned NOT NULL default '0',\r
- `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',\r
- PRIMARY KEY (`GroupId`)\r
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r
-\r
---\r
--- Table structure for table `groupstat`\r
---\r
-\r
-DROP TABLE IF EXISTS `groupstat`;\r
-CREATE TABLE `groupstat` (\r
- `GroupId` int(10) unsigned NOT NULL default '0',\r
- `nDatabases` int(10) unsigned NOT NULL default '0',\r
- `nBytes` int(10) unsigned NOT NULL default '0',\r
- `dLastCheck` datetime NOT NULL default '0000-00-00 00:00:00',\r
- PRIMARY KEY (`GroupId`)\r
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r
-\r
---\r
--- Table structure for table `user`\r
---\r
-\r
-DROP TABLE IF EXISTS `user`;\r
-CREATE TABLE `user` (\r
- `UserId` int(10) unsigned NOT NULL auto_increment,\r
- `Username` varchar(200) NOT NULL default '',\r
- `Password` varchar(200) NOT NULL default '',\r
- `Name` text NOT NULL,\r
- `Email` text NOT NULL,\r
- `UL` tinyint(3) unsigned NOT NULL default '1',\r
- `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',\r
- `dSignup` datetime NOT NULL default '0000-00-00 00:00:00',\r
- `bEnabled` tinyint(3) unsigned NOT NULL default '0',\r
- PRIMARY KEY (`UserId`)\r
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r
-\r
---\r
--- Table structure for table `usergroup`\r
---\r
-\r
-DROP TABLE IF EXISTS `usergroup`;\r
-CREATE TABLE `usergroup` (\r
- `UserId` int(10) unsigned NOT NULL default '0',\r
- `GroupId` int(10) unsigned NOT NULL default '0',\r
- KEY `UserId` (`UserId`),\r
- KEY `GroupId` (`GroupId`)\r
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r
-\r
---\r
--- Table structure for table `userquota`\r
---\r
-\r
-DROP TABLE IF EXISTS `userquota`;\r
-CREATE TABLE `userquota` (\r
- `UserId` int(10) unsigned NOT NULL default '0',\r
- `nDatabases` int(10) unsigned NOT NULL default '0',\r
- `nBytesSoft` int(10) unsigned NOT NULL default '0',\r
- `nBytesHard` int(10) unsigned NOT NULL default '0',\r
- `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',\r
- PRIMARY KEY (`UserId`)\r
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r
-\r
---\r
--- Table structure for table `userstat`\r
---\r
-\r
-DROP TABLE IF EXISTS `userstat`;\r
-CREATE TABLE `userstat` (\r
- `UserId` int(10) unsigned NOT NULL default '0',\r
- `nDatabases` int(10) unsigned NOT NULL default '0',\r
- `nBytes` int(10) unsigned NOT NULL default '0',\r
- `dLastCheck` datetime NOT NULL default '0000-00-00 00:00:00',\r
- PRIMARY KEY (`UserId`)\r
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;\r
-\r
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\r
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;\r
-/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\r
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\r
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\r
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\r
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\r
-\r
+-- MySQL dump 10.9
+--
+-- Host: localhost Database: mitsql
+-- ------------------------------------------------------
+-- Server version 4.1.12-nt
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `DB`
+--
+
+DROP TABLE IF EXISTS `DB`;
+CREATE TABLE `DB` (
+ `DatabaseId` int(10) unsigned NOT NULL auto_increment,
+ `Name` varchar(200) NOT NULL default '',
+ `nBytes` int(10) unsigned NOT NULL default '0',
+ `dLastCheck` datetime NOT NULL default '0000-00-00 00:00:00',
+ `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',
+ `bEnabled` tinyint(3) unsigned NOT NULL default '1',
+ PRIMARY KEY (`DatabaseId`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DBOwner`
+--
+
+DROP TABLE IF EXISTS `DBOwner`;
+CREATE TABLE `DBOwner` (
+ `DatabaseId` int(10) unsigned NOT NULL default '0',
+ `UserId` int(10) unsigned NOT NULL default '0',
+ `GroupId` int(10) unsigned NOT NULL default '0',
+ KEY `DatabaseId` (`DatabaseId`),
+ KEY `UserId` (`UserId`),
+ KEY `GroupId` (`GroupId`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `DBQuota`
+--
+
+DROP TABLE IF EXISTS `DBQuota`;
+CREATE TABLE `DBQuota` (
+ `DatabaseId` int(10) unsigned NOT NULL default '0',
+ `nBytesSoft` int(10) unsigned NOT NULL default '0',
+ `nBytesHard` int(10) unsigned NOT NULL default '0',
+ `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',
+ PRIMARY KEY (`DatabaseId`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `Group`
+--
+
+DROP TABLE IF EXISTS `Group`;
+CREATE TABLE `Group` (
+ `GroupId` int(10) unsigned NOT NULL auto_increment,
+ `Username` varchar(200) NOT NULL default '',
+ `Password` varchar(200) NOT NULL default '',
+ `Name` text NOT NULL,
+ `Email` text NOT NULL,
+ `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',
+ `bEnabled` tinyint(3) unsigned NOT NULL default '1',
+ PRIMARY KEY (`GroupId`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GroupQuota`
+--
+
+DROP TABLE IF EXISTS `GroupQuota`;
+CREATE TABLE `GroupQuota` (
+ `GroupId` int(10) unsigned NOT NULL default '0',
+ `nDatabases` int(10) unsigned NOT NULL default '0',
+ `nBytesSoft` int(10) unsigned NOT NULL default '0',
+ `nBytesHard` int(10) unsigned NOT NULL default '0',
+ `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',
+ PRIMARY KEY (`GroupId`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `GroupStat`
+--
+
+DROP TABLE IF EXISTS `GroupStat`;
+CREATE TABLE `GroupStat` (
+ `GroupId` int(10) unsigned NOT NULL default '0',
+ `nDatabases` int(10) unsigned NOT NULL default '0',
+ `nBytes` int(10) unsigned NOT NULL default '0',
+ `dLastCheck` datetime NOT NULL default '0000-00-00 00:00:00',
+ PRIMARY KEY (`GroupId`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `User`
+--
+
+DROP TABLE IF EXISTS `User`;
+CREATE TABLE `User` (
+ `UserId` int(10) unsigned NOT NULL auto_increment,
+ `Username` varchar(200) NOT NULL default '',
+ `Password` varchar(200) NOT NULL default '',
+ `Name` text NOT NULL,
+ `Email` text NOT NULL,
+ `UL` tinyint(3) unsigned NOT NULL default '1',
+ `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',
+ `dSignup` datetime NOT NULL default '0000-00-00 00:00:00',
+ `bEnabled` tinyint(3) unsigned NOT NULL default '0',
+ PRIMARY KEY (`UserId`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `UserGroup`
+--
+
+DROP TABLE IF EXISTS `UserGroup`;
+CREATE TABLE `UserGroup` (
+ `UserId` int(10) unsigned NOT NULL default '0',
+ `GroupId` int(10) unsigned NOT NULL default '0',
+ KEY `UserId` (`UserId`),
+ KEY `GroupId` (`GroupId`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `UserQuota`
+--
+
+DROP TABLE IF EXISTS `UserQuota`;
+CREATE TABLE `UserQuota` (
+ `UserId` int(10) unsigned NOT NULL default '0',
+ `nDatabases` int(10) unsigned NOT NULL default '0',
+ `nBytesSoft` int(10) unsigned NOT NULL default '0',
+ `nBytesHard` int(10) unsigned NOT NULL default '0',
+ `dCreated` datetime NOT NULL default '0000-00-00 00:00:00',
+ PRIMARY KEY (`UserId`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+--
+-- Table structure for table `UserStat`
+--
+
+DROP TABLE IF EXISTS `UserStat`;
+CREATE TABLE `UserStat` (
+ `UserId` int(10) unsigned NOT NULL default '0',
+ `nDatabases` int(10) unsigned NOT NULL default '0',
+ `nBytes` int(10) unsigned NOT NULL default '0',
+ `dLastCheck` datetime NOT NULL default '0000-00-00 00:00:00',
+ PRIMARY KEY (`UserId`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+