store oft-requested stuff in the data object

This commit is contained in:
Evan Prodromou 2011-04-07 16:55:32 -04:00
parent 3e4016b388
commit adf4d96013
3 changed files with 26 additions and 11 deletions

View File

@ -96,17 +96,21 @@ class Notice extends Memcached_DataObject
const GROUP_SCOPE = 4; const GROUP_SCOPE = 4;
const FOLLOWER_SCOPE = 8; const FOLLOWER_SCOPE = 8;
protected $_profile = -1;
function getProfile() function getProfile()
{ {
$profile = Profile::staticGet('id', $this->profile_id); if ($this->_profile == -1) {
$this->_profile = Profile::staticGet('id', $this->profile_id);
if (empty($profile)) { if (empty($this->_profile)) {
// TRANS: Server exception thrown when a user profile for a notice cannot be found. // TRANS: Server exception thrown when a user profile for a notice cannot be found.
// TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number). // TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
throw new ServerException(sprintf(_('No such profile (%1$d) for notice (%2$d).'), $this->profile_id, $this->id)); throw new ServerException(sprintf(_('No such profile (%1$d) for notice (%2$d).'), $this->profile_id, $this->id));
}
} }
return $profile; return $this->_profile;
} }
function delete() function delete()

View File

@ -52,9 +52,15 @@ class Profile extends Memcached_DataObject
/* the code above is auto generated do not remove the tag below */ /* the code above is auto generated do not remove the tag below */
###END_AUTOCODE ###END_AUTOCODE
protected $_user = -1; // Uninitialized value distinct from null
function getUser() function getUser()
{ {
return User::staticGet('id', $this->id); if ($this->_user == -1) {
$this->_user = User::staticGet('id', $this->id);
}
return $this->_user;
} }
function getAvatar($width, $height=null) function getAvatar($width, $height=null)

View File

@ -73,16 +73,21 @@ class User extends Memcached_DataObject
/* the code above is auto generated do not remove the tag below */ /* the code above is auto generated do not remove the tag below */
###END_AUTOCODE ###END_AUTOCODE
protected $_profile = -1;
/** /**
* @return Profile * @return Profile
*/ */
function getProfile() function getProfile()
{ {
$profile = Profile::staticGet('id', $this->id); if ($this->_profile == -1) { // invalid but distinct from null
if (empty($profile)) { $this->_profile = Profile::staticGet('id', $this->id);
throw new UserNoProfileException($this); if (empty($this->_profile)) {
throw new UserNoProfileException($this);
}
} }
return $profile;
return $this->_profile;
} }
function isSubscribed($other) function isSubscribed($other)