]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Fix display of group admin avatars
authorZach Copley <zach@status.net>
Fri, 30 Sep 2011 00:56:24 +0000 (00:56 +0000)
committerZach Copley <zach@status.net>
Fri, 30 Sep 2011 00:57:54 +0000 (00:57 +0000)
classes/Profile.php

index 7ccfa72166e0c4cead17f7dd2bc15248f4c91034..938c5357c24abc35691b44c805a53d979edae7cf 100644 (file)
@@ -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 (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));
+            }
 
-        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);
         }
 
-               $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');