X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialDeletedContributions.php;h=0e2215f47ad74d40853d1982962c6cc48ed0eb5f;hb=f17cf7ef0eff66f5286253eebe47d675769db7da;hp=c63c4467183ca7f308002a1efae728a9b23432c1;hpb=8a7004030ef467527e54b9e281eebbe6da42e20c;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialDeletedContributions.php b/includes/specials/SpecialDeletedContributions.php index c63c446718..0e2215f47a 100644 --- a/includes/specials/SpecialDeletedContributions.php +++ b/includes/specials/SpecialDeletedContributions.php @@ -1,4 +1,26 @@ messages[$msg] = wfMsgExt( $msg, array( 'escape') ); + $msgs = array( 'deletionlog', 'undeleteviewlink', 'diff' ); + foreach( $msgs as $msg ) { + $this->messages[$msg] = wfMsgExt( $msg, array( 'escapenoentities') ); } $this->target = $target; $this->namespace = $namespace; @@ -30,7 +53,7 @@ class DeletedContribsPager extends IndexPager { list( $index, $userCond ) = $this->getUserCond(); $conds = array_merge( $userCond, $this->getNamespaceCond() ); // Paranoia: avoid brute force searches (bug 17792) - if( !$wgUser->isAllowed( 'deleterevision' ) ) { + if( !$wgUser->isAllowed( 'deletedhistory' ) ) { $conds[] = $this->mDb->bitAnd('ar_deleted',Revision::DELETED_USER) . ' = 0'; } else if( !$wgUser->isAllowed( 'suppressrevision' ) ) { $conds[] = $this->mDb->bitAnd('ar_deleted',Revision::SUPPRESSED_USER) . @@ -122,7 +145,7 @@ class DeletedContribsPager extends IndexPager { 'user_text' => $row->ar_user_text, 'timestamp' => $row->ar_timestamp, 'minor_edit' => $row->ar_minor_edit, - 'deleted' => $row->ar_deleted, + 'deleted' => $row->ar_deleted, ) ); $page = Title::makeTitle( $row->ar_namespace, $row->ar_title ); @@ -145,7 +168,7 @@ class DeletedContribsPager extends IndexPager { $this->messages['undeleteviewlink'] ); - if( $wgUser->isAllowed('undelete') ) { + if( $wgUser->isAllowed('deletedtext') ) { $last = $sk->linkKnown( $undelete, $this->messages['diff'], @@ -188,28 +211,38 @@ class DeletedContribsPager extends IndexPager { } else { $mflag = ''; } - - if( $wgUser->isAllowed( 'deleterevision' ) ) { - // If revision was hidden from sysops + + // Revision delete link + $canHide = $wgUser->isAllowed( 'deleterevision' ); + if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) { if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) { - $del = Xml::tags( 'span', array( 'class'=>'mw-revdelundel-link' ), - '(' . $this->message['rev-delundel'] . ')' ) . ' '; - // Otherwise, show the link... + $del = $this->mSkin->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops } else { $query = array( 'type' => 'archive', 'target' => $page->getPrefixedDbkey(), 'ids' => $rev->getTimestamp() ); $del = $this->mSkin->revDeleteLink( $query, - $rev->isDeleted( Revision::DELETED_RESTRICTED ) ) . ' '; + $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide ) . ' '; } } else { $del = ''; } - $ret = "{$del}{$link} ({$last}) ({$dellog}) ({$reviewlink}) . . {$mflag} {$pagelink} {$comment}"; + $tools = Html::rawElement( + 'span', + array( 'class' => 'mw-deletedcontribs-tools' ), + wfMsg( 'parentheses', $wgLang->pipeList( array( $last, $dellog, $reviewlink ) ) ) + ); + + $ret = "{$del}{$link} {$tools} . . {$mflag} {$pagelink} {$comment}"; + + # Denote if username is redacted for this edit + if( $rev->isDeleted( Revision::DELETED_USER ) ) { + $ret .= " " . wfMsgHtml('rev-deleted-user-contribs') . ""; + } - $ret = "
  • $ret
  • \n"; + $ret = Html::rawElement( 'li', array(), $ret ) . "\n"; wfProfileOut( __METHOD__ ); return $ret; @@ -247,7 +280,7 @@ class DeletedContributionsPage extends SpecialPage { return; } - global $wgUser, $wgOut, $wgLang, $wgRequest; + global $wgOut, $wgRequest; $wgOut->setPageTitle( wfMsgExt( 'deletedcontributions-title', array( 'parsemag' ) ) ); @@ -307,9 +340,7 @@ class DeletedContributionsPage extends SpecialPage { ? 'sp-contributions-footer-anon' : 'sp-contributions-footer'; - - $text = wfMsgNoTrans( $message, $target ); - if( !wfEmptyMsg( $message, $text ) && $text != '-' ) { + if( !wfMessage( $message )->isDisabled() ) { $wgOut->wrapWikiMsg( "", array( $message, $target ) ); } } @@ -317,29 +348,50 @@ class DeletedContributionsPage extends SpecialPage { /** * Generates the subheading with links - * @param $nt @see Title object for the target + * @param $nt Title object for the target + * @param $id Integer: User ID for the target + * @return String: appropriately-escaped HTML to be output literally + * @todo Fixme: almost the same as contributionsSub in SpecialContributions.php. Could be combined. */ function getSubTitle( $nt, $id ) { - global $wgSysopUserBans, $wgLang, $wgUser; + global $wgSysopUserBans, $wgLang, $wgUser, $wgOut; $sk = $wgUser->getSkin(); - if ( 0 == $id ) { + if ( $id === null ) { $user = htmlspecialchars( $nt->getText() ); } else { $user = $sk->link( $nt, htmlspecialchars( $nt->getText() ) ); } + $userObj = User::newFromName( $nt->getText(), /* check for username validity not needed */ false ); $talk = $nt->getTalkPage(); if( $talk ) { # Talk page link - $tools[] = $sk->link( $talk, wfMsgHtml( 'talkpagelinktext' ) ); - if( ( $id != 0 && $wgSysopUserBans ) || ( $id == 0 && User::isIP( $nt->getText() ) ) ) { - # Block link - if( $wgUser->isAllowed( 'block' ) ) - $tools[] = $sk->linkKnown( - SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ), - wfMsgHtml( 'blocklink' ) - ); + $tools[] = $sk->link( $talk, wfMsgHtml( 'sp-contributions-talk' ) ); + if( ( $id !== null && $wgSysopUserBans ) || ( $id === null && IP::isIPAddress( $nt->getText() ) ) ) { + if( $wgUser->isAllowed( 'block' ) ) { # Block / Change block / Unblock links + if ( $userObj->isBlocked() ) { + $tools[] = $sk->linkKnown( # Change block link + SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ), + wfMsgHtml( 'change-blocklink' ) + ); + $tools[] = $sk->linkKnown( # Unblock link + SpecialPage::getTitleFor( 'BlockList' ), + wfMsgHtml( 'unblocklink' ), + array(), + array( + 'action' => 'unblock', + 'ip' => $nt->getDBkey() + ) + ); + } + else { # User is not blocked + $tools[] = $sk->linkKnown( # Block link + SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ), + wfMsgHtml( 'blocklink' ) + ); + } + } # Block log link $tools[] = $sk->linkKnown( SpecialPage::getTitleFor( 'Log' ), @@ -358,15 +410,43 @@ class DeletedContributionsPage extends SpecialPage { array(), array( 'user' => $nt->getText() ) ); - # Link to undeleted contributions + # Link to contributions $tools[] = $sk->linkKnown( SpecialPage::getTitleFor( 'Contributions', $nt->getDBkey() ), wfMsgHtml( 'sp-deletedcontributions-contribs' ) ); + # Add a link to change user rights for privileged users + $userrightsPage = new UserrightsPage(); + if( $id !== null && $userrightsPage->userCanChangeRights( User::newFromId( $id ) ) ) { + $tools[] = $sk->linkKnown( + SpecialPage::getTitleFor( 'Userrights', $nt->getDBkey() ), + wfMsgHtml( 'sp-contributions-userrights' ) + ); + } + wfRunHooks( 'ContributionsToolLinks', array( $id, $nt, &$tools ) ); $links = $wgLang->pipeList( $tools ); + + // Show a note if the user is blocked and display the last block log entry. + if ( $userObj->isBlocked() ) { + LogEventsList::showLogExtract( + $wgOut, + 'block', + $nt->getPrefixedText(), + '', + array( + 'lim' => 1, + 'showIfEmpty' => false, + 'msgKey' => array( + 'sp-contributions-blocked-notice', + $nt->getText() # Support GENDER in 'sp-contributions-blocked-notice' + ), + 'offset' => '' # don't use $wgRequest parameter offset + ) + ); + } } // Old message 'contribsub' had one parameter, but that doesn't work for @@ -385,7 +465,7 @@ class DeletedContributionsPage extends SpecialPage { * @param $options Array: the options to be included. */ function getForm( $options ) { - global $wgScript, $wgRequest; + global $wgScript; $options['title'] = SpecialPage::getTitleFor( 'DeletedContributions' )->getPrefixedText(); if ( !isset( $options['target'] ) ) { @@ -412,7 +492,7 @@ class DeletedContributionsPage extends SpecialPage { if ( in_array( $name, array( 'namespace', 'target', 'contribs' ) ) ) { continue; } - $f .= "\t" . Xml::hidden( $name, $value ) . "\n"; + $f .= "\t" . Html::hidden( $name, $value ) . "\n"; } $f .= Xml::openElement( 'fieldset' ) .