aboutsummaryrefslogtreecommitdiffstats
path: root/includes/title/Title.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/title/Title.php')
-rw-r--r--includes/title/Title.php20
1 files changed, 15 insertions, 5 deletions
diff --git a/includes/title/Title.php b/includes/title/Title.php
index 2b2e5b04eea2..34e5e03a9d7c 100644
--- a/includes/title/Title.php
+++ b/includes/title/Title.php
@@ -2953,13 +2953,23 @@ class Title implements Stringable, LinkTarget, PageIdentity {
return $data;
}
- $dbr = $this->getDbProvider()->getReplicaDatabase();
+ $migrationStage = MediaWikiServices::getInstance()->getMainConfig()->get(
+ MainConfigNames::CategoryLinksSchemaMigrationStage
+ );
- $res = $dbr->newSelectQueryBuilder()
- ->select( 'cl_to' )
+ $dbr = $this->getDbProvider()->getReplicaDatabase();
+ $queryBuilder = $dbr->newSelectQueryBuilder()
->from( 'categorylinks' )
- ->where( [ 'cl_from' => $titleKey ] )
- ->caller( __METHOD__ )->fetchResultSet();
+ ->where( [ 'cl_from' => $titleKey ] );
+
+ if ( $migrationStage & SCHEMA_COMPAT_READ_OLD ) {
+ $queryBuilder->select( 'cl_to' );
+ } else {
+ $queryBuilder->field( 'lt_title', 'cl_to' )
+ ->join( 'linktarget', null, 'cl_target_id = lt_id' )
+ ->where( [ 'lt_namespace' => NS_CATEGORY ] );
+ }
+ $res = $queryBuilder->caller( __METHOD__ )->fetchResultSet();
if ( $res->numRows() > 0 ) {
$contLang = MediaWikiServices::getInstance()->getContentLanguage();