X-Git-Url: https://git.cyclocoop.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialLog.php;h=d0c42df5b4917f2a85d437045e8f64a66b791cec;hb=7cf8b3197c58b7c938e33f3eea2e119fa7cf8cf8;hp=1c4f1d792f6307cf577815f11bf33372fb09022e;hpb=130264cbe63b5f6b81a664b7e4144f5a830ba1e7;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialLog.php b/includes/specials/SpecialLog.php index 1c4f1d792f..d0c42df5b4 100644 --- a/includes/specials/SpecialLog.php +++ b/includes/specials/SpecialLog.php @@ -30,11 +30,24 @@ */ class SpecialLog extends SpecialPage { + /** + * List log type for which the target is a user + * Thus if the given target is in NS_MAIN we can alter it to be an NS_USER + * Title user instead. + */ + private $typeOnUser = array( + 'block', + 'newusers', + 'right', + ); + public function __construct() { parent::__construct( 'Log' ); } public function execute( $par ) { + global $wgLogRestrictions; + $this->setHeaders(); $this->outputHeader(); @@ -62,7 +75,13 @@ class SpecialLog extends SpecialPage { $opts->setValue( 'month', '' ); } - if ( !LogPage::isLogType( $opts->getValue( 'type' ) ) ) { + // Reset the log type to default (nothing) if it's invalid or if the + // user does not possess the right to view it + $type = $opts->getValue( 'type' ); + if ( !LogPage::isLogType( $type ) + || ( isset( $wgLogRestrictions[$type] ) + && !$this->getUser()->isAllowed( $wgLogRestrictions[$type] ) ) + ) { $opts->setValue( 'type', '' ); } @@ -77,6 +96,20 @@ class SpecialLog extends SpecialPage { } } + # 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. + if( in_array( $opts->getValue( 'type' ), $this->typeOnUser ) ) { + # ok we have a type of log which expect a user title. + $target = Title::newFromText( $opts->getValue( 'page' ) ); + if( $target->getNamespace() === NS_MAIN ) { + # User forgot to add 'User:', we are adding it for him + $opts->setValue( 'page', + Title::makeTitleSafe( NS_USER, $opts->getValue( 'page' ) ) + ); + } + } + $this->show( $opts, $qc ); }