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 @@ + + +