summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2008-11-26 04:13:57 +0000
committerBharat Mediratta <bharat@menalto.com>2008-11-26 04:13:57 +0000
commit5ccb050413c15b4c16a20b2806886759332a90a7 (patch)
tree75928903df082c8a43b51e42c384f7dc39ca16c8
parent242b3a1403aec688f82024adfa0ca20b25981a60 (diff)
group::create() and group::delete() now manage the view_## columns in
the items table. Convert installer over to using new creation API.
-rw-r--r--modules/user/helpers/group.php12
-rw-r--r--modules/user/helpers/user_installer.php36
2 files changed, 20 insertions, 28 deletions
diff --git a/modules/user/helpers/group.php b/modules/user/helpers/group.php
index 95daa767..84272b79 100644
--- a/modules/user/helpers/group.php
+++ b/modules/user/helpers/group.php
@@ -38,6 +38,10 @@ class group_Core {
$group->name = $name;
$group->save();
+
+ // Create the view column for this group in the items table.
+ Database::instance()->query("ALTER TABLE `items` ADD `view_{$group->id}` BOOLEAN DEFAULT 0");
+
return $group;
}
@@ -47,6 +51,12 @@ class group_Core {
* @param string $name the group name
*/
static function delete($name) {
- ORM::factory("group")->where("name", $name)->find()->delete();
+ $group = ORM::factory("group")->where("name", $name)->find();
+
+ if ($group->loaded) {
+ // Drop the view column for this group in the items table.
+ Database::instance()->query("ALTER TABLE `items` DROP `view_{$group->id}`");
+ $group->delete();
+ }
}
} \ No newline at end of file
diff --git a/modules/user/helpers/user_installer.php b/modules/user/helpers/user_installer.php
index 1ba2e866..d3976e80 100644
--- a/modules/user/helpers/user_installer.php
+++ b/modules/user/helpers/user_installer.php
@@ -39,7 +39,7 @@ class user_installer {
UNIQUE KEY(`display_name`))
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
- $db->query("CREATE TABLE IF NOT EXISTS`groups` (
+ $db->query("CREATE TABLE IF NOT EXISTS `groups` (
`id` int(9) NOT NULL auto_increment,
`name` char(255) default NULL,
PRIMARY KEY (`id`),
@@ -55,34 +55,16 @@ class user_installer {
module::set_version("user", 1);
- $user = ORM::factory("user")->where("name", "admin")->find();
- $user->name = "admin";
- $user->display_name = "Gallery Administrator";
- $user->password = "admin";
- $user->save();
- $id = $user->id;
+ // @todo: get this info from the installer
+ $admin = user::create("admin", "Gallery Administrator", "admin");
+ $user = user::create("joe", "Joe User", "joe");
- $db->query("UPDATE `items` SET `owner_id` = $id WHERE `owner_id` IS NULL");
+ $registered = group::create("Registered Users");
+ $registered->add($admin);
+ $registered->add($user);
- 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}");
- }
- }
-
- // @todo: get this name from the installer.
- $user = ORM::factory("user")->where("name", "joe")->find();
- $user->name = "joe";
- $user->display_name = "Registered User";
- $user->password = "joe";
- $user->save();
- $group = ORM::factory("group")->where("name", "registered")->find();
- if (!$group->add($user)) {
- throw new Exception("@todo {$user->name} WAS_NOT_ADDED_TO {$group_name}");
- }
+ // Let the admin own everything
+ $db->query("UPDATE `items` SET `owner_id` = {$admin->id} WHERE `owner_id` IS NULL");
}
}