summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php')
-rw-r--r--www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php134
1 files changed, 134 insertions, 0 deletions
diff --git a/www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php b/www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php
new file mode 100644
index 00000000..1a4cbf4d
--- /dev/null
+++ b/www/wiki/extensions/AbuseFilter/includes/special/SpecialAbuseFilter.php
@@ -0,0 +1,134 @@
+<?php
+
+class SpecialAbuseFilter extends SpecialPage {
+ public $mFilter, $mHistoryID;
+
+ public function __construct() {
+ parent::__construct( 'AbuseFilter', 'abusefilter-view' );
+ }
+
+ public function doesWrites() {
+ return true;
+ }
+
+ public function execute( $subpage ) {
+ $out = $this->getOutput();
+ $request = $this->getRequest();
+
+ $out->addModuleStyles( 'ext.abuseFilter' );
+ $view = 'AbuseFilterViewList';
+
+ $this->setHeaders();
+
+ $this->loadParameters( $subpage );
+ $out->setPageTitle( $this->msg( 'abusefilter-management' ) );
+
+ // Are we allowed?
+ $this->checkPermissions();
+
+ if ( $request->getVal( 'result' ) == 'success' ) {
+ $out->setSubtitle( $this->msg( 'abusefilter-edit-done-subtitle' ) );
+ $changedFilter = intval( $request->getVal( 'changedfilter' ) );
+ $changeId = intval( $request->getVal( 'changeid' ) );
+ $out->wrapWikiMsg( '<p class="success">$1</p>',
+ [
+ 'abusefilter-edit-done',
+ $changedFilter,
+ $changeId,
+ $this->getLanguage()->formatNum( $changedFilter )
+ ]
+ );
+ }
+
+ $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';
+ $out->addHelpLink( 'Extension:AbuseFilter/Rules format' );
+ }
+
+ 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';
+ $out->addHelpLink( 'Extension:AbuseFilter/Rules format' );
+ }
+
+ if ( count( $params ) && $params[0] == 'examine' ) {
+ $view = 'AbuseFilterViewExamine';
+ $pageType = 'examine';
+ $out->addHelpLink( 'Extension:AbuseFilter/Rules format' );
+ }
+
+ 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';
+ }
+ }
+
+ if ( is_numeric( $subpage ) || $subpage == 'new' ) {
+ $this->mFilter = $subpage;
+ $view = 'AbuseFilterViewEdit';
+ $pageType = 'edit';
+ }
+
+ if ( $subpage == 'import' ) {
+ $view = 'AbuseFilterViewImport';
+ $pageType = 'import';
+ }
+
+ // Links at the top
+ AbuseFilter::addNavigationLinks(
+ $this->getContext(), $pageType, $this->getLinkRenderer() );
+
+ /** @var AbuseFilterView $v */
+ $v = new $view( $this, $params );
+ $v->show();
+ }
+
+ function loadParameters( $subpage ) {
+ $filter = $subpage;
+
+ if ( !is_numeric( $filter ) && $filter != 'new' ) {
+ $filter = $this->getRequest()->getIntOrNull( 'wpFilter' );
+ }
+ $this->mFilter = $filter;
+ }
+
+ /**
+ * @return string
+ */
+ protected function getGroupName() {
+ return 'wiki';
+ }
+}