summaryrefslogtreecommitdiff
path: root/modules/user/helpers/user_installer.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/user/helpers/user_installer.php')
-rw-r--r--modules/user/helpers/user_installer.php71
1 files changed, 66 insertions, 5 deletions
diff --git a/modules/user/helpers/user_installer.php b/modules/user/helpers/user_installer.php
index 31865ad1..bb6f1ceb 100644
--- a/modules/user/helpers/user_installer.php
+++ b/modules/user/helpers/user_installer.php
@@ -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();
}
} \ No newline at end of file