mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-08-15 11:27:24 -04:00
Remove the complexity of a interface driven user management module
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user