From 14ce85f58c0997409c4e6c65aefad09345a5c348 Mon Sep 17 00:00:00 2001 From: daniel Date: Tue, 21 Aug 2012 17:54:52 +0200 Subject: [PATCH] Make LinkFilter handle Content objects Change-Id: Iced1c83642143faa79a5461ae6278267e0595aa9 --- includes/LinkFilter.php | 15 ++++++++++++--- maintenance/cleanupSpam.php | 13 +++++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/includes/LinkFilter.php b/includes/LinkFilter.php index 214f49591f..b19f6c4de2 100644 --- a/includes/LinkFilter.php +++ b/includes/LinkFilter.php @@ -34,13 +34,22 @@ class LinkFilter { /** - * Check whether $text contains a link to $filterEntry + * Check whether $content contains a link to $filterEntry * - * @param $text String: text to check + * @param $content Content: content to check * @param $filterEntry String: domainparts, see makeRegex() for more details * @return Integer: 0 if no match or 1 if there's at least one match */ - static function matchEntry( $text, $filterEntry ) { + static function matchEntry( Content $content, $filterEntry ) { + if ( !( $content instanceof TextContent ) ) { + //TODO: handle other types of content too. + // Maybe create ContentHandler::matchFilter( LinkFilter ). + // Think about a common base class for LinkFilter and MagicWord. + return 0; + } + + $text = $content->getNativeData(); + $regex = LinkFilter::makeRegex( $filterEntry ); return preg_match( $regex, $text ); } diff --git a/maintenance/cleanupSpam.php b/maintenance/cleanupSpam.php index 03a36f559c..bbe0609267 100644 --- a/maintenance/cleanupSpam.php +++ b/maintenance/cleanupSpam.php @@ -103,8 +103,8 @@ class CleanupSpam extends Maintenance { $rev = Revision::newFromTitle( $title ); $currentRevId = $rev->getId(); - //FIXME: LinkFilter needs to handle Content objects! Or rather, ContentHandler needs to provide the appropriate LinkFilter. - while ( $rev && ( $rev->isDeleted( Revision::DELETED_TEXT ) || LinkFilter::matchEntry( $rev->getText() , $domain ) ) ) { + while ( $rev && ( $rev->isDeleted( Revision::DELETED_TEXT ) + || LinkFilter::matchEntry( $rev->getContent( Revision::RAW ), $domain ) ) ) { $rev = $rev->getPrevious(); } @@ -118,8 +118,10 @@ class CleanupSpam extends Maintenance { $page = WikiPage::factory( $title ); if ( $rev ) { // Revert to this revision + $content = $rev->getContent( Revision::RAW ); + $this->output( "reverting\n" ); - $page->doEdit( $rev->getText(), wfMessage( 'spam_reverting', $domain )->inContentLanguage()->text(), + $page->doEditContent( $content, wfMessage( 'spam_reverting', $domain )->inContentLanguage()->text(), EDIT_UPDATE, $rev->getId() ); } elseif ( $this->hasOption( 'delete' ) ) { // Didn't find a non-spammy revision, blank the page @@ -127,8 +129,11 @@ class CleanupSpam extends Maintenance { $page->doDeleteArticle( wfMessage( 'spam_deleting', $domain )->inContentLanguage()->text() ); } else { // Didn't find a non-spammy revision, blank the page + $handler = ContentHandler::getForTitle( $title ); + $content = $handler->makeEmptyContent(); + $this->output( "blanking\n" ); - $page->doEdit( '', wfMessage( 'spam_blanking', $domain )->inContentLanguage()->text() ); + $page->doEditContent( $content, wfMessage( 'spam_blanking', $domain )->inContentLanguage()->text() ); } $dbw->commit( __METHOD__ ); } -- 2.20.1