*/
function wfSpecialRevisiondelete( $par = null ) {
- global $wgOut, $wgRequest, $wgUser, $wgContLang;
+ global $wgOut, $wgRequest;
$target = $wgRequest->getVal( 'target' );
- $oldid = $wgRequest->getInt( 'oldid' );
+ $oldid = $wgRequest->getIntArray( 'oldid' );
- $sk = $wgUser->getSkin();
$page = Title::newFromUrl( $target );
if( is_null( $page ) ) {
- $wgOut->errorpage( 'notargettitle', 'notargettext' );
+ $wgOut->showErrorPage( 'notargettitle', 'notargettext' );
+ return;
+ }
+
+ if( is_null( $oldid ) ) {
+ $wgOut->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
return;
}
}
}
+/**
+ * Implements the GUI for Revision Deletion.
+ * @addtogroup SpecialPage
+ */
class RevisionDeleteForm {
/**
- * @param Title $page
- * @param int $oldid
+ * @param WebRequest $request
*/
function __construct( $request ) {
global $wgUser;
$this->skin = $wgUser->getSkin();
$this->checks = array(
- array( 'revdelete-hide-text', 'wpHideText', MW_REV_DELETED_TEXT ),
- array( 'revdelete-hide-comment', 'wpHideComment', MW_REV_DELETED_COMMENT ),
- array( 'revdelete-hide-user', 'wpHideUser', MW_REV_DELETED_USER ),
- array( 'revdelete-hide-restricted', 'wpHideRestricted', MW_REV_DELETED_RESTRICTED ) );
+ array( 'revdelete-hide-text', 'wpHideText', Revision::DELETED_TEXT ),
+ array( 'revdelete-hide-comment', 'wpHideComment', Revision::DELETED_COMMENT ),
+ array( 'revdelete-hide-user', 'wpHideUser', Revision::DELETED_USER ),
+ array( 'revdelete-hide-restricted', 'wpHideRestricted', Revision::DELETED_RESTRICTED ) );
}
/**
function show( $request ) {
global $wgOut, $wgUser;
- $first = $this->revisions[0];
-
- $wgOut->addWikiText( wfMsg( 'revdelete-selected', $this->page->getPrefixedText() ) );
+ $wgOut->addWikiMsg( 'revdelete-selected', $this->page->getPrefixedText() );
$wgOut->addHtml( "<ul>" );
foreach( $this->revisions as $revid ) {
$rev = Revision::newFromTitle( $this->page, $revid );
+ if( !isset( $rev ) ) {
+ $wgOut->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
+ return;
+ }
$wgOut->addHtml( $this->historyLine( $rev ) );
$bitfields[] = $rev->mDeleted; // FIXME
}
$wgOut->addHtml( "</ul>" );
- $wgOut->addWikiText( wfMsg( 'revdelete-text' ) );
+ $wgOut->addWikiMsg( 'revdelete-text' );
$items = array(
- wfInputLabel( wfMsg( 'revdelete-log' ), 'wpReason', 'wpReason', 60 ),
- wfSubmitButton( wfMsg( 'revdelete-submit' ) ) );
+ Xml::inputLabel( wfMsg( 'revdelete-log' ), 'wpReason', 'wpReason', 60 ),
+ Xml::submitButton( wfMsg( 'revdelete-submit' ) ) );
$hidden = array(
- wfHidden( 'wpEditToken', $wgUser->editToken() ),
- wfHidden( 'target', $this->page->getPrefixedText() ) );
+ Xml::hidden( 'wpEditToken', $wgUser->editToken() ),
+ Xml::hidden( 'target', $this->page->getPrefixedText() ) );
foreach( $this->revisions as $revid ) {
- $hidden[] = wfHidden( 'oldid[]', $revid );
+ $hidden[] = Xml::hidden( 'oldid[]', $revid );
}
- $special = Title::makeTitle( NS_SPECIAL, 'Revisiondelete' );
- $wgOut->addHtml( wfElement( 'form', array(
+ $special = SpecialPage::getTitleFor( 'Revisiondelete' );
+ $wgOut->addHtml( Xml::element( 'form', array(
'method' => 'post',
- 'action' => $special->getLocalUrl( 'action=submit' ) ) ) );
+ 'action' => $special->getLocalUrl( 'action=submit' ) ),
+ null ) );
$wgOut->addHtml( '<fieldset><legend>' . wfMsgHtml( 'revdelete-legend' ) . '</legend>' );
foreach( $this->checks as $item ) {
list( $message, $name, $field ) = $item;
$wgOut->addHtml( '<div>' .
- wfCheckLabel( wfMsg( $message), $name, $name, $rev->isDeleted( $field ) ) .
+ Xml::checkLabel( wfMsg( $message), $name, $name, $rev->isDeleted( $field ) ) .
'</div>' );
}
$wgOut->addHtml( '</fieldset>' );
* @param Revision $rev
* @returns string
*/
- private function historyLine( $rev ) {
+ function historyLine( $rev ) {
global $wgContLang;
$date = $wgContLang->timeanddate( $rev->getTimestamp() );
return
function extractBitfield( $request ) {
$bitfield = 0;
foreach( $this->checks as $item ) {
- list( $message, $name, $field ) = $item;
+ list( /* message */ , $name, $field ) = $item;
if( $request->getCheck( $name ) ) {
$bitfield |= $field;
}
function save( $bitfield, $reason ) {
$dbw = wfGetDB( DB_MASTER );
$deleter = new RevisionDeleter( $dbw );
- $ok = $deleter->setVisibility( $this->revisions, $bitfield, $reason );
+ $deleter->setVisibility( $this->revisions, $bitfield, $reason );
}
}
-
+/**
+ * Implements the actions for Revision Deletion.
+ * @addtogroup SpecialPage
+ */
class RevisionDeleter {
function __construct( $db ) {
$this->db = $db;
// To work!
foreach( $items as $revid ) {
$rev = Revision::newFromId( $revid );
+ if( !isset( $rev ) ) {
+ return false;
+ }
$this->updateRevision( $rev, $bitfield );
$this->updateRecentChanges( $rev, $bitfield );
$this->db->update( 'revision',
array( 'rev_deleted' => $bitfield ),
array( 'rev_id' => $rev->getId() ),
- 'RevisionDeleter::updateRevision' );
+ __METHOD__ );
}
/**
function updateRecentChanges( $rev, $bitfield ) {
$this->db->update( 'recentchanges',
array(
- 'rc_user' => ($bitfield & MW_REV_DELETED_USER) ? 0 : $rev->getUser(),
- 'rc_user_text' => ($bitfield & MW_REV_DELETED_USER) ? wfMsg( 'rev-deleted-user' ) : $rev->getUserText(),
- 'rc_comment' => ($bitfield & MW_REV_DELETED_COMMENT) ? wfMsg( 'rev-deleted-comment' ) : $rev->getComment() ),
+ 'rc_user' => ($bitfield & Revision::DELETED_USER) ? 0 : $rev->getUser(),
+ 'rc_user_text' => ($bitfield & Revision::DELETED_USER) ? wfMsg( 'rev-deleted-user' ) : $rev->getUserText(),
+ 'rc_comment' => ($bitfield & Revision::DELETED_COMMENT) ? wfMsg( 'rev-deleted-comment' ) : $rev->getComment() ),
array(
'rc_this_oldid' => $rev->getId() ),
- 'RevisionDeleter::updateRecentChanges' );
+ __METHOD__ );
}
/**
}
}
-?>
+