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)