mediawiki-extensions-AbuseF.../special/SpecialAbuseFilter.php

120 lines
3 KiB
PHP
Raw Normal View History

2008-06-27 06:18:51 +00:00
<?php
if ( !defined( 'MEDIAWIKI' ) ) {
2008-06-27 06:18:51 +00:00
die();
}
2008-06-27 06:18:51 +00:00
class SpecialAbuseFilter extends SpecialPage {
var $mSkin;
public function __construct() {
2008-06-27 06:18:51 +00:00
parent::__construct( 'AbuseFilter', 'abusefilter-view' );
}
public function execute( $subpage ) {
global $wgUser, $wgOut, $wgRequest;
$wgOut->addModuleStyles( 'ext.abuseFilter' );
$view = 'AbuseFilterViewList';
2008-06-27 06:18:51 +00:00
$this->setHeaders();
$this->loadParameters( $subpage );
$wgOut->setPageTitle( wfMsg( 'abusefilter-management' ) );
2008-06-27 06:18:51 +00:00
// Are we allowed?
if ( !$wgUser->isAllowed( 'abusefilter-view' ) ) {
$this->displayRestrictionError();
2008-06-27 06:18:51 +00:00
return;
}
if ( $wgRequest->getVal( 'result' ) == 'success' ) {
$wgOut->setSubtitle( wfMsg( 'abusefilter-edit-done-subtitle' ) );
$changedFilter = intval( $wgRequest->getVal( 'changedfilter' ) );
$wgOut->wrapWikiMsg( '<p class="success">$1</p>',
array( 'abusefilter-edit-done', $changedFilter ) );
}
2008-06-27 06:18:51 +00:00
$this->mSkin = $wgUser->getSkin();
$this->mHistoryID = null;
$pageType = 'home';
$params = explode( '/', $subpage );
// Filter by removing blanks.
foreach ( $params as $index => $param ) {
if ( $param === '' ) {
unset( $params[$index] );
}
}
$params = array_values( $params );
if ( $subpage == 'tools' ) {
$view = 'AbuseFilterViewTools';
$pageType = 'tools';
}
if ( count( $params ) == 2 && $params[0] == 'revert' && is_numeric( $params[1] ) ) {
$this->mFilter = $params[1];
$view = 'AbuseFilterViewRevert';
$pageType = 'revert';
}
if ( count( $params ) && $params[0] == 'test' ) {
$view = 'AbuseFilterViewTestBatch';
$pageType = 'test';
}
if ( count( $params ) && $params[0] == 'examine' ) {
$view = 'AbuseFilterViewExamine';
$pageType = 'examine';
}
if ( !empty( $params[0] ) && ( $params[0] == 'history' || $params[0] == 'log' ) ) {
$pageType = '';
if ( count( $params ) == 1 ) {
$view = 'AbuseFilterViewHistory';
$pageType = 'recentchanges';
} elseif ( count( $params ) == 2 ) {
# Second param is a filter ID
$view = 'AbuseFilterViewHistory';
$this->mFilter = $params[1];
} elseif ( count( $params ) == 4 && $params[2] == 'item' ) {
$this->mFilter = $params[1];
$this->mHistoryID = $params[3];
$view = 'AbuseFilterViewEdit';
} elseif ( count( $params ) == 5 && $params[2] == 'diff' ) {
// Special:AbuseFilter/history/<filter>/diff/<oldid>/<newid>
$view = 'AbuseFilterViewDiff';
}
2008-06-27 06:18:51 +00:00
}
if ( is_numeric( $subpage ) || $subpage == 'new' ) {
$this->mFilter = $subpage;
$view = 'AbuseFilterViewEdit';
2009-03-17 14:09:17 +00:00
$pageType = 'edit';
}
if ( $subpage == 'import' ) {
$view = 'AbuseFilterViewImport';
$pageType = 'import';
}
// Links at the top
AbuseFilter::addNavigationLinks( $wgOut, $this->mSkin, $pageType );
2008-06-27 09:26:54 +00:00
$v = new $view( $this, $params );
$v->show();
}
2008-06-27 06:18:51 +00:00
function loadParameters( $subpage ) {
2008-06-27 09:26:54 +00:00
global $wgRequest;
2008-06-27 06:18:51 +00:00
$filter = $subpage;
if ( !is_numeric( $filter ) && $filter != 'new' ) {
2008-06-27 06:18:51 +00:00
$filter = $wgRequest->getIntOrNull( 'wpFilter' );
}
$this->mFilter = $filter;
}
}