]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/User.php
Merge pull request #10787 from fabrixxm/issue/10767
[friendica.git] / src / Model / User.php
index 4f63b381988e688c612baae21b491c822799d49b..ccdca6288a8647520f08f30ff99d2975d67ce424 100644 (file)
@@ -840,6 +840,57 @@ class User
                return false;
        }
 
+       /**
+        * Get avatar link for given user id
+        *
+        * @param integer $uid     user id
+        * @param string  $size    One of the ProxyUtils::SIZE_* constants
+        * @return string avatar link
+        */
+       public static function getAvatarUrlForId(int $uid, string $size = ''):string
+       {
+               $url = DI::baseUrl() . '/photo/';
+
+               switch ($size) {
+                       case Proxy::SIZE_MICRO:
+                               $url .= 'micro/';
+                               $scale = 6;
+                               break;
+                       case Proxy::SIZE_THUMB:
+                               $url .= 'avatar/';
+                               $scale = 5;
+                               break;
+                       default:
+                               $url .= 'profile/';
+                               $scale = 4;
+                               break;
+               }
+
+               $updated =  '';
+               $imagetype = IMAGETYPE_JPEG;
+
+               $photo = Photo::selectFirst(['type', 'created', 'edited', 'updated'], ["scale" => $scale, 'uid' => $uid, 'profile' => true]);
+               if (!empty($photo)) {
+                       $updated = max($photo['created'], $photo['edited'], $photo['updated']);
+
+                       switch ($photo['type']) {
+                               case 'image/png':
+                                       $imagetype = IMAGETYPE_PNG;
+                                       break;
+
+                               case 'image/gif':
+                                       $imagetype = IMAGETYPE_PNG;
+                                       break;
+
+                               default:
+                                       $imagetype = IMAGETYPE_JPEG;
+                                       break;
+                       }
+               }
+
+               return $url . $uid . image_type_to_extension($imagetype) . ($updated ? '?ts=' . strtotime($updated) : '');
+       }
+
        /**
         * Catch-all user creation function
         *
@@ -1054,8 +1105,8 @@ class User
                $insert_result = DBA::insert('profile', [
                        'uid' => $uid,
                        'name' => $username,
-                       'photo' => DI::baseUrl() . "/photo/profile/{$uid}.jpg",
-                       'thumb' => DI::baseUrl() . "/photo/avatar/{$uid}.jpg",
+                       'photo' => self::getAvatarUrlForId($uid),
+                       'thumb' => self::getAvatarUrlForId($uid, Proxy::SIZE_THUMB),
                        'publish' => $publish,
                        'net-publish' => $netpublish,
                ]);
@@ -1585,8 +1636,8 @@ class User
        /**
         * Check if the given user id has delegations or is delegated
         *
-        * @param int $uid 
-        * @return bool 
+        * @param int $uid
+        * @return bool
         */
        public static function hasIdentities(int $uid):bool
        {