From e8e2cc0ffc652dfcaca7d2eb7c514b1510202f4b Mon Sep 17 00:00:00 2001 From: Kunal Mehta Date: Fri, 13 May 2016 00:00:39 -0700 Subject: [PATCH] Add LinkCache::getSelectFields() and use it in a few places Change-Id: Ic65b20cc2aa41f9b481e280918fe95c57da53221 --- includes/cache/LinkBatch.php | 15 ++++---------- includes/cache/LinkCache.php | 32 +++++++++++++++++++---------- includes/parser/LinkHolderArray.php | 30 +++++++++------------------ 3 files changed, 35 insertions(+), 42 deletions(-) diff --git a/includes/cache/LinkBatch.php b/includes/cache/LinkBatch.php index c5bd29058c..a7dd5709c2 100644 --- a/includes/cache/LinkBatch.php +++ b/includes/cache/LinkBatch.php @@ -179,8 +179,6 @@ class LinkBatch { * @return bool|ResultWrapper */ public function doQuery() { - global $wgContentHandlerUseDB, $wgPageLanguageUseDB; - if ( $this->isEmpty() ) { return false; } @@ -188,15 +186,10 @@ class LinkBatch { // This is similar to LinkHolderArray::replaceInternal $dbr = wfGetDB( DB_SLAVE ); $table = 'page'; - $fields = [ 'page_id', 'page_namespace', 'page_title', 'page_len', - 'page_is_redirect', 'page_latest' ]; - - if ( $wgContentHandlerUseDB ) { - $fields[] = 'page_content_model'; - } - if ( $wgPageLanguageUseDB ) { - $fields[] = 'page_lang'; - } + $fields = array_merge( + LinkCache::getSelectFields(), + [ 'page_namespace', 'page_title' ] + ); $conds = $this->constructSet( 'page', $dbr ); diff --git a/includes/cache/LinkCache.php b/includes/cache/LinkCache.php index 2c112474b3..de44f9bd85 100644 --- a/includes/cache/LinkCache.php +++ b/includes/cache/LinkCache.php @@ -202,6 +202,26 @@ class LinkCache { return $this->addLinkObj( $nt ); } + /** + * Fields that LinkCache needs to select + * + * @since 1.28 + * @return array + */ + public static function getSelectFields() { + global $wgContentHandlerUseDB, $wgPageLanguageUseDB; + + $fields = [ 'page_id', 'page_len', 'page_is_redirect', 'page_latest' ]; + if ( $wgContentHandlerUseDB ) { + $fields[] = 'page_content_model'; + } + if ( $wgPageLanguageUseDB ) { + $fields[] = 'page_lang'; + } + + return $fields; + } + /** * Add a title to the link cache, return the page_id or zero if non-existent * @@ -209,8 +229,6 @@ class LinkCache { * @return int Page ID or zero */ public function addLinkObj( LinkTarget $nt ) { - global $wgContentHandlerUseDB, $wgPageLanguageUseDB; - $key = $this->titleFormatter->getPrefixedDBkey( $nt ); if ( $this->isBadLink( $key ) || $nt->isExternal() ) { return 0; @@ -227,15 +245,7 @@ class LinkCache { // Some fields heavily used for linking... $db = $this->mForUpdate ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE ); - $fields = [ 'page_id', 'page_len', 'page_is_redirect', 'page_latest' ]; - if ( $wgContentHandlerUseDB ) { - $fields[] = 'page_content_model'; - } - if ( $wgPageLanguageUseDB ) { - $fields[] = 'page_lang'; - } - - $row = $db->selectRow( 'page', $fields, + $row = $db->selectRow( 'page', self::getSelectFields(), [ 'page_namespace' => $nt->getNamespace(), 'page_title' => $nt->getDBkey() ], __METHOD__ ); diff --git a/includes/parser/LinkHolderArray.php b/includes/parser/LinkHolderArray.php index bd969a5421..8575e69388 100644 --- a/includes/parser/LinkHolderArray.php +++ b/includes/parser/LinkHolderArray.php @@ -282,7 +282,7 @@ class LinkHolderArray { return; } - global $wgContLang, $wgContentHandlerUseDB, $wgPageLanguageUseDB; + global $wgContLang; $colours = []; $linkCache = LinkCache::singleton(); @@ -333,15 +333,10 @@ class LinkHolderArray { } } if ( !$lb->isEmpty() ) { - $fields = [ 'page_id', 'page_namespace', 'page_title', - 'page_is_redirect', 'page_len', 'page_latest' ]; - - if ( $wgContentHandlerUseDB ) { - $fields[] = 'page_content_model'; - } - if ( $wgPageLanguageUseDB ) { - $fields[] = 'page_lang'; - } + $fields = array_merge( + LinkCache::getSelectFields(), + [ 'page_namespace', 'page_title' ] + ); $res = $dbr->select( 'page', @@ -454,7 +449,7 @@ class LinkHolderArray { * @param array $colours */ protected function doVariants( &$colours ) { - global $wgContLang, $wgContentHandlerUseDB, $wgPageLanguageUseDB; + global $wgContLang; $linkBatch = new LinkBatch(); $variantMap = []; // maps $pdbkey_Variant => $keys (of link holders) $output = $this->parent->getOutput(); @@ -540,15 +535,10 @@ class LinkHolderArray { if ( !$linkBatch->isEmpty() ) { // construct query $dbr = wfGetDB( DB_SLAVE ); - $fields = [ 'page_id', 'page_namespace', 'page_title', - 'page_is_redirect', 'page_len', 'page_latest' ]; - - if ( $wgContentHandlerUseDB ) { - $fields[] = 'page_content_model'; - } - if ( $wgPageLanguageUseDB ) { - $fields[] = 'page_lang'; - } + $fields = array_merge( + LinkCache::getSelectFields(), + [ 'page_namespace', 'page_title' ] + ); $varRes = $dbr->select( 'page', $fields, -- 2.20.1