diff --git a/extension.json b/extension.json index 23f2d561f..5c884ef19 100644 --- a/extension.json +++ b/extension.json @@ -620,6 +620,10 @@ "value": "default", "description": "Override availability of DiscussionTools visual enhancements's reply buttons sub-feature. 'default', 'available', or 'unavailable'." }, + "DiscussionToolsEnablePermalinksBackend": { + "value": true, + "description": "Enable the permalinks backend. Do not enable this unless the database tables exist." + }, "DiscussionToolsAutoTopicSubEditor": { "value": "discussiontoolsapi", "description": "Editor which triggers automatic topic subscriptions. Either 'discussiontoolsapi' for edits made using DiscussionTools' API (e.g. reply and new topic tools), or 'any' for any editor." diff --git a/includes/ThreadItemStore.php b/includes/ThreadItemStore.php index 195c88ea3..e2d7d3d71 100644 --- a/includes/ThreadItemStore.php +++ b/includes/ThreadItemStore.php @@ -16,9 +16,9 @@ use MWTimestamp; use ReadOnlyMode; use stdClass; use TitleFormatter; +use Wikimedia\Rdbms\IDatabase; use Wikimedia\Rdbms\ILBFactory; use Wikimedia\Rdbms\ILoadBalancer; -use Wikimedia\Rdbms\IMaintainableDatabase; use Wikimedia\Rdbms\IResultWrapper; use Wikimedia\Rdbms\SelectQueryBuilder; @@ -81,19 +81,16 @@ class ThreadItemStore { * @return bool */ private function isDisabled(): bool { - static $tablesCreated = null; - if ( $tablesCreated === null ) { - $tablesCreated = $this->getConnectionRef( DB_REPLICA )->tableExists( 'discussiontools_items', __METHOD__ ); - } - return !$tablesCreated; + $dtConfig = $this->configFactory->makeConfig( 'discussiontools' ); + return !$dtConfig->get( 'DiscussionToolsEnablePermalinksBackend' ); } /** * @param int $dbIndex DB_PRIMARY or DB_REPLICA * - * @return IMaintainableDatabase + * @return IDatabase */ - private function getConnectionRef( int $dbIndex ): IMaintainableDatabase { + private function getConnectionRef( int $dbIndex ): IDatabase { return $this->loadBalancer->getConnectionRef( $dbIndex, [ 'watchlist' ] ); }