Display template if content can not be displayed
authorCyperghost <olaf_schmitz_1@t-online.de>
Thu, 18 Jan 2024 12:17:31 +0000 (13:17 +0100)
committerCyperghost <olaf_schmitz_1@t-online.de>
Thu, 18 Jan 2024 12:17:31 +0000 (13:17 +0100)
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

index 2a4b751fd7b3a83ec3bdd8a67be9951feae300ae..5e13718d0cd87c0124e833850656f44785453e3c 100644 (file)
@@ -27,9 +27,7 @@ final class AttachmentBBCode extends AbstractBBCode
 
         $attachment = $this->getAttachment($attachmentID);
         if ($attachment === null) {
-            return StringUtil::getAnchorTag(LinkHandler::getInstance()->getLink('Attachment', [
-                'id' => $attachmentID,
-            ]));
+            return WCF::getTPL()->fetch('contentNotVisible');
         }
 
         $outputType = $parser->getOutputType();
@@ -56,6 +54,10 @@ final class AttachmentBBCode extends AbstractBBCode
             return $this->showVideoPlayer($attachment);
         } elseif (\substr($attachment->fileType, 0, 6) === 'audio/' && $outputType == 'text/html') {
             return $this->showAudioPlayer($attachment);
+        } elseif (!$attachment->canDownload()) {
+            return WCF::getTPL()->fetch('contentNotVisible', 'wcf', [
+                'message' => WCF::getLanguage()->get('wcf.message.content.no.permission.title')
+            ], true);
         }
 
         return StringUtil::getAnchorTag($attachment->getLink(), $attachment->filename);
index a8d34b0a9160bb78f42fa5096cd2a501deb0bb0a..0f4e15adcaf6eb508f04bffbe0e4f4e6ff906a4d 100644 (file)
@@ -33,12 +33,20 @@ final class WoltLabSuiteArticleBBCode extends AbstractBBCode
 
         /** @var ViewableArticle $object */
         $object = MessageEmbeddedObjectManager::getInstance()->getObject('com.woltlab.wcf.article', $objectID);
-        if ($object !== null && $object->canRead() && $parser->getOutputType() == 'text/html') {
+        if ($object === null) {
+            return WCF::getTPL()->fetch('contentNotVisible');
+        }
+
+        if ($object->canRead() && $parser->getOutputType() == 'text/html') {
             return WCF::getTPL()->fetch('articleBBCode', 'wcf', [
                 'article' => $object,
                 'articleID' => $object->articleID,
                 'titleHash' => \substr(StringUtil::getRandomID(), 0, 8),
             ], true);
+        } elseif (!$object->canRead()) {
+            return WCF::getTPL()->fetch('contentNotVisible', 'wcf', [
+                'message' => WCF::getLanguage()->get('wcf.message.content.no.permission.title')
+            ], true);
         }
 
         return StringUtil::getAnchorTag(LinkHandler::getInstance()->getLink('Article', [
index 71e381dcf03c0e6c4dad80224648d53c383bb470..97047757ce085de8ee378589558efd77bf5281a7 100644 (file)
@@ -47,7 +47,11 @@ final class WoltLabSuiteMediaBBCode extends AbstractBBCode
 
         /** @var ViewableMedia $media */
         $media = MessageEmbeddedObjectManager::getInstance()->getObject('com.woltlab.wcf.media', $mediaID);
-        if ($media !== null && $media->isAccessible()) {
+        if ($media === null) {
+            return WCF::getTPL()->fetch('contentNotVisible');
+        }
+
+        if ($media->isAccessible()) {
             if ($removeLinks && !$media->isImage) {
                 if ($parser->getOutputType() === 'text/html' || $parser->getOutputType() === 'text/simplified-html') {
                     return StringUtil::encodeHTML($media->getTitle());
@@ -90,9 +94,11 @@ final class WoltLabSuiteMediaBBCode extends AbstractBBCode
             }
 
             return StringUtil::encodeHTML($this->getLink($media));
+        } else {
+            return WCF::getTPL()->fetch('contentNotVisible', 'wcf', [
+                'message' => WCF::getLanguage()->get('wcf.message.content.no.permission.title')
+            ], true);
         }
-
-        return '';
     }
 
     /**
index c7117c6253d0aa5d30f5e1ad755524e9f9a61930..717ec5d12229412594c10cbb6bd29f0e7556aef0 100644 (file)
@@ -4,6 +4,7 @@ namespace wcf\system\bbcode;
 
 use wcf\data\page\Page;
 use wcf\system\message\embedded\object\MessageEmbeddedObjectManager;
+use wcf\system\WCF;
 use wcf\util\StringUtil;
 
 /**
@@ -34,6 +35,6 @@ final class WoltLabSuitePageBBCode extends AbstractBBCode
             return StringUtil::getAnchorTag($page->getLink(), $title ?: $page->getTitle());
         }
 
-        return '';
+        return WCF::getTPL()->fetch('contentNotVisible');
     }
 }