Fix display of group admin avatars

This commit is contained in:
Zach Copley 2011-09-30 00:56:24 +00:00
parent 51b7af41d4
commit ba4bda9beb
1 changed files with 44 additions and 24 deletions

View File

@ -103,7 +103,7 @@ class Profile extends Managed_DataObject
return $this->_user; return $this->_user;
} }
protected $_avatars; protected $_avatars;
function getAvatar($width, $height=null) function getAvatar($width, $height=null)
{ {
@ -111,32 +111,52 @@ class Profile extends Managed_DataObject
$height = $width; $height = $width;
} }
if (!isset($this->_avatars)) { $avatar = $this->_getAvatar($width);
$this->_avatars = array();
if (empty($avatar)) {
if (Event::handle('StartProfileGetAvatar', array($this, $width, &$avatar))) {
$avatar = Avatar::pkeyGet(
array(
'profile_id' => $this->id,
'width' => $width,
'height' => $height
)
);
Event::handle('EndProfileGetAvatar', array($this, $width, &$avatar));
}
$this->_fillAvatar($width, $avatar);
} }
if (array_key_exists($width, $this->_avatars)) {
return $this->_avatars[$width];
}
$avatar = null;
if (Event::handle('StartProfileGetAvatar', array($this, $width, &$avatar))) {
$avatar = Avatar::pkeyGet(array('profile_id' => $this->id,
'width' => $width,
'height' => $height));
Event::handle('EndProfileGetAvatar', array($this, $width, &$avatar));
}
$this->_avatars[$width] = $avatar;
return $avatar; return $avatar;
} }
function _fillAvatar($width, $avatar) // XXX: @Fix me gargargar
{ function _getAvatar($width)
$this->_avatars[$width] = $avatar; {
} if (empty($this->_avatars)) {
$this->_avatars = array();
}
// GAR! I cannot figure out where _avatars gets pre-filled with the avatar from
// the previously used profile! Please shoot me now! --Zach
if (array_key_exists($width, $this->_avatars)) {
// Don't return cached avatar unless it's really for this profile
if ($this->_avatars[$width]->profile_id == $this->id) {
return $this->_avatars[$width];
}
}
return null;
}
function _fillAvatar($width, $avatar)
{
//common_debug("Storing avatar of width: {$avatar->width} and profile_id {$avatar->profile_id} in profile {$this->id}.");
$this->_avatars[$width] = $avatar;
}
function getOriginalAvatar() function getOriginalAvatar()
{ {