From 72e90545454c0e014318fa3c81658e035aac58c1 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 10 Jun 2009 13:00:47 +0200 Subject: applying patch to version 1.15.0 --- includes/LinksUpdate.php | 60 ++++++++++-------------------------------------- 1 file changed, 12 insertions(+), 48 deletions(-) (limited to 'includes/LinksUpdate.php') diff --git a/includes/LinksUpdate.php b/includes/LinksUpdate.php index 13f35b5a..caacb49c 100644 --- a/includes/LinksUpdate.php +++ b/includes/LinksUpdate.php @@ -20,8 +20,7 @@ class LinksUpdate { $mProperties, //!< Map of arbitrary name to value $mDb, //!< Database connection reference $mOptions, //!< SELECT options to be used (array) - $mRecursive, //!< Whether to queue jobs for recursive updates - $mTouchTmplLinks; //!< Whether to queue HTMLCacheUpdate jobs IF recursive + $mRecursive; //!< Whether to queue jobs for recursive updates /**@}}*/ /** @@ -72,15 +71,6 @@ class LinksUpdate { wfRunHooks( 'LinksUpdateConstructed', array( &$this ) ); } - - /** - * Invalidate HTML cache of pages that include this page? - */ - public function setRecursiveTouch( $val ) { - $this->mTouchTmplLinks = (bool)$val; - if( $val ) // Cannot invalidate without queueRecursiveJobs() - $this->mRecursive = true; - } /** * Update link tables with outgoing links from an updated article @@ -95,7 +85,6 @@ class LinksUpdate { $this->doIncrementalUpdate(); } wfRunHooks( 'LinksUpdateComplete', array( &$this ) ); - } protected function doIncrementalUpdate() { @@ -207,49 +196,21 @@ class LinksUpdate { global $wgUpdateRowsPerJob; wfProfileIn( __METHOD__ ); - $dbr = wfGetDB( DB_SLAVE ); - $res = $dbr->select( 'templatelinks', - array( 'tl_from' ), - array( - 'tl_namespace' => $this->mTitle->getNamespace(), - 'tl_title' => $this->mTitle->getDBkey() - ), __METHOD__ - ); - - $numRows = $res->numRows(); - if( !$numRows ) { + $cache = $this->mTitle->getBacklinkCache(); + $batches = $cache->partition( 'templatelinks', $wgUpdateRowsPerJob ); + if ( !$batches ) { wfProfileOut( __METHOD__ ); - return; // nothing to do + return; } - $numBatches = ceil( $numRows / $wgUpdateRowsPerJob ); - $realBatchSize = $numRows / $numBatches; - $start = false; $jobs = array(); - do { - for( $i = 0; $i <= $realBatchSize - 1; $i++ ) { - $row = $res->fetchRow(); - if( $row ) { - $id = $row[0]; - } else { - $id = false; - break; - } - } + foreach ( $batches as $batch ) { + list( $start, $end ) = $batch; $params = array( 'start' => $start, - 'end' => ( $id !== false ? $id - 1 : false ), + 'end' => $end, ); $jobs[] = new RefreshLinksJob2( $this->mTitle, $params ); - # Hit page caches while we're at it if set to do so... - if( $this->mTouchTmplLinks ) { - $params['table'] = 'templatelinks'; - $jobs[] = new HTMLCacheUpdateJob( $this->mTitle, $params ); - } - $start = $id; - } while ( $start ); - - $dbr->freeResult( $res ); - + } Job::batchInsert( $jobs ); wfProfileOut( __METHOD__ ); @@ -465,9 +426,12 @@ class LinksUpdate { * @private */ function getCategoryInsertions( $existing = array() ) { + global $wgContLang; $diffs = array_diff_assoc( $this->mCategories, $existing ); $arr = array(); foreach ( $diffs as $name => $sortkey ) { + $nt = Title::makeTitleSafe( NS_CATEGORY, $name ); + $wgContLang->findVariantLink( $name, $nt, true ); $arr[] = array( 'cl_from' => $this->mId, 'cl_to' => $name, -- cgit v1.2.3-54-g00ecf