Browse code

[Update] Consider if avatar file does not exist and added getMemberAvatarURL

Sebastian Zoglowek authored on10/08/2022 11:40:39
Showing1 changed files
... ...
@@ -32,7 +32,7 @@ use Psr\Log\LogLevel;
32 32
 
33 33
 /**
34 34
  * Class Member
35
- * 
35
+ *
36 36
  * @property int $avatar UUID of the avatar
37 37
  */
38 38
 class Member extends Frontend
... ...
@@ -270,36 +270,27 @@ class Member extends Frontend
270 270
     /**
271 271
      * Parses an avatar to the template
272 272
      *
273
-     * @param MemberModel $objMember
273
+     * @param MemberModel|null $objMember
274 274
      * @param $objTemplate
275 275
      * @param $strImgSize
276 276
      * @return void
277 277
      */
278
-    public static function parseMemberAvatar(MemberModel $objMember, &$objTemplate, $strImgSize)
278
+    public static function parseMemberAvatar(?MemberModel $objMember, &$objTemplate, $strImgSize)
279 279
     {
280 280
         $objTemplate->addImage= true;
281 281
 
282 282
         $objTemplate->singleSRC = self::DEFAULT_PICTURE;
283 283
         $objTemplate->addFallbackImage = true;
284 284
 
285
-        $uuidDefault = Config::get('defaultAvatar');
285
+        $projectDir = System::getContainer()->getParameter('kernel.project_dir');
286 286
 
287
-        if(!!$objMember->avatar)
288
-        {
289
-            $objFile = FilesModel::findByUuid($objMember->avatar);
290
-        }
291
-        else if(!!$uuidDefault)
292
-        {
293
-            $objFile = FilesModel::findByUuid($uuidDefault);
294
-        }
295
-        else
287
+        // Check if member avatar exists
288
+        if(null === $objMember || null === $objMember->avatar || null === ($objFile = FilesModel::findByUuid($objMember->avatar)) || !\is_file($projectDir.'/'.$objFile->path))
296 289
         {
297
-            return;
290
+            $objFile = !!($uuidDefault = Config::get('defaultAvatar')) ? FilesModel::findByUuid($uuidDefault) : null;
298 291
         }
299 292
 
300
-        $projectDir = System::getContainer()->getParameter('kernel.project_dir');
301
-
302
-        // If file does not exist use default image
293
+        // Check if config avatar exists
303 294
         if (null === $objFile || !\is_file($projectDir . '/' . $objFile->path))
304 295
         {
305 296
             return;
... ...
@@ -313,6 +304,31 @@ class Member extends Frontend
313 304
     }
314 305
 
315 306
     /**
307
+     * Gets the url for a member avatar
308
+     *
309
+     * @param MemberModel|null $objMember
310
+     * @return string
311
+     */
312
+    public static function getMemberAvatarURL(?MemberModel $objMember): string
313
+    {
314
+        // ToDo: Merge logic with parseMemberAvatar
315
+        $projectDir = System::getContainer()->getParameter('kernel.project_dir');
316
+
317
+        if(null === $objMember || null === $objMember->avatar || null === ($objFile = FilesModel::findByUuid($objMember->avatar)) || !\is_file($projectDir.'/'. $objFile->path))
318
+        {
319
+            $objFile = !!($uuidDefault = Config::get('defaultAvatar')) ? FilesModel::findByUuid($uuidDefault) : null;
320
+        }
321
+
322
+        // Check if config avatar exists
323
+        if (null === $objFile || !\is_file($projectDir . '/' . $objFile->path))
324
+        {
325
+            return self::DEFAULT_PICTURE;
326
+        }
327
+
328
+        return $objFile->path;
329
+    }
330
+
331
+    /**
316 332
      * @param MemberModel $objMember
317 333
      *
318 334
      * @return void