diff options
Diffstat (limited to 'maintenance/refreshLinks.php')
-rw-r--r-- | maintenance/refreshLinks.php | 88 |
1 files changed, 44 insertions, 44 deletions
diff --git a/maintenance/refreshLinks.php b/maintenance/refreshLinks.php index 863dd022..144e96c5 100644 --- a/maintenance/refreshLinks.php +++ b/maintenance/refreshLinks.php @@ -18,7 +18,7 @@ * @ingroup Maintenance */ -require_once( dirname(__FILE__) . '/Maintenance.php' ); +require_once( dirname( __FILE__ ) . '/Maintenance.php' ); class RefreshLinks extends Maintenance { public function __construct() { @@ -35,10 +35,10 @@ class RefreshLinks extends Maintenance { } public function execute() { - if( !$this->hasOption( 'dfn-only' ) ) { + $max = $this->getOption( 'm', 0 ); + if ( !$this->hasOption( 'dfn-only' ) ) { $start = $this->getArg( 0, 1 ); $new = $this->getOption( 'new-only', false ); - $max = $this->getOption( 'm', false ); $end = $this->getOption( 'e', 0 ); $redir = $this->getOption( 'redirects-only', false ); $oldRedir = $this->getOption( 'old-redirects-only', false ); @@ -56,7 +56,7 @@ class RefreshLinks extends Maintenance { * @param $redirectsOnly bool Only fix redirects * @param $oldRedirectsOnly bool Only fix redirects without redirect entries */ - private function doRefreshLinks( $start, $newOnly = false, $maxLag = false, + private function doRefreshLinks( $start, $newOnly = false, $maxLag = false, $end = 0, $redirectsOnly = false, $oldRedirectsOnly = false ) { global $wgUser, $wgParser, $wgUseTidy; @@ -65,10 +65,10 @@ class RefreshLinks extends Maintenance { $start = intval( $start ); # Don't generate TeX PNGs (lack of a sensible current directory causes errors anyway) - $wgUser->setOption('math', MW_MATH_SOURCE); + $wgUser->setOption( 'math', MW_MATH_SOURCE ); # Don't generate extension images (e.g. Timeline) - if( method_exists( $wgParser, "clearTagHooks" ) ) { + if ( method_exists( $wgParser, "clearTagHooks" ) ) { $wgParser->clearTagHooks(); } @@ -77,28 +77,29 @@ class RefreshLinks extends Maintenance { $what = $redirectsOnly ? "redirects" : "links"; - if( $oldRedirectsOnly ) { + if ( $oldRedirectsOnly ) { # This entire code path is cut-and-pasted from below. Hurrah. $res = $dbr->query( - "SELECT page_id ". - "FROM page ". - "LEFT JOIN redirect ON page_id=rd_from ". - "WHERE page_is_redirect=1 AND rd_from IS NULL AND ". - ($end == 0 ? "page_id >= $start" - : "page_id BETWEEN $start AND $end"), + "SELECT page_id " . + "FROM page " . + "LEFT JOIN redirect ON page_id=rd_from " . + "WHERE page_is_redirect=1 AND rd_from IS NULL AND " . + ( $end == 0 ? "page_id >= $start" + : "page_id BETWEEN $start AND $end" ), __METHOD__ ); $num = $dbr->numRows( $res ); $this->output( "Refreshing $num old redirects from $start...\n" ); - foreach( $res as $row ) { + $i = 0; + foreach ( $res as $row ) { if ( !( ++$i % $reportingInterval ) ) { $this->output( "$i\n" ); wfWaitForSlaves( $maxLag ); } $this->fixRedirect( $row->page_id ); } - } elseif( $newOnly ) { + } elseif ( $newOnly ) { $this->output( "Refreshing $what from " ); $res = $dbr->select( 'page', array( 'page_id' ), @@ -109,17 +110,17 @@ class RefreshLinks extends Maintenance { ); $num = $dbr->numRows( $res ); $this->output( "$num new articles...\n" ); - + $i = 0; foreach ( $res as $row ) { if ( !( ++$i % $reportingInterval ) ) { $this->output( "$i\n" ); wfWaitForSlaves( $maxLag ); } - if($redirectsOnly) + if ( $redirectsOnly ) $this->fixRedirect( $row->page_id ); else - $this->fixLinksFromArticle( $row->page_id ); + self::fixLinksFromArticle( $row->page_id ); } } else { if ( !$end ) { @@ -129,27 +130,27 @@ class RefreshLinks extends Maintenance { } $this->output( "Refreshing redirects table.\n" ); $this->output( "Starting from page_id $start of $end.\n" ); - - for ($id = $start; $id <= $end; $id++) { - - if ( !($id % $reportingInterval) ) { + + for ( $id = $start; $id <= $end; $id++ ) { + + if ( !( $id % $reportingInterval ) ) { $this->output( "$id\n" ); wfWaitForSlaves( $maxLag ); } $this->fixRedirect( $id ); } - if(!$redirectsOnly) { + if ( !$redirectsOnly ) { $this->output( "Refreshing links table.\n" ); $this->output( "Starting from page_id $start of $end.\n" ); - for ($id = $start; $id <= $end; $id++) { - - if ( !($id % $reportingInterval) ) { + for ( $id = $start; $id <= $end; $id++ ) { + + if ( !( $id % $reportingInterval ) ) { $this->output( "$id\n" ); wfWaitForSlaves( $maxLag ); } - $this->fixLinksFromArticle( $id ); + self::fixLinksFromArticle( $id ); } } } @@ -159,12 +160,12 @@ class RefreshLinks extends Maintenance { * Update the redirect entry for a given page * @param $id int The page_id of the redirect */ - private function fixRedirect( $id ){ + private function fixRedirect( $id ) { global $wgTitle, $wgArticle; - + $wgTitle = Title::newFromID( $id ); $dbw = wfGetDB( DB_MASTER ); - + if ( is_null( $wgTitle ) ) { // This page doesn't exist (any more) // Delete any redirect table entry for it @@ -172,17 +173,17 @@ class RefreshLinks extends Maintenance { __METHOD__ ); return; } - $wgArticle = new Article($wgTitle); - + $wgArticle = new Article( $wgTitle ); + $rt = $wgArticle->followRedirect(); - - if($rt == false || !is_object($rt)) { + + if ( !$rt || !is_object( $rt ) ) { // $wgTitle is not a redirect // Delete any redirect table entry for it $dbw->delete( 'redirect', array( 'rd_from' => $id ), __METHOD__ ); } else { - $wgArticle->updateRedirectOn($dbw,$rt); + $wgArticle->updateRedirectOn( $dbw, $rt ); } } @@ -190,14 +191,13 @@ class RefreshLinks extends Maintenance { * Run LinksUpdate for all links on a given page_id * @param $id int The page_id */ - private function fixLinksFromArticle( $id ) { + public static function fixLinksFromArticle( $id ) { global $wgTitle, $wgParser; $wgTitle = Title::newFromID( $id ); $dbw = wfGetDB( DB_MASTER ); - $linkCache =& LinkCache::singleton(); - $linkCache->clear(); + LinkCache::singleton()->clear(); if ( is_null( $wgTitle ) ) { return; @@ -248,21 +248,21 @@ class RefreshLinks extends Maintenance { // SELECT DISTINCT( $field ) FROM $table LEFT JOIN page ON $field=page_id WHERE page_id IS NULL; $results = $dbr->select( array( $table, 'page' ), $field, - array('page_id' => null ), + array( 'page_id' => null ), __METHOD__, 'DISTINCT', - array( 'page' => array( 'LEFT JOIN', "$field=page_id")) + array( 'page' => array( 'LEFT JOIN', "$field=page_id" ) ) ); $counter = 0; $list = array(); $this->output( "0.." ); - foreach( $results as $row ) { + foreach ( $results as $row ) { $counter++; $list[] = $row->$field; if ( ( $counter % $batchSize ) == 0 ) { - wfWaitForSlaves(5); + wfWaitForSlaves( 5 ); $dbw->delete( $table, array( $field => $list ), __METHOD__ ); $this->output( $counter . ".." ); @@ -270,7 +270,7 @@ class RefreshLinks extends Maintenance { } } $this->output( $counter ); - if (count($list) > 0) { + if ( count( $list ) > 0 ) { $dbw->delete( $table, array( $field => $list ), __METHOD__ ); } $this->output( "\n" ); @@ -280,4 +280,4 @@ class RefreshLinks extends Maintenance { } $maintClass = 'RefreshLinks'; -require_once( DO_MAINTENANCE ); +require_once( RUN_MAINTENANCE_IF_MAIN ); |