summaryrefslogtreecommitdiff
path: root/extensions/Nuke/Nuke_body.php
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/Nuke/Nuke_body.php')
-rw-r--r--extensions/Nuke/Nuke_body.php40
1 files changed, 28 insertions, 12 deletions
diff --git a/extensions/Nuke/Nuke_body.php b/extensions/Nuke/Nuke_body.php
index 4fdc0809..fbe4f56e 100644
--- a/extensions/Nuke/Nuke_body.php
+++ b/extensions/Nuke/Nuke_body.php
@@ -7,14 +7,18 @@ class SpecialNuke extends SpecialPage {
}
public function execute( $par ) {
- if( !$this->userCanExecute( $this->getUser() ) ) {
+ if ( !$this->userCanExecute( $this->getUser() ) ) {
$this->displayRestrictionError();
- return;
}
-
$this->setHeaders();
$this->outputHeader();
+ if ( $this->getUser()->isBlocked() ) {
+ $block = $this->getUser()->getBlock();
+ throw new UserBlockedError( $block );
+ }
+ $this->checkReadOnly();
+
$req = $this->getRequest();
$target = trim( $req->getText( 'target', $par ) );
@@ -161,15 +165,15 @@ class SpecialNuke extends SpecialPage {
/**
* @var $title Title
*/
- list( $title, $edits, $userName ) = $info;
+ list( $title, $userName ) = $info;
$image = $title->getNamespace() == NS_IMAGE ? wfLocalFile( $title ) : false;
$thumb = $image && $image->exists() ? $image->transform( array( 'width' => 120, 'height' => 120 ), 0 ) : false;
- $changes = wfMsgExt( 'nchanges', 'parsemag', $this->getLanguage()->formatNum( $edits ) );
-
$out->addHTML( '<li>' .
- Xml::check( 'pages[]', true,
+ Xml::check(
+ 'pages[]',
+ true,
array( 'value' => $title->getPrefixedDbKey() )
) .
'&#160;' .
@@ -177,7 +181,12 @@ class SpecialNuke extends SpecialPage {
Linker::linkKnown( $title ) .
'&#160;(' .
( $userName ? wfMsgExt( 'nuke-editby', 'parseinline', $userName ) . ',&#160;' : '' ) .
- Linker::linkKnown( $title, $changes, array(), array('action' => 'history' ) ) .
+ Linker::linkKnown(
+ $title,
+ wfMsg( 'nuke-viewchanges' ),
+ array(),
+ array( 'action' => 'history' )
+ ) .
")</li>\n" );
}
@@ -203,7 +212,6 @@ class SpecialNuke extends SpecialPage {
'rc_namespace',
'rc_title',
'rc_timestamp',
- 'COUNT(*) AS edits'
);
$where = array( "(rc_new = 1) OR (rc_log_type = 'upload' AND rc_log_action = 'upload')" );
@@ -218,6 +226,7 @@ class SpecialNuke extends SpecialPage {
if ( !is_null( $pattern ) && trim( $pattern ) !== '' ) {
$where[] = 'rc_title LIKE ' . $dbr->addQuotes( $pattern );
}
+ $group = implode( ', ', $what );
$result = $dbr->select( 'recentchanges',
$what,
@@ -225,7 +234,7 @@ class SpecialNuke extends SpecialPage {
__METHOD__,
array(
'ORDER BY' => 'rc_timestamp DESC',
- 'GROUP BY' => 'rc_namespace, rc_title',
+ 'GROUP BY' => $group,
'LIMIT' => $limit
)
);
@@ -235,8 +244,7 @@ class SpecialNuke extends SpecialPage {
foreach ( $result as $row ) {
$pages[] = array(
Title::makeTitle( $row->rc_namespace, $row->rc_title ),
- $row->edits,
- $username == '' ? $row->rc_user_text : false
+ $username === '' ? $row->rc_user_text : false
);
}
@@ -255,6 +263,13 @@ class SpecialNuke extends SpecialPage {
foreach( $pages as $page ) {
$title = Title::newFromURL( $page );
$file = $title->getNamespace() == NS_FILE ? wfLocalFile( $title ) : false;
+
+ $permission_errors = $title->getUserPermissionsErrors( 'delete', $this->getUser());
+
+ if ( count( $permission_errors )) {
+ throw new PermissionsError( 'delete', $permission_errors );
+ }
+
if ( $file ) {
$oldimage = null; // Must be passed by reference
$ok = FileDeleteForm::doDelete( $title, $file, $oldimage, $reason, false )->isOK();
@@ -262,6 +277,7 @@ class SpecialNuke extends SpecialPage {
$article = new Article( $title, 0 );
$ok = $article->doDeleteArticle( $reason );
}
+
if ( $ok ) {
$res[] = wfMsgExt( 'nuke-deleted', array( 'parseinline' ), $title->getPrefixedText() );
} else {