* @ingroup Maintenance
*/
+use MediaWiki\Revision\RevisionRecord;
+
require_once __DIR__ . '/Maintenance.php';
/**
// Hack: Grant bot rights so we don't flood RecentChanges
$wgUser->addGroup( 'bot' );
- $spec = $this->getArg();
+ $spec = $this->getArg( 0 );
- $likes = [];
+ $protConds = [];
foreach ( [ 'http://', 'https://' ] as $prot ) {
- $like = LinkFilter::makeLikeArray( $spec, $prot );
- if ( !$like ) {
+ $conds = LinkFilter::getQueryConditions( $spec, [ 'protocol' => $prot ] );
+ if ( !$conds ) {
$this->fatalError( "Not a valid hostname specification: $spec" );
}
- $likes[$prot] = $like;
+ $protConds[$prot] = $conds;
}
if ( $this->hasOption( 'all' ) ) {
// Clean up spam on all wikis
$this->output( "Finding spam on " . count( $wgLocalDatabases ) . " wikis\n" );
$found = false;
- foreach ( $wgLocalDatabases as $wikiID ) {
- /** @var $dbr Database */
- $dbr = $this->getDB( DB_REPLICA, [], $wikiID );
+ foreach ( $wgLocalDatabases as $wikiId ) {
+ /** @var Database $dbr */
+ $dbr = $this->getDB( DB_REPLICA, [], $wikiId );
- foreach ( $likes as $like ) {
+ foreach ( $protConds as $conds ) {
$count = $dbr->selectField(
'externallinks',
'COUNT(*)',
- [ 'el_index' . $dbr->buildLike( $like ) ],
+ $conds,
__METHOD__
);
if ( $count ) {
$found = true;
$cmd = wfShellWikiCmd(
"$IP/maintenance/cleanupSpam.php",
- [ '--wiki', $wikiID, $spec ]
+ [ '--wiki', $wikiId, $spec ]
);
- passthru( "$cmd | sed 's/^/$wikiID: /'" );
+ passthru( "$cmd | sed 's/^/$wikiId: /'" );
}
}
}
// Clean up spam on this wiki
$count = 0;
- /** @var $dbr Database */
+ /** @var Database $dbr */
$dbr = $this->getDB( DB_REPLICA );
- foreach ( $likes as $prot => $like ) {
+ foreach ( $protConds as $prot => $conds ) {
$res = $dbr->select(
'externallinks',
[ 'DISTINCT el_from' ],
- [ 'el_index' . $dbr->buildLike( $like ) ],
+ $conds,
__METHOD__
);
$count = $dbr->numRows( $res );
$rev = Revision::newFromTitle( $title );
$currentRevId = $rev->getId();
- while ( $rev && ( $rev->isDeleted( Revision::DELETED_TEXT )
- || LinkFilter::matchEntry( $rev->getContent( Revision::RAW ), $domain, $protocol ) )
+ while ( $rev && ( $rev->isDeleted( RevisionRecord::DELETED_TEXT )
+ || LinkFilter::matchEntry( $rev->getContent( RevisionRecord::RAW ), $domain, $protocol ) )
) {
$rev = $rev->getPrevious();
}
$page = WikiPage::factory( $title );
if ( $rev ) {
// Revert to this revision
- $content = $rev->getContent( Revision::RAW );
+ $content = $rev->getContent( RevisionRecord::RAW );
$this->output( "reverting\n" );
$page->doEditContent(