* @ingroup SpecialPage
*/
+use MediaWiki\Block\DatabaseBlock;
+use MediaWiki\MediaWikiServices;
use MediaWiki\Widget\DateInputWidget;
/**
// Do not expose the autoblocks, since that may lead to a leak of accounts' IPs,
// and also this will display a totally irrelevant log entry as a current block.
if ( !$this->including() ) {
- // For IP ranges you must give Block::newFromTarget the CIDR string and not a user object.
+ // For IP ranges you must give DatabaseBlock::newFromTarget the CIDR string
+ // and not a user object.
if ( $userObj->isIPRange() ) {
- $block = Block::newFromTarget( $userObj->getName(), $userObj->getName() );
+ $block = DatabaseBlock::newFromTarget( $userObj->getName(), $userObj->getName() );
} else {
- $block = Block::newFromTarget( $userObj, $userObj );
+ $block = DatabaseBlock::newFromTarget( $userObj, $userObj );
}
- if ( !is_null( $block ) && $block->getType() != Block::TYPE_AUTO ) {
- if ( $block->getType() == Block::TYPE_RANGE ) {
- $nt = MWNamespace::getCanonicalName( NS_USER ) . ':' . $block->getTarget();
+ if ( !is_null( $block ) && $block->getType() != DatabaseBlock::TYPE_AUTO ) {
+ if ( $block->getType() == DatabaseBlock::TYPE_RANGE ) {
+ $nt = MediaWikiServices::getInstance()->getNamespaceInfo()->
+ getCanonicalName( NS_USER ) . ':' . $block->getTarget();
}
$out = $this->getOutput(); // showLogExtract() wants first parameter by reference
$username = $target->getName();
$userpage = $target->getUserPage();
$talkpage = $target->getTalkPage();
+ $isIP = IP::isValid( $username );
+ $isRange = IP::isValidRange( $username );
$linkRenderer = $sp->getLinkRenderer();
# No talk pages for IP ranges.
- if ( !IP::isValidRange( $username ) ) {
+ if ( !$isRange ) {
$tools['user-talk'] = $linkRenderer->makeLink(
$talkpage,
$sp->msg( 'sp-contributions-talk' )->text()
);
}
- if ( ( $id !== null ) || ( $id === null && IP::isIPAddress( $username ) ) ) {
- if ( $sp->getUser()->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
- if ( $target->getBlock() && $target->getBlock()->getType() != Block::TYPE_AUTO ) {
- $tools['block'] = $linkRenderer->makeKnownLink( # Change block link
- SpecialPage::getTitleFor( 'Block', $username ),
- $sp->msg( 'change-blocklink' )->text()
- );
- $tools['unblock'] = $linkRenderer->makeKnownLink( # Unblock link
- SpecialPage::getTitleFor( 'Unblock', $username ),
- $sp->msg( 'unblocklink' )->text()
- );
- } else { # User is not blocked
- $tools['block'] = $linkRenderer->makeKnownLink( # Block link
- SpecialPage::getTitleFor( 'Block', $username ),
- $sp->msg( 'blocklink' )->text()
- );
- }
+ if ( $sp->getUser()->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
+ if ( $target->getBlock() && $target->getBlock()->getType() != DatabaseBlock::TYPE_AUTO ) {
+ $tools['block'] = $linkRenderer->makeKnownLink( # Change block link
+ SpecialPage::getTitleFor( 'Block', $username ),
+ $sp->msg( 'change-blocklink' )->text()
+ );
+ $tools['unblock'] = $linkRenderer->makeKnownLink( # Unblock link
+ SpecialPage::getTitleFor( 'Unblock', $username ),
+ $sp->msg( 'unblocklink' )->text()
+ );
+ } else { # User is not blocked
+ $tools['block'] = $linkRenderer->makeKnownLink( # Block link
+ SpecialPage::getTitleFor( 'Block', $username ),
+ $sp->msg( 'blocklink' )->text()
+ );
}
+ }
- # Block log link
- $tools['log-block'] = $linkRenderer->makeKnownLink(
- SpecialPage::getTitleFor( 'Log', 'block' ),
- $sp->msg( 'sp-contributions-blocklog' )->text(),
+ # Block log link
+ $tools['log-block'] = $linkRenderer->makeKnownLink(
+ SpecialPage::getTitleFor( 'Log', 'block' ),
+ $sp->msg( 'sp-contributions-blocklog' )->text(),
+ [],
+ [ 'page' => $userpage->getPrefixedText() ]
+ );
+
+ # Suppression log link (T61120)
+ if ( $sp->getUser()->isAllowed( 'suppressionlog' ) ) {
+ $tools['log-suppression'] = $linkRenderer->makeKnownLink(
+ SpecialPage::getTitleFor( 'Log', 'suppress' ),
+ $sp->msg( 'sp-contributions-suppresslog', $username )->text(),
[],
- [ 'page' => $userpage->getPrefixedText() ]
+ [ 'offender' => $username ]
);
-
- # Suppression log link (T61120)
- if ( $sp->getUser()->isAllowed( 'suppressionlog' ) ) {
- $tools['log-suppression'] = $linkRenderer->makeKnownLink(
- SpecialPage::getTitleFor( 'Log', 'suppress' ),
- $sp->msg( 'sp-contributions-suppresslog', $username )->text(),
- [],
- [ 'offender' => $username ]
- );
- }
}
# Don't show some links for IP ranges
- if ( !IP::isValidRange( $username ) ) {
- # Uploads
- $tools['uploads'] = $linkRenderer->makeKnownLink(
- SpecialPage::getTitleFor( 'Listfiles', $username ),
- $sp->msg( 'sp-contributions-uploads' )->text()
- );
+ if ( !$isRange ) {
+ # Uploads: hide if IPs cannot upload (T220674)
+ if ( !$isIP || $target->isAllowed( 'upload' ) ) {
+ $tools['uploads'] = $linkRenderer->makeKnownLink(
+ SpecialPage::getTitleFor( 'Listfiles', $username ),
+ $sp->msg( 'sp-contributions-uploads' )->text()
+ );
+ }
# Other logs link
+ # Todo: T146628
$tools['logs'] = $linkRenderer->makeKnownLink(
SpecialPage::getTitleFor( 'Log', $username ),
$sp->msg( 'sp-contributions-logs' )->text()
);
# Add link to deleted user contributions for priviledged users
+ # Todo: T183457
if ( $sp->getUser()->isAllowed( 'deletedhistory' ) ) {
$tools['deletedcontribs'] = $linkRenderer->makeKnownLink(
SpecialPage::getTitleFor( 'DeletedContributions', $username ),
[],
Xml::label(
$this->msg( 'namespace' )->text(),
- 'namespace',
- ''
+ 'namespace'
) . "\u{00A0}" .
Html::namespaceSelector(
[ 'selected' => $this->opts['namespace'], 'all' => '', 'in-user-lang' => true ],