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 FOLLOWER_SCOPE = 8;
protected $_profile = -1;
function getProfile()
{
$profile = Profile::staticGet('id', $this->profile_id);
if ($this->_profile == -1) {
$this->_profile = Profile::staticGet('id', $this->profile_id);
if (empty($profile)) {
// 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).
throw new ServerException(sprintf(_('No such profile (%1$d) for notice (%2$d).'), $this->profile_id, $this->id));
if (empty($this->_profile)) {
// 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).
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()

View File

@ -52,9 +52,15 @@ class Profile extends Memcached_DataObject
/* the code above is auto generated do not remove the tag below */
###END_AUTOCODE
protected $_user = -1; // Uninitialized value distinct from null
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)

View File

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