Non-dynamic profile fetching in User and User_group

This commit is contained in:
Mikael Nordfeldth 2014-06-06 00:19:54 +02:00
parent 1217cd59bf
commit c786892103
2 changed files with 23 additions and 15 deletions

View File

@ -113,7 +113,7 @@ class User extends Managed_DataObject
); );
} }
protected $_profile = null; protected $_profile = array();
/** /**
* @return Profile * @return Profile
@ -122,14 +122,18 @@ class User extends Managed_DataObject
*/ */
public function getProfile() public function getProfile()
{ {
if (!($this->_profile instanceof Profile)) { if (!isset($this->_profile[$this->id])) {
$this->_profile = Profile::getKV('id', $this->id); $this->_setProfile(Profile::getKV('id', $this->id));
if (!($this->_profile instanceof Profile)) {
throw new UserNoProfileException($this);
}
} }
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() public function getUri()

View File

@ -74,23 +74,27 @@ class User_group extends Managed_DataObject
); );
} }
protected $_profile = null; protected $_profile = array();
/** /**
* @return Profile * @return Profile
* *
* @throws UserNoProfileException if user has no profile * @throws GroupNoProfileException if user has no profile
*/ */
public function getProfile() public function getProfile()
{ {
if (!($this->_profile instanceof Profile)) { if (!isset($this->_profile[$this->profile_id])) {
$this->_profile = Profile::getKV('id', $this->profile_id); $this->_setProfile(Profile::getKV('id', $this->profile_id));
if (!($this->_profile instanceof Profile)) {
throw new GroupNoProfileException($this);
}
} }
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) public static function defaultLogo($size)