Remove the complexity of a interface driven user management module

This commit is contained in:
Tim Almdal
2008-11-10 21:29:30 +00:00
parent 0a8d5edbdc
commit 7bcf7efc09
6 changed files with 68 additions and 451 deletions
+66 -5
View File
@@ -22,13 +22,74 @@ class user_installer {
public static function install() {
Kohana::log("debug", "user_installer::install");
$user = User::instance();
$user->install();
$db = Database::instance();
try {
$base_version = ORM::factory("module")->where("name", "user")->find()->version;
} catch (Exception $e) {
if ($e->getCode() == E_DATABASE_ERROR) {
$base_version = 0;
} else {
Kohana::log("error", $e);
throw $e;
}
}
Kohana::log("debug", "base_version: $base_version");
if ($base_version == 0) {
$db->query("CREATE TABLE IF NOT EXISTS `users` (
`id` int(9) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`display_name` char(255) NOT NULL,
`password` varchar(128) NOT NULL,
`email` varchar(255) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY(`display_name`))
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
$db->query("CREATE TABLE IF NOT EXISTS`groups` (
`id` int(9) NOT NULL auto_increment,
`name` char(255) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY(`name`))
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
$db->query("CREATE TABLE IF NOT EXISTS `groups_users` (
`group_id` int(9) NOT NULL,
`user_id` int(9) NOT NULL,
PRIMARY KEY (`group_id`, `user_id`),
UNIQUE KEY(`user_id`, `group_id`))
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
$user_module = ORM::factory("module")->where("name", "user")->find();
$user_module->name = "user";
$user_module->version = 1;
$user_module->save();
$user = ORM::factory("user")->where("display_name", "admin")->find();
$user->name = "admin";
$user->display_name = "Gallery Administrator";
// @todo create a helper function to encrypt the password.
$user->password = "admin";
$user->save();
$id = $user->id;
$db->query("UPDATE `items` SET `owner_id` = $id WHERE `owner_id` IS NULL");
foreach (array("administrator", "registered") as $group_name) {
$group = ORM::factory("group")->where("name", $group_name)->find();
$group->name = $group_name;
$group->save();
if (!$group->add($user)) {
throw new Exception("@todo {$user->name} WAS_NOT_ADDED_TO {$group_name}");
}
}
}
}
public static function uninstall() {
Kohana::log("debug", "user_installer::install");
$user = User::instance();
$user->uninstall();
$db = Database::instance();
$db->query("DROP TABLE IF EXISTS `users`;");
$db->query("DROP TABLE IF EXISTS `groups`;");
$db->query("DROP TABLE IF EXISTS `groups_users`;");
ORM::factory("module")->where("name", "user")->find()->delete();
}
}