]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Ostatus_profile smarter test if avatar exists
authorMikael Nordfeldth <mmn@hethane.se>
Mon, 26 Jan 2015 16:43:09 +0000 (17:43 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Mon, 26 Jan 2015 16:43:09 +0000 (17:43 +0100)
If you accidentally deleted a remote user's avatar from filesystem,
it'd take until its URL was updated that you got it back. Now it
happens if the local avatar file doesn't exist.

plugins/OStatus/classes/Ostatus_profile.php

index af699db50073eee059074526d5eb2b7353011856..6a629c701c8b2993419887ad1681f8091baf8494 100644 (file)
@@ -1231,14 +1231,22 @@ class Ostatus_profile extends Managed_DataObject
      * Download and update given avatar image
      *
      * @param string $url
+     * @return Avatar    The Avatar we have on disk. (seldom used)
      * @throws Exception in various failure cases
      */
     public function updateAvatar($url, $force)
     {
-        if ($url == $this->avatar && !$force) {
-            // We've already got this one.
-            return;
+        try {
+            // If avatar URL differs: update. If URLs were identical but we're forced: update.
+            if ($url == $this->avatar && !$force) {
+                // If there's no locally stored avatar, throw an exception and continue fetching below.
+                $avatar = Avatar::getUploaded($this->localProfile()) instanceof Avatar;
+                return $avatar;
+            }
+        } catch (NoAvatarException $e) {
+            // No avatar available, let's fetch it.
         }
+
         if (!common_valid_http_url($url)) {
             // TRANS: Server exception. %s is a URL.
             throw new ServerException(sprintf(_m('Invalid avatar URL %s.'), $url));
@@ -1301,6 +1309,8 @@ class Ostatus_profile extends Managed_DataObject
         $orig = clone($this);
         $this->avatar = $url;
         $this->update($orig);
+
+        return Avatar::getUploaded($self);
     }
 
     /**