From ba99a5a96ddc26bdb981bf459d515878cdb2ff66 Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Sat, 25 Jul 2009 11:11:02 +1200 Subject: [PATCH 1/2] Initial Commit. --- .../controllers/admin_user_homes.php | 70 +++++++++++++++++++ .../user_homes/helpers/user_homes_event.php | 40 +++++++++++ .../helpers/user_homes_installer.php | 30 ++++++++ .../user_homes/helpers/user_homes_menu.php | 15 ++++ modules/user_homes/module.info | 3 + .../views/admin_user_homes.html.php | 47 +++++++++++++ modules/user_homes/views/album_list.html.php | 3 + 7 files changed, 208 insertions(+) create mode 100644 modules/user_homes/controllers/admin_user_homes.php create mode 100644 modules/user_homes/helpers/user_homes_event.php create mode 100644 modules/user_homes/helpers/user_homes_installer.php create mode 100644 modules/user_homes/helpers/user_homes_menu.php create mode 100644 modules/user_homes/module.info create mode 100644 modules/user_homes/views/admin_user_homes.html.php create 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 new file mode 100644 index 00000000..504693ad --- /dev/null +++ b/modules/user_homes/controllers/admin_user_homes.php @@ -0,0 +1,70 @@ +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 new file mode 100644 index 00000000..a3622547 --- /dev/null +++ b/modules/user_homes/helpers/user_homes_event.php @@ -0,0 +1,40 @@ +home) + { + + $session = Session::instance(); + $session->set("redirect_home",$user->home); + } + + } + + /** + * called after a log in occurs and when the first gallery is loaded. + * if the home variable exists on the session then a redirect will + * occur to that home and the variable removed from the session to + */ + static function gallery_ready() + { + + $session = Session::instance(); + $home = $session->get("redirect_home"); + if ($home) + { + // remove from session to ensure redirect does not + // occur again + $session->set("redirect_home",null); + url::redirect("albums/$home"); + } + + } +} diff --git a/modules/user_homes/helpers/user_homes_installer.php b/modules/user_homes/helpers/user_homes_installer.php new file mode 100644 index 00000000..5eace1ef --- /dev/null +++ b/modules/user_homes/helpers/user_homes_installer.php @@ -0,0 +1,30 @@ +query("ALTER TABLE {users} ADD home int(9) default NULL;"); + } + + /** + * uninstalls the extra collumn on the users table when the + * module is uninstalled + */ + static function deactivate() + { + $db = Database::instance(); + $db->query("ALTER TABLE {users} DROP COLUMN home;"); + } +} diff --git a/modules/user_homes/helpers/user_homes_menu.php b/modules/user_homes/helpers/user_homes_menu.php new file mode 100644 index 00000000..dc2df7f9 --- /dev/null +++ b/modules/user_homes/helpers/user_homes_menu.php @@ -0,0 +1,15 @@ +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/module.info b/modules/user_homes/module.info new file mode 100644 index 00000000..eecff6c9 --- /dev/null +++ b/modules/user_homes/module.info @@ -0,0 +1,3 @@ +name = "User Homes" +description = "Allows users to have home galleries that they are redirected to when logged in." +version = 1 diff --git a/modules/user_homes/views/admin_user_homes.html.php b/modules/user_homes/views/admin_user_homes.html.php new file mode 100644 index 00000000..1f6c9cf3 --- /dev/null +++ b/modules/user_homes/views/admin_user_homes.html.php @@ -0,0 +1,47 @@ + +
+

+ +

+ +
+ + + + + + + $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 new file mode 100644 index 00000000..e1a27e4f --- /dev/null +++ b/modules/user_homes/views/album_list.html.php @@ -0,0 +1,3 @@ + + + From 73d8940cfa79fb01b496df8a27b3ac8fc35b499d Mon Sep 17 00:00:00 2001 From: Ben Smith Date: Fri, 31 Jul 2009 08:16:44 +1200 Subject: [PATCH 2/2] 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 @@ - - -