From ba4bda9beb8b51eb53c47ac32e435179cb9eecde Mon Sep 17 00:00:00 2001 From: Zach Copley Date: Fri, 30 Sep 2011 00:56:24 +0000 Subject: [PATCH] Fix display of group admin avatars --- classes/Profile.php | 68 +++++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 24 deletions(-) diff --git a/classes/Profile.php b/classes/Profile.php index 7ccfa72166..938c5357c2 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -103,41 +103,61 @@ class Profile extends Managed_DataObject return $this->_user; } - protected $_avatars; - + protected $_avatars; + function getAvatar($width, $height=null) { if (is_null($height)) { $height = $width; } - if (!isset($this->_avatars)) { - $this->_avatars = array(); + $avatar = $this->_getAvatar($width); + + 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; } - function _fillAvatar($width, $avatar) - { - $this->_avatars[$width] = $avatar; - } - + // XXX: @Fix me gargargar + function _getAvatar($width) + { + 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() { $avatar = DB_DataObject::factory('avatar');