From 9db190c7e736ec8d063187d4241b59feaf7dc2d1 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Wed, 22 Jun 2011 11:28:20 +0200 Subject: update to MediaWiki 1.17.0 --- includes/specials/SpecialLog.php | 185 ++++++++++++++++++++++++--------------- 1 file changed, 113 insertions(+), 72 deletions(-) (limited to 'includes/specials/SpecialLog.php') diff --git a/includes/specials/SpecialLog.php b/includes/specials/SpecialLog.php index d1ccc8c4..a2af8de5 100644 --- a/includes/specials/SpecialLog.php +++ b/includes/specials/SpecialLog.php @@ -1,86 +1,127 @@ getText( 'user' ); - } else if ( count( $parms ) == 2 ) { - $type = $parms[0]; - $user = $parms[1]; - } else { - $type = $wgRequest->getVal( 'type' ); - $user = ( $par != '' ) ? $par : $wgRequest->getText( 'user' ); +class SpecialLog extends SpecialPage { + + public function __construct() { + parent::__construct( 'Log' ); } - $title = $wgRequest->getText( 'page' ); - $pattern = $wgRequest->getBool( 'pattern' ); - $y = $wgRequest->getIntOrNull( 'year' ); - $m = $wgRequest->getIntOrNull( 'month' ); - $tagFilter = $wgRequest->getVal( 'tagfilter' ); - # Don't let the user get stuck with a certain date - $skip = $wgRequest->getText( 'offset' ) || $wgRequest->getText( 'dir' ) == 'prev'; - if( $skip ) { - $y = ''; - $m = ''; + + public function execute( $par ) { + global $wgRequest; + + $this->setHeaders(); + $this->outputHeader(); + + $opts = new FormOptions; + $opts->add( 'type', '' ); + $opts->add( 'user', '' ); + $opts->add( 'page', '' ); + $opts->add( 'pattern', false ); + $opts->add( 'year', null, FormOptions::INTNULL ); + $opts->add( 'month', null, FormOptions::INTNULL ); + $opts->add( 'tagfilter', '' ); + $opts->add( 'offset', '' ); + $opts->add( 'dir', '' ); + $opts->add( 'offender', '' ); + + // Set values + $opts->fetchValuesFromRequest( $wgRequest ); + if ( $par ) { + $this->parseParams( $opts, (string)$par ); + } + + # Don't let the user get stuck with a certain date + if ( $opts->getValue( 'offset' ) || $opts->getValue( 'dir' ) == 'prev' ) { + $opts->setValue( 'year', '' ); + $opts->setValue( 'month', '' ); + } + + # Handle type-specific inputs + $qc = array(); + if ( $opts->getValue( 'type' ) == 'suppress' ) { + $offender = User::newFromName( $opts->getValue( 'offender' ), false ); + if ( $offender && $offender->getId() > 0 ) { + $qc = array( 'ls_field' => 'target_author_id', 'ls_value' => $offender->getId() ); + } elseif ( $offender && IP::isIPAddress( $offender->getName() ) ) { + $qc = array( 'ls_field' => 'target_author_ip', 'ls_value' => $offender->getName() ); + } + } + + $this->show( $opts, $qc ); } - # Handle type-specific inputs - $qc = array(); - if( $type == 'suppress' ) { - $offender = User::newFromName( $wgRequest->getVal('offender'), false ); - if( $offender && $offender->getId() > 0 ) { - $qc = array( 'ls_field' => 'target_author_id', 'ls_value' => $offender->getId() ); - } else if( $offender && IP::isIPAddress( $offender->getName() ) ) { - $qc = array( 'ls_field' => 'target_author_ip', 'ls_value' => $offender->getName() ); + + private function parseParams( FormOptions $opts, $par ) { + global $wgLogTypes; + + # Get parameters + $parms = explode( '/', ($par = ( $par !== null ) ? $par : '' ) ); + $symsForAll = array( '*', 'all' ); + if ( $parms[0] != '' && ( in_array( $par, $wgLogTypes ) || in_array( $par, $symsForAll ) ) ) { + $opts->setValue( 'type', $par ); + } elseif ( count( $parms ) == 2 ) { + $opts->setValue( 'type', $parms[0] ); + $opts->setValue( 'user', $parms[1] ); + } elseif ( $par != '' ) { + $opts->setValue( 'user', $par ); } } - # Create a LogPager item to get the results and a LogEventsList item to format them... - $loglist = new LogEventsList( $wgUser->getSkin(), $wgOut, 0 ); - $pager = new LogPager( $loglist, $type, $user, $title, $pattern, $qc, $y, $m, $tagFilter ); - # Set title and add header - $loglist->showHeader( $pager->getType() ); - # Show form options - $loglist->showOptions( $pager->getType(), $pager->getUser(), $pager->getPage(), $pager->getPattern(), - $pager->getYear(), $pager->getMonth(), $pager->getFilterParams(), $tagFilter ); - # Insert list - $logBody = $pager->getBody(); - if( $logBody ) { - $wgOut->addHTML( - $pager->getNavigationBar() . - $loglist->beginLogEventsList() . - $logBody . - $loglist->endLogEventsList() . - $pager->getNavigationBar() - ); - } else { - $wgOut->addWikiMsg( 'logempty' ); + + private function show( FormOptions $opts, array $extraConds ) { + global $wgOut, $wgUser; + + # Create a LogPager item to get the results and a LogEventsList item to format them... + $loglist = new LogEventsList( $wgUser->getSkin(), $wgOut, 0 ); + $pager = new LogPager( $loglist, $opts->getValue( 'type' ), $opts->getValue( 'user' ), + $opts->getValue( 'page' ), $opts->getValue( 'pattern' ), $extraConds, $opts->getValue( 'year' ), + $opts->getValue( 'month' ), $opts->getValue( 'tagfilter' ) ); + + # Set title and add header + $loglist->showHeader( $pager->getType() ); + + # Show form options + $loglist->showOptions( $pager->getType(), $pager->getUser(), $pager->getPage(), $pager->getPattern(), + $pager->getYear(), $pager->getMonth(), $pager->getFilterParams(), $opts->getValue( 'tagfilter' ) ); + + # Insert list + $logBody = $pager->getBody(); + if ( $logBody ) { + $wgOut->addHTML( + $pager->getNavigationBar() . + $loglist->beginLogEventsList() . + $logBody . + $loglist->endLogEventsList() . + $pager->getNavigationBar() + ); + } else { + $wgOut->addWikiMsg( 'logempty' ); + } } } -- cgit v1.2.3-54-g00ecf