From c786892103913b12f9d6da43bc808862fab8ae4d Mon Sep 17 00:00:00 2001 From: Mikael Nordfeldth Date: Fri, 6 Jun 2014 00:19:54 +0200 Subject: [PATCH] Non-dynamic profile fetching in User and User_group --- classes/User.php | 18 +++++++++++------- classes/User_group.php | 20 ++++++++++++-------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/classes/User.php b/classes/User.php index 3e2873c75f..c23b0a0b0a 100644 --- a/classes/User.php +++ b/classes/User.php @@ -113,7 +113,7 @@ class User extends Managed_DataObject ); } - protected $_profile = null; + protected $_profile = array(); /** * @return Profile @@ -122,14 +122,18 @@ class User extends Managed_DataObject */ public function getProfile() { - if (!($this->_profile instanceof Profile)) { - $this->_profile = Profile::getKV('id', $this->id); - if (!($this->_profile instanceof Profile)) { - throw new UserNoProfileException($this); - } + if (!isset($this->_profile[$this->id])) { + $this->_setProfile(Profile::getKV('id', $this->id)); } + return $this->_profile[$this->id]; + } - return $this->_profile; + public function _setProfile(Profile $profile=null) + { + if (!$profile instanceof Profile) { + throw new UserNoProfileException($this); + } + $this->_profile[$this->id] = $profile; } public function getUri() diff --git a/classes/User_group.php b/classes/User_group.php index 762b446601..a9dfacd498 100644 --- a/classes/User_group.php +++ b/classes/User_group.php @@ -74,23 +74,27 @@ class User_group extends Managed_DataObject ); } - protected $_profile = null; + protected $_profile = array(); /** * @return Profile * - * @throws UserNoProfileException if user has no profile + * @throws GroupNoProfileException if user has no profile */ public function getProfile() { - if (!($this->_profile instanceof Profile)) { - $this->_profile = Profile::getKV('id', $this->profile_id); - if (!($this->_profile instanceof Profile)) { - throw new GroupNoProfileException($this); - } + if (!isset($this->_profile[$this->profile_id])) { + $this->_setProfile(Profile::getKV('id', $this->profile_id)); } + return $this->_profile[$this->profile_id]; + } - return $this->_profile; + public function _setProfile(Profile $profile=null) + { + if (!$profile instanceof Profile) { + throw new GroupNoProfileException($this); + } + $this->_profile[$this->profile_id] = $profile; } public static function defaultLogo($size) -- 2.39.5