Exclude page versions of disabled languages from search results
authorMarcel Werk <burntime@woltlab.com>
Fri, 20 May 2022 13:43:49 +0000 (15:43 +0200)
committerMarcel Werk <burntime@woltlab.com>
Fri, 20 May 2022 13:43:49 +0000 (15:43 +0200)
ref https://www.woltlab.com/community/thread/295670-inexistente-cms-seiten-im-suchindex-nach-entfernen-der-mehrsprachigkeit/

wcfsetup/install/files/lib/system/search/PageSearch.class.php

index 46e1587716887c2bf35ad346d625b6ca1da01363..db22fa90eb61b9e4f4e48cf57e250ff1efad6197 100644 (file)
@@ -7,6 +7,7 @@ use wcf\data\page\content\SearchResultPageContent;
 use wcf\data\page\content\SearchResultPageContentList;
 use wcf\data\search\ISearchResultObject;
 use wcf\system\database\util\PreparedStatementConditionBuilder;
+use wcf\system\language\LanguageFactory;
 use wcf\system\WCF;
 
 /**
@@ -96,6 +97,11 @@ class PageSearch extends AbstractSearchProvider
             'wcf' . WCF_N . '_page.pageType IN (?) AND wcf' . WCF_N . '_page.isDisabled = ?',
             [['text', 'html'], 0]
         );
+        // Exclude versions of disabled languages.
+        $conditionBuilder->add(
+            '(wcf' . WCF_N . '_page_content.languageID IS NULL OR wcf' . WCF_N . '_page_content.languageID IN (?))',
+            [\array_keys(LanguageFactory::getInstance()->getLanguages())]
+        );
         $this->initAclCondition($conditionBuilder);
 
         return $conditionBuilder;