]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - classes/Avatar.php
Merge remote-tracking branch 'upstream/master' into social-master
[quix0rs-gnu-social.git] / classes / Avatar.php
index 420f384e13e185e97813077dc43c87cf44fc4513..6a66228a0e417fb86ca156dd230128607f482258 100644 (file)
@@ -70,10 +70,14 @@ class Avatar extends Managed_DataObject
     public static function deleteFromProfile(Profile $target, $original=true) {
         try {
             $avatars = self::getProfileAvatars($target);
+
             foreach ($avatars as $avatar) {
+                assert($avatar instanceof Avatar);
+
                 if ($avatar->original && !$original) {
                     continue;
                 }
+
                 $avatar->delete();
             }
         } catch (NoAvatarException $e) {
@@ -97,6 +101,7 @@ class Avatar extends Managed_DataObject
         }
 
         $size = "{$width}x{$height}";
+
         if (!isset(self::$_avatars[$target->id])) {
             self::$_avatars[$target->id] = array();
         } elseif (isset(self::$_avatars[$target->id][$size])){
@@ -104,6 +109,7 @@ class Avatar extends Managed_DataObject
         }
 
         $avatar = null;
+
         if (Event::handle('StartProfileGetAvatar', array($target, $width, &$avatar))) {
             $avatar = self::pkeyGet(
                 array(
@@ -112,6 +118,7 @@ class Avatar extends Managed_DataObject
                     'height'     => $height,
                 )
             );
+
             Event::handle('EndProfileGetAvatar', array($target, $width, &$avatar));
         }
 
@@ -184,7 +191,7 @@ class Avatar extends Managed_DataObject
         }
 
         if ($path[0] != '/') {
-            $path = '/'.$path;
+            $path = '/' . $path;
         }
 
         $server = common_config('avatar', 'server');
@@ -223,6 +230,12 @@ class Avatar extends Managed_DataObject
         try {
             return self::byProfile($target,  $width, $height)->displayUrl();
         } catch (Exception $e) {
+            common_debug(sprintf('target=>id=%s,width=%s,height=%s,message=%s',
+                $target->id,
+                $width,
+                $height,
+                $e->getMessage()
+            ));
             return self::defaultImage($width);
         }
     }
@@ -232,7 +245,7 @@ class Avatar extends Managed_DataObject
         static $sizenames = array(AVATAR_PROFILE_SIZE => 'profile',
                                   AVATAR_STREAM_SIZE => 'stream',
                                   AVATAR_MINI_SIZE => 'mini');
-        return Theme::path('default-avatar-'.$sizenames[$size].'.png');
+        return Theme::path('default-avatar-' . $sizenames[$size] . '.png');
     }
 
     static function newSize(Profile $target, $width) {
@@ -241,16 +254,21 @@ class Avatar extends Managed_DataObject
             // TRANS: An error message when avatar size is unreasonable
             throw new Exception(_m('Avatar size too large'));
         }
+        // So far we only have square avatars and I don't have time to
+        // rewrite support for non-square ones right now ;)
+        $height = $width;
 
         $original = Avatar::getUploaded($target);
 
-        $imagefile = new ImageFile($target->id, Avatar::path($original->filename));
-        $filename = $imagefile->resize($width);
+        $imagefile = new ImageFile(null, Avatar::path($original->filename));
+        $filename = Avatar::filename($target->getID(), image_type_to_extension($imagefile->preferredType()),
+                                     $width, common_timestamp());
+        $imagefile->resizeTo(Avatar::path($filename), array('width'=>$width, 'height'=>$height));
 
         $scaled = clone($original);
         $scaled->original = false;
         $scaled->width = $width;
-        $scaled->height = $width;
+        $scaled->height = $height;
         $scaled->url = Avatar::url($filename);
         $scaled->filename = $filename;
         $scaled->created = common_sql_now();