From 130e26983aedac1e4bb9f26d6a82c629248075e8 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Wed, 17 Dec 2008 17:40:45 +0000 Subject: Add initialization to the user module to put the user and group_ids into the session, for easy access. This cuts down the number of queries when we're loading images through file_proxy.php --- modules/user/helpers/user.php | 38 ++++++++++++++++++++++++++++++++----- modules/user/helpers/user_event.php | 27 ++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 modules/user/helpers/user_event.php (limited to 'modules/user/helpers') diff --git a/modules/user/helpers/user.php b/modules/user/helpers/user.php index a04542d3..1667afd1 100644 --- a/modules/user/helpers/user.php +++ b/modules/user/helpers/user.php @@ -56,12 +56,39 @@ class user_Core { return $form; } + /** + * Make sure that we have a session and group_ids cached in the session. + */ + public static function load_user() { + $session = Session::instance(); + if (!($user = $session->get("user"))) { + $session->set("user", $user = user::guest()); + } + + if (!$session->get("group_ids")) { + $ids = array(); + foreach ($user->groups as $group) { + $ids[] = $group->id; + } + $session->set("group_ids", $ids); + } + } + + /** + * Return the array of group ids this user belongs to + * + * @return array + */ + public static function group_ids() { + return Session::instance()->get("group_ids", array(1)); + } + /** * Return the active user. If there's no active user, return the guest user. * * @return User_Model */ - static function active() { + public static function active() { return Session::instance()->get("user", self::guest()); } @@ -72,7 +99,7 @@ class user_Core { * * @return User_Model */ - static function guest() { + public static function guest() { return model_cache::get("user", 1); } @@ -81,8 +108,9 @@ class user_Core { * * @return User_Model */ - static function set_active($user) { - return Session::instance()->set("user", $user); + public static function set_active($user) { + Session::instance()->set("user", $user); + self::load_user(); } /** @@ -93,7 +121,7 @@ class user_Core { * @param string $password * @return User_Model */ - static function create($name, $display_name, $password) { + public static function create($name, $display_name, $password) { $user = ORM::factory("user")->where("name", $name)->find(); if ($user->loaded) { throw new Exception("@todo USER_ALREADY_EXISTS $name"); diff --git a/modules/user/helpers/user_event.php b/modules/user/helpers/user_event.php new file mode 100644 index 00000000..2d1ce171 --- /dev/null +++ b/modules/user/helpers/user_event.php @@ -0,0 +1,27 @@ +