From: Aaron Schulz Date: Thu, 4 Jul 2019 08:13:29 +0000 (-0700) Subject: filebackend: avoid use of wfWikiId() in FileBackendGroup X-Git-Tag: 1.34.0-rc.0~81^2 X-Git-Url: https://git.cyclocoop.org/%7B%24www_url%7Dadmin/compta/comptes/journal.php?a=commitdiff_plain;h=a775c6888bdecd03cea73f5540a8323b6dcbe78f;p=lhc%2Fweb%2Fwiklou.git filebackend: avoid use of wfWikiId() in FileBackendGroup Also warn when there is a risk of automatic backend domain collisions Change-Id: Id488b5b947ef5fe8f4b0a8e96560bfd44fcc0327 --- diff --git a/includes/filebackend/FileBackendGroup.php b/includes/filebackend/FileBackendGroup.php index 9e04d09632..f369f00e95 100644 --- a/includes/filebackend/FileBackendGroup.php +++ b/includes/filebackend/FileBackendGroup.php @@ -123,8 +123,28 @@ class FileBackendGroup { } $class = $config['class']; - // @FIXME: ideally this would default to the DB domain (which includes the schema) - $config['domainId'] = $config['domainId'] ?? ( $config['wikiId'] ?? wfWikiID() ); + if ( isset( $config['domainId'] ) ) { + $domainId = $config['domainId']; + } elseif ( isset( $config['wikiId'] ) ) { + $domainId = $config['wikiId']; // b/c + } else { + // Only use the raw database/prefix for backwards compatibility + $ld = WikiMap::getCurrentWikiDbDomain(); + $domainId = strlen( $ld->getTablePrefix() ) + ? "{$ld->getDatabase()}-{$ld->getTablePrefix()}" + : $ld->getDatabase(); + // If the local wiki ID and local domain ID do not match, probably due to a + // non-default schema, issue a warning. A non-default schema indicates that + // it might be used to disambiguate different wikis. + $wikiId = WikiMap::getWikiIdFromDbDomain( $ld ); + if ( $ld->getSchema() !== null && $domainId !== $wikiId ) { + wfWarn( + "\$wgFileBackend entry '$name' should have 'domainId' set.\n" . + "Legacy default 'domainId' is '$domainId' but wiki ID is '$wikiId'." + ); + } + } + $config['domainId'] = $domainId; $config['readOnly'] = $config['readOnly'] ?? $readOnlyReason; unset( $config['class'] ); // backend won't need this