* @param $id int The page_id of the redirect
*/
private function fixRedirect( $id ) {
- $title = Title::newFromID( $id );
+ $page = WikiPage::newFromID( $id );
$dbw = wfGetDB( DB_MASTER );
- if ( is_null( $title ) ) {
+ if ( $page === null ) {
// This page doesn't exist (any more)
// Delete any redirect table entry for it
$dbw->delete( 'redirect', array( 'rd_from' => $id ),
__METHOD__ );
return;
}
- $article = new Article( $title );
- $rt = $article->followRedirect();
+ $rt = $page->getRedirectTarget();
- if ( !$rt || !is_object( $rt ) ) {
- // $title is not a redirect
+ if ( $rt === null ) {
+ // The page is not a redirect
// Delete any redirect table entry for it
$dbw->delete( 'redirect', array( 'rd_from' => $id ),
__METHOD__ );
- } else {
- $article->updateRedirectOn( $dbw, $rt );
}
}
* @param $id int The page_id
*/
public static function fixLinksFromArticle( $id ) {
- global $wgParser;
+ global $wgParser, $wgContLang;
- $title = Title::newFromID( $id );
- $dbw = wfGetDB( DB_MASTER );
+ $page = WikiPage::newFromID( $id );
LinkCache::singleton()->clear();
- if ( is_null( $title ) ) {
+ if ( $page === null ) {
return;
}
- $revision = Revision::newFromTitle( $title );
- if ( !$revision ) {
+ $text = $page->getRawText();
+ if ( $text === false ) {
return;
}
- $dbw->begin();
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin( __METHOD__ );
- $options = new ParserOptions;
- $parserOutput = $wgParser->parse( $revision->getText(), $title, $options, true, true, $revision->getId() );
- $update = new LinksUpdate( $title, $parserOutput, false );
+ $options = ParserOptions::newFromUserAndLang( new User, $wgContLang );
+ $parserOutput = $wgParser->parse( $text, $page->getTitle(), $options, true, true, $page->getLatest() );
+ $update = new LinksUpdate( $page->getTitle(), $parserOutput, false );
$update->doUpdate();
- $dbw->commit();
+
+ $dbw->commit( __METHOD__ );
}
/**
* Removes non-existing links from pages from pagelinks, imagelinks,
* categorylinks, templatelinks, externallinks, interwikilinks, langlinks and redirect tables.
*
- * @param $maxLag
- * @param $batchSize The size of deletion batches
+ * @param $maxLag int
+ * @param $batchSize int The size of deletion batches
*
* @author Merlijn van Deen <valhallasw@arctus.nl>
*/
'iwlinks' => 'iwl_from',
'langlinks' => 'll_from',
'redirect' => 'rd_from',
+ 'page_props' => 'pp_page',
);
foreach ( $linksTables as $table => $field ) {
$dbw->delete( $table, array( $field => $list ), __METHOD__ );
}
$this->output( "\n" );
+ wfWaitForSlaves();
}
$lb->closeAll();
}