Incorrect handling of comments after the page id
authorAlexander Ebert <ebert@woltlab.com>
Thu, 14 Nov 2019 13:09:39 +0000 (14:09 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Thu, 14 Nov 2019 13:09:39 +0000 (14:09 +0100)
Fixes #3106

wcfsetup/install/files/lib/system/message/embedded/object/PageMessageEmbeddedObjectHandler.class.php

index 32501b6a17111436187c005db30ba53281e318c1..1234260d125d9c8ff9c119ec45c2dc16cd01fa95 100644 (file)
@@ -3,6 +3,7 @@ namespace wcf\system\message\embedded\object;
 use wcf\data\page\Page;
 use wcf\data\page\PageCache;
 use wcf\system\html\input\HtmlInputProcessor;
+use wcf\util\ArrayUtil;
 
 /**
  * Parses embedded pages and outputs their link or title.
@@ -47,6 +48,11 @@ class PageMessageEmbeddedObjectHandler extends AbstractSimpleMessageEmbeddedObje
         * @inheritDoc
         */
        public function validateValues($objectType, $objectID, array $values) {
+               // Pages can be referenced as `123#Some Text`, where everything after the number
+               // is a comment for better readability. Converting the values to integers via
+               // `intval()` will discard the everything after the ID.
+               $values = ArrayUtil::toIntegerArray($values);
+               
                return array_filter($values, function($value) {
                        return (PageCache::getInstance()->getPage($value) !== null);
                });