From 73d8940cfa79fb01b496df8a27b3ac8fc35b499d Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Fri, 31 Jul 2009 08:16:44 +1200 Subject: [PATCH] Now ties into the various edit/add User dialogs. --- .../controllers/admin_user_homes.php | 70 -------- .../user_homes/helpers/user_homes_event.php | 159 +++++++++++++++++- .../helpers/user_homes_installer.php | 13 +- .../user_homes/helpers/user_homes_menu.php | 15 -- modules/user_homes/models/user_home.php | 5 + .../views/admin_user_homes.html.php | 47 ------ modules/user_homes/views/album_list.html.php | 3 - 7 files changed, 167 insertions(+), 145 deletions(-) delete mode 100644 modules/user_homes/controllers/admin_user_homes.php delete mode 100644 modules/user_homes/helpers/user_homes_menu.php create mode 100644 modules/user_homes/models/user_home.php delete mode 100644 modules/user_homes/views/admin_user_homes.html.php delete mode 100644 modules/user_homes/views/album_list.html.php diff --git a/modules/user_homes/controllers/admin_user_homes.php b/modules/user_homes/controllers/admin_user_homes.php deleted file mode 100644 index 504693ad..00000000 --- a/modules/user_homes/controllers/admin_user_homes.php +++ /dev/null @@ -1,70 +0,0 @@ -content = new View("admin_user_homes.html"); - $view->content->users = ORM::factory("user")->orderby("name")->find_all(); - $root = ORM::factory("item", 1); - $view->content->album_tree = $this->tree($root, ""); - - print $view; - } - - /** - * recursive function to build drop down list of all galleries - */ - function tree($parent, $dashes) - { - - $albums = ORM::factory("item") - ->where(array("parent_id" => $parent->id, "type" => "album")) - ->orderby(array("title" => "ASC")) - ->find_all(); - - - $view = new View("album_list.html"); - $view->id = $parent->id; - if ($parent->id == "1") - { - $view->name = "root"; - } - else - { - $view->name = "$dashes $parent->name"; - } - - $view->children = ""; - foreach ($albums as $album) - { - $view->children .= $this->tree($album, "-$dashes"); - } - return $view->__toString(); - } - - /** - * Method called when the user home is changed - */ - public function change_home($user_id, $home) - { - $user = ORM::factory("user", $user_id); - if ($user->loaded) - { - if ($home==0) - { - $user->home = null; - } - else - { - $user->home = $home; - } - $user->save(); - } - } - -} diff --git a/modules/user_homes/helpers/user_homes_event.php b/modules/user_homes/helpers/user_homes_event.php index a3622547..7636079a 100644 --- a/modules/user_homes/helpers/user_homes_event.php +++ b/modules/user_homes/helpers/user_homes_event.php @@ -8,12 +8,16 @@ class user_homes_event_Core * is refreshed after logging in the direction can occur. */ static function user_login($user) - { - if ($user->home) - { - - $session = Session::instance(); - $session->set("redirect_home",$user->home); + { + $home = ORM::factory("user_home") + ->where("id", $user->id)->find(); + if ($home) + { + if ($home->home!=0) + { + $session = Session::instance(); + $session->set("redirect_home",$home->home); + } } } @@ -37,4 +41,147 @@ class user_homes_event_Core } } + + /** + * called just before a user is deleted. This will remove the user from + * the user_homes directory. + */ + static function user_before_delete($user) + { + ORM::factory("user_home") + ->where("id", $user->id) + ->delete_all(); + } + + /** + * called when admin is adding a user + */ + static function user_add_form_admin($user, $form) + { + $form->add_user->dropdown("user_home") + ->label(t("Home Gallery")) + ->options(self::createGalleryArray()) + ->selected(0); + } + + /** + * called after a user has been added + */ + static function user_add_form_admin_completed($user, $form) + { + $home = ORM::factory("user_home") + ->where("id", $user->id)->find(); + $home->id=$user->id; + $home->home=$form->add_user->user_home->value; + $home->save(); + } + + /** + * called when admin is editing a user + */ + static function user_edit_form_admin($user, $form) + { + $home = ORM::factory("user_home") + ->where("id", $user->id)->find(); + + if ($home) + { + $selected = $home->home; + } + else + { + $selected = 0; + } + $form->edit_user->dropdown("user_home") + ->label(t("Home Gallery")) + ->options(self::createGalleryArray()) + ->selected($selected); + } + /** + * called after a user had been edited by the admin + */ + static function user_edit_form_admin_completed($user, $form) + { + $home = ORM::factory("user_home") + ->where("id", $user->id)->find(); + $home->id=$user->id; + $home->home=$form->edit_user->user_home->value; + $home->save(); + + } + + + /** + * called when user is editing their own form + */ + static function user_edit_form($user, $form) + { + $home = ORM::factory("user_home") + ->where("id", $user->id)->find(); + + if ($home) + { + $selected = $home->home; + } + else + { + $selected = 0; + } + $form->edit_user->dropdown("user_home") + ->label(t("Home Gallery")) + ->options(self::createGalleryArray()) + ->selected($selected); + } + + /** + * called after a user had been edited by the user + */ + static function user_edit_form_completed($user, $form) + { + $home = ORM::factory("user_home") + ->where("id", $user->id)->find(); + $home->id=$user->id; + $home->home=$form->edit_user->user_home->value; + $home->save(); + + } + + /** + * creates an array of galleries + */ + static function createGalleryArray() + { + $array[0] = "none"; + $root = ORM::factory("item", 1); + self::tree($root, "", $array); + + return $array; + } + + /** + * recursive function to build array for drop down list + */ + static function tree($parent, $dashes, &$array) + { + if ($parent->id == "1") + { + $array[$parent->id] = "home"; + } + else + { + $array[$parent->id] = "$dashes $parent->name"; + } + + $albums = ORM::factory("item") + ->where(array("parent_id" => $parent->id, "type" => "album")) + ->orderby(array("title" => "ASC")) + ->find_all(); + foreach ($albums as $album) + { + self::tree($album, "-$dashes", $array); + } + return; + } + + } diff --git a/modules/user_homes/helpers/user_homes_installer.php b/modules/user_homes/helpers/user_homes_installer.php index 5eace1ef..ff464736 100644 --- a/modules/user_homes/helpers/user_homes_installer.php +++ b/modules/user_homes/helpers/user_homes_installer.php @@ -8,23 +8,28 @@ class user_homes_installer } /** - * installs the extra collumn on the users table when the + * installs the the table of user homes when the * module is installed */ static function activate() { $db = Database::instance(); - $db->query("ALTER TABLE {users} ADD home int(9) default NULL;"); + $db->query("CREATE TABLE IF NOT EXISTS {user_homes} ( + `id` int(9) NOT NULL, + `home` int(9) default NULL, + PRIMARY KEY (`id`), + UNIQUE KEY(`id`)) + ENGINE=InnoDB DEFAULT CHARSET=utf8;"); } /** - * uninstalls the extra collumn on the users table when the + * drops the table of user homes when the * module is uninstalled */ static function deactivate() { $db = Database::instance(); - $db->query("ALTER TABLE {users} DROP COLUMN home;"); + $db->query("DROP TABLE IF EXISTS {user_homes};"); } } diff --git a/modules/user_homes/helpers/user_homes_menu.php b/modules/user_homes/helpers/user_homes_menu.php deleted file mode 100644 index dc2df7f9..00000000 --- a/modules/user_homes/helpers/user_homes_menu.php +++ /dev/null @@ -1,15 +0,0 @@ -add_after("users_groups", - Menu::factory("link") - ->id("user_homes") - ->label(t("User Homes")) - ->url(url::site("admin/user_homes"))); - } -} diff --git a/modules/user_homes/models/user_home.php b/modules/user_homes/models/user_home.php new file mode 100644 index 00000000..83cef0df --- /dev/null +++ b/modules/user_homes/models/user_home.php @@ -0,0 +1,5 @@ + -
-

- -

- -
- - - - - - - $user): ?> - admin ? "admin" : "" ?>"> - - - - - -
- name) ?> - - full_name) ?> - - - -
-
-
diff --git a/modules/user_homes/views/album_list.html.php b/modules/user_homes/views/album_list.html.php deleted file mode 100644 index e1a27e4f..00000000 --- a/modules/user_homes/views/album_list.html.php +++ /dev/null @@ -1,3 +0,0 @@ - - -