Merge "Maintenance: init a user preference based on another preference"
[lhc/web/wiklou.git] / includes / specials / SpecialLog.php
index a164c1e..195d08b 100644 (file)
@@ -37,6 +37,7 @@ class SpecialLog extends SpecialPage {
                $this->setHeaders();
                $this->outputHeader();
                $this->getOutput()->addModules( 'mediawiki.userSuggest' );
+               $this->addHelpLink( 'Help:Log' );
 
                $opts = new FormOptions;
                $opts->add( 'type', '' );
@@ -49,6 +50,7 @@ class SpecialLog extends SpecialPage {
                $opts->add( 'offset', '' );
                $opts->add( 'dir', '' );
                $opts->add( 'offender', '' );
+               $opts->add( 'subtype', '' );
 
                // Set values
                $opts->fetchValuesFromRequest( $this->getRequest() );
@@ -76,25 +78,25 @@ class SpecialLog extends SpecialPage {
                }
 
                # Handle type-specific inputs
-               $qc = array();
+               $qc = [];
                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() );
+                               $qc = [ '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() );
+                               $qc = [ 'ls_field' => 'target_author_ip', 'ls_value' => $offender->getName() ];
                        }
                } else {
                        // Allow extensions to add relations to their search types
                        Hooks::run(
                                'SpecialLogAddLogSearchRelations',
-                               array( $opts->getValue( 'type' ), $this->getRequest(), &$qc )
+                               [ $opts->getValue( 'type' ), $this->getRequest(), &$qc ]
                        );
                }
 
                # Some log types are only for a 'User:' title but we might have been given
                # only the username instead of the full title 'User:username'. This part try
-               # to lookup for a user by that name and eventually fix user input. See bug 1697.
+               # to lookup for a user by that name and eventually fix user input. See T3697.
                if ( in_array( $opts->getValue( 'type' ), self::getLogTypesOnUser() ) ) {
                        # ok we have a type of log which expect a user title.
                        $target = Title::newFromText( $opts->getValue( 'page' ) );
@@ -122,13 +124,13 @@ class SpecialLog extends SpecialPage {
                if ( $types !== null ) {
                        return $types;
                }
-               $types = array(
+               $types = [
                        'block',
                        'newusers',
                        'rights',
-               );
+               ];
 
-               Hooks::run( 'GetLogTypesOnUser', array( &$types ) );
+               Hooks::run( 'GetLogTypesOnUser', [ &$types ] );
                return $types;
        }
 
@@ -146,8 +148,9 @@ class SpecialLog extends SpecialPage {
 
        private function parseParams( FormOptions $opts, $par ) {
                # Get parameters
-               $parms = explode( '/', ( $par = ( $par !== null ) ? $par : '' ) );
-               $symsForAll = array( '*', 'all' );
+               $par = $par !== null ? $par : '';
+               $parms = explode( '/', $par );
+               $symsForAll = [ '*', 'all' ];
                if ( $parms[0] != '' &&
                        ( in_array( $par, $this->getConfig()->get( 'LogTypes' ) ) || in_array( $par, $symsForAll ) )
                ) {
@@ -167,6 +170,7 @@ class SpecialLog extends SpecialPage {
                        null,
                        LogEventsList::USE_CHECKBOXES
                );
+
                $pager = new LogPager(
                        $loglist,
                        $opts->getValue( 'type' ),
@@ -176,26 +180,29 @@ class SpecialLog extends SpecialPage {
                        $extraConds,
                        $opts->getValue( 'year' ),
                        $opts->getValue( 'month' ),
-                       $opts->getValue( 'tagfilter' )
+                       $opts->getValue( 'tagfilter' ),
+                       $opts->getValue( 'subtype' )
                );
 
                $this->addHeader( $opts->getValue( 'type' ) );
 
                # Set relevant user
                if ( $pager->getPerformer() ) {
-                       $this->getSkin()->setRelevantUser( User::newFromName( $pager->getPerformer() ) );
+                       $performerUser = User::newFromName( $pager->getPerformer(), false );
+                       $this->getSkin()->setRelevantUser( $performerUser );
                }
 
                # Show form options
                $loglist->showOptions(
                        $pager->getType(),
-                       $opts->getValue( 'user' ),
+                       $pager->getPerformer(),
                        $pager->getPage(),
                        $pager->getPattern(),
                        $pager->getYear(),
                        $pager->getMonth(),
                        $pager->getFilterParams(),
-                       $opts->getValue( 'tagfilter' )
+                       $pager->getTagFilter(),
+                       $pager->getAction()
                );
 
                # Insert list
@@ -228,7 +235,7 @@ class SpecialLog extends SpecialPage {
                # Show button to hide log entries and/or edit change tags
                $s = Html::openElement(
                        'form',
-                       array( 'action' => wfScript(), 'id' => 'mw-log-deleterevision-submit' )
+                       [ 'action' => wfScript(), 'id' => 'mw-log-deleterevision-submit' ]
                ) . "\n";
                $s .= Html::hidden( 'action', 'historysubmit' ) . "\n";
                $s .= Html::hidden( 'type', 'logging' ) . "\n";
@@ -237,53 +244,29 @@ class SpecialLog extends SpecialPage {
                if ( $canRevDelete ) {
                        $buttons .= Html::element(
                                'button',
-                               array(
+                               [
                                        'type' => 'submit',
                                        'name' => 'revisiondelete',
                                        'value' => '1',
                                        'class' => "deleterevision-log-submit mw-log-deleterevision-button"
-                               ),
+                               ],
                                $this->msg( 'showhideselectedlogentries' )->text()
                        ) . "\n";
                }
                if ( $showTagEditUI ) {
                        $buttons .= Html::element(
                                'button',
-                               array(
+                               [
                                        'type' => 'submit',
                                        'name' => 'editchangetags',
                                        'value' => '1',
                                        'class' => "editchangetags-log-submit mw-log-editchangetags-button"
-                               ),
+                               ],
                                $this->msg( 'log-edit-tags' )->text()
                        ) . "\n";
                }
 
-               // Select: All, None, Invert
-               $links = array();
-               $links[] = Html::element(
-                       'a', array( 'href' => '#', 'class' => 'mw-checkbox-all' ),
-                       $this->msg( 'checkbox-all' )->text()
-               );
-               $links[] = Html::element(
-                       'a', array( 'href' => '#', 'class' => 'mw-checkbox-none' ),
-                       $this->msg( 'checkbox-none' )->text()
-               );
-               $links[] = Html::element(
-                       'a', array( 'href' => '#', 'class' => 'mw-checkbox-invert' ),
-                       $this->msg( 'checkbox-invert' )->text()
-               );
-
-               $buttons .= Html::rawElement( 'p',
-                       array(
-                               'class' => "mw-checkbox-toggle-controls"
-                       ),
-                       $this->msg( 'checkbox-select' )
-                               ->rawParams( $this->getLanguage()->commaList( $links ) )->escaped()
-               );
-
-               $this->getOutput()->addModules( 'mediawiki.checkboxtoggle' );
-               $this->getOutput()->addModuleStyles( 'mediawiki.checkboxtoggle.styles' );
+               $buttons .= ( new ListToggle( $this->getOutput() ) )->getHTML();
 
                $s .= $buttons . $formcontents . $buttons;
                $s .= Html::closeElement( 'form' );