Browse code

Fetch upstream

Sebastian Zoglowek authored on10/08/2022 13:44:29 • GitHub committed on10/08/2022 13:44:29
Showing3 changed files
... ...
@@ -113,6 +113,10 @@ Member avatars can be shown using following *insert-tags*
113 113
 {{avatar::member::current::200x200xproportional}}
114 114
 {{avatar::member::4}}
115 115
 {{avatar::member::4::300x300xcrop}}
116
+
117
+// Output file url
118
+{{avatar_url::member::current}}
119
+{{avatar_url::member:4}}
116 120
 ```
117 121
 
118 122
 The allowed image size parameters are:
... ...
@@ -26,7 +26,8 @@ use Oveleon\ContaoMemberExtensionBundle\Member;
26 26
 class InsertTagsListener
27 27
 {
28 28
     private const SUPPORTED_TAGS = [
29
-        'avatar'
29
+        'avatar',
30
+        'avatar_url'
30 31
     ];
31 32
 
32 33
     /**
... ...
@@ -83,14 +84,24 @@ class InsertTagsListener
83 84
                 break;
84 85
         }
85 86
 
86
-        if(!!$objMember = MemberModel::findByPk($memberID))
87
+        $objMember = MemberModel::findByPk($memberID);
88
+
89
+        switch ($insertTag)
87 90
         {
88
-            $strImgSize = $this->convertImgSize($elements[3]);
89
-            $objTemplate = new FrontendTemplate('memberExtension_image');
91
+            case 'avatar':
92
+            {
93
+                $strImgSize = $this->convertImgSize($elements[3]);
94
+                $objTemplate = new FrontendTemplate('memberExtension_image');
95
+
96
+                Member::parseMemberAvatar($objMember, $objTemplate, $strImgSize);
90 97
 
91
-            Member::parseMemberAvatar($objMember, $objTemplate, $strImgSize);
98
+                return $objTemplate->parse();
99
+            }
92 100
 
93
-            return $objTemplate->parse();
101
+            case 'avatar_url':
102
+            {
103
+                return Member::getMemberAvatarURL($objMember);
104
+            }
94 105
         }
95 106
 
96 107
         return '';
... ...
@@ -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