X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=maintenance%2FrefreshLinks.php;h=8306243c082ecadafc49e6a77dc97a13f692fb74;hb=d27c242ca00e91ae6ee825831f7f243d59e647f1;hp=b099aff44f360c44f0e5f4f08a60cc2460376691;hpb=e7720b8f8e09287384ddee271641d1b1721318bb;p=lhc%2Fweb%2Fwiklou.git diff --git a/maintenance/refreshLinks.php b/maintenance/refreshLinks.php index b099aff44f..8306243c08 100644 --- a/maintenance/refreshLinks.php +++ b/maintenance/refreshLinks.php @@ -21,6 +21,7 @@ * @ingroup Maintenance */ +use MediaWiki\MediaWikiServices; use Wikimedia\Rdbms\IDatabase; require_once __DIR__ . '/Maintenance.php'; @@ -70,7 +71,7 @@ class RefreshLinks extends Maintenance { if ( ( $category = $this->getOption( 'category', false ) ) !== false ) { $title = Title::makeTitleSafe( NS_CATEGORY, $category ); if ( !$title ) { - $this->error( "'$category' is an invalid category name!\n", true ); + $this->fatalError( "'$category' is an invalid category name!\n" ); } $this->refreshCategory( $title ); } elseif ( ( $category = $this->getOption( 'tracking-category', false ) ) !== false ) { @@ -80,9 +81,9 @@ class RefreshLinks extends Maintenance { $redir = $this->hasOption( 'redirects-only' ); $oldRedir = $this->hasOption( 'old-redirects-only' ); $this->doRefreshLinks( $start, $new, $end, $redir, $oldRedir ); - $this->deleteLinksFromNonexistent( null, null, $this->mBatchSize, $dfnChunkSize ); + $this->deleteLinksFromNonexistent( null, null, $this->getBatchSize(), $dfnChunkSize ); } else { - $this->deleteLinksFromNonexistent( $start, $end, $this->mBatchSize, $dfnChunkSize ); + $this->deleteLinksFromNonexistent( $start, $end, $this->getBatchSize(), $dfnChunkSize ); } } @@ -170,8 +171,8 @@ class RefreshLinks extends Maintenance { } } else { if ( !$end ) { - $maxPage = $dbr->selectField( 'page', 'max(page_id)', false ); - $maxRD = $dbr->selectField( 'redirect', 'max(rd_from)', false ); + $maxPage = $dbr->selectField( 'page', 'max(page_id)', '', __METHOD__ ); + $maxRD = $dbr->selectField( 'redirect', 'max(rd_from)', '', __METHOD__ ); $end = max( $maxPage, $maxRD ); } $this->output( "Refreshing redirects table.\n" ); @@ -258,7 +259,7 @@ class RefreshLinks extends Maintenance { public static function fixLinksFromArticle( $id, $ns = false ) { $page = WikiPage::newFromID( $id ); - LinkCache::singleton()->clear(); + MediaWikiServices::getInstance()->getLinkCache()->clear(); if ( $page === null ) { return; @@ -267,17 +268,14 @@ class RefreshLinks extends Maintenance { return; } - $content = $page->getContent( Revision::RAW ); - if ( $content === null ) { - return; - } - - $updates = $content->getSecondaryDataUpdates( - $page->getTitle(), /* $old = */ null, /* $recursive = */ false ); - foreach ( $updates as $update ) { - DeferredUpdates::addUpdate( $update ); - DeferredUpdates::doUpdates(); - } + // Defer updates to post-send but then immediately execute deferred updates; + // this is the simplest way to run all updates immediately (including updates + // scheduled by other updates). + $page->doSecondaryDataUpdates( [ + 'defer' => DeferredUpdates::POSTSEND, + 'recursive' => false, + ] ); + DeferredUpdates::doUpdates(); } /** @@ -456,7 +454,7 @@ class RefreshLinks extends Maintenance { __METHOD__, [ 'ORDER BY' => [ 'cl_timestamp', 'cl_from' ], - 'LIMIT' => $this->mBatchSize, + 'LIMIT' => $this->getBatchSize(), ] ); @@ -470,7 +468,7 @@ class RefreshLinks extends Maintenance { self::fixLinksFromArticle( $row->page_id ); } - } while ( $res->numRows() == $this->mBatchSize ); + } while ( $res->numRows() == $this->getBatchSize() ); } /** @@ -485,9 +483,9 @@ class RefreshLinks extends Maintenance { if ( isset( $cats[$categoryKey] ) ) { return $cats[$categoryKey]['cats']; } - $this->error( "Unknown tracking category {$categoryKey}\n", true ); + $this->fatalError( "Unknown tracking category {$categoryKey}\n" ); } } -$maintClass = 'RefreshLinks'; +$maintClass = RefreshLinks::class; require_once RUN_MAINTENANCE_IF_MAIN;