Simplify usage of `ContentNotVisibleView`
authorMarcel Werk <burntime@woltlab.com>
Mon, 19 Aug 2024 13:20:42 +0000 (15:20 +0200)
committerMarcel Werk <burntime@woltlab.com>
Mon, 19 Aug 2024 13:20:42 +0000 (15:20 +0200)
wcfsetup/install/files/lib/system/bbcode/AttachmentBBCode.class.php
wcfsetup/install/files/lib/system/bbcode/WoltLabSuiteArticleBBCode.class.php
wcfsetup/install/files/lib/system/bbcode/WoltLabSuiteMediaBBCode.class.php
wcfsetup/install/files/lib/system/bbcode/WoltLabSuitePageBBCode.class.php
wcfsetup/install/files/lib/system/view/ContentNotVisibleView.class.php

index 7ef7e20bcbf004370036bbd13f691b433120bdd9..9fee7f279a79be9677e9c7e77222e3fd522a6e8d 100644 (file)
@@ -27,7 +27,7 @@ final class AttachmentBBCode extends AbstractBBCode
 
         $attachment = $this->getAttachment($attachmentID);
         if ($attachment === null) {
-            return new ContentNotVisibleView();
+            return ContentNotVisibleView::forNotAvailable();
         }
 
         $outputType = $parser->getOutputType();
@@ -55,9 +55,7 @@ final class AttachmentBBCode extends AbstractBBCode
         } elseif (\substr($attachment->fileType, 0, 6) === 'audio/' && $outputType == 'text/html') {
             return $this->showAudioPlayer($attachment);
         } elseif (!$attachment->canDownload()) {
-            return new ContentNotVisibleView(
-                WCF::getLanguage()->getDynamicVariable('wcf.message.content.no.permission.title')
-            );
+            return ContentNotVisibleView::forNoPermission();
         }
 
         return StringUtil::getAnchorTag($attachment->getLink(), $attachment->filename);
index eb9e89c33d87e6f07a9dce679631dff5d92d9894..f37cf506369dd224a1da16715c9b82a8c43467f7 100644 (file)
@@ -33,13 +33,11 @@ final class WoltLabSuiteArticleBBCode extends AbstractBBCode
 
         $article = $this->getArticle($articleID);
         if ($article === null) {
-            return new ContentNotVisibleView();
+            return ContentNotVisibleView::forNotAvailable();
         }
 
         if (!$article->canRead()) {
-            return new ContentNotVisibleView(
-                WCF::getLanguage()->getDynamicVariable('wcf.message.content.no.permission.title')
-            );
+            return ContentNotVisibleView::forNoPermission();
         } elseif ($parser->getOutputType() == 'text/html') {
             return WCF::getTPL()->fetch('shared_bbcode_wsa', 'wcf', [
                 'article' => $article,
index 45e6b2f0be0ed5cecb899120b89561805e61d471..cc6e78c02ce660b1386bcd7a36b77d2c60f25809 100644 (file)
@@ -49,7 +49,7 @@ final class WoltLabSuiteMediaBBCode extends AbstractBBCode
         /** @var ViewableMedia $media */
         $media = MessageEmbeddedObjectManager::getInstance()->getObject('com.woltlab.wcf.media', $mediaID);
         if ($media === null) {
-            return new ContentNotVisibleView();
+            return ContentNotVisibleView::forNotAvailable();
         }
 
         if ($media->isAccessible()) {
@@ -96,9 +96,7 @@ final class WoltLabSuiteMediaBBCode extends AbstractBBCode
 
             return StringUtil::encodeHTML($media->getLink());
         } else {
-            return new ContentNotVisibleView(
-                WCF::getLanguage()->getDynamicVariable('wcf.message.content.no.permission.title')
-            );
+            return ContentNotVisibleView::forNoPermission();
         }
     }
 }
index 5650f00618e78a6a63e2d58f6d1d7f50fce33878..2e061e6825856676802b665c8e6c554552ce2b7a 100644 (file)
@@ -35,6 +35,6 @@ final class WoltLabSuitePageBBCode extends AbstractBBCode
             return StringUtil::getAnchorTag($page->getLink(), $title ?: $page->getTitle());
         }
 
-        return new ContentNotVisibleView();
+        return ContentNotVisibleView::forNotAvailable();
     }
 }
index 977d2fac6c0c19644b444ef29a78a86e31596c6d..c2a7c371af5f43c952deac185968ee025bdba7ee 100644 (file)
@@ -14,16 +14,9 @@ use wcf\system\WCF;
  */
 final class ContentNotVisibleView
 {
-    private readonly string $message;
-
     public function __construct(
-        string $message = '',
+        private readonly string $message,
     ) {
-        if (!$message) {
-            $message = WCF::getLanguage()->get('wcf.message.content.not.available.title');
-        }
-
-        $this->message = $message;
     }
 
     public function __toString(): string
@@ -32,4 +25,14 @@ final class ContentNotVisibleView
             'message' => $this->message,
         ], true);
     }
+
+    public static function forNotAvailable(): self
+    {
+        return new self(WCF::getLanguage()->getDynamicVariable('wcf.message.content.not.available.title'));
+    }
+
+    public static function forNoPermission(): self
+    {
+        return new self(WCF::getLanguage()->getDynamicVariable('wcf.message.content.no.permission.title'));
+    }
 }