Fix SpecialUpload::unsaveUploadedFile(). Move UploadVerification hook so that it...
[lhc/web/wiklou.git] / includes / SpecialRevisiondelete.php
index f14e07b..5c70d5a 100644 (file)
  */
 
 function wfSpecialRevisiondelete( $par = null ) {
-       global $wgOut, $wgRequest, $wgUser;
+       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 ) ) {
@@ -23,6 +22,11 @@ function wfSpecialRevisiondelete( $par = null ) {
                return;
        }
        
+       if( is_null( $oldid ) ) {
+               $wgOut->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
+               return;
+       }
+       
        $form = new RevisionDeleteForm( $wgRequest );
        if( $wgRequest->wasPosted() ) {
                $form->submit( $wgRequest );
@@ -31,6 +35,10 @@ function wfSpecialRevisiondelete( $par = null ) {
        }
 }
 
+/**
+ * Implements the GUI for Revision Deletion.
+ * @addtogroup SpecialPage
+ */
 class RevisionDeleteForm {
        /**
         * @param Title $page
@@ -46,10 +54,10 @@ class RevisionDeleteForm {
                
                $this->skin = $wgUser->getSkin();
                $this->checks = array(
-                       array( 'revdelete-hide-text', 'wpHideText', Revision::MW_REV_DELETED_TEXT ),
-                       array( 'revdelete-hide-comment', 'wpHideComment', Revision::MW_REV_DELETED_COMMENT ),
-                       array( 'revdelete-hide-user', 'wpHideUser', Revision::MW_REV_DELETED_USER ),
-                       array( 'revdelete-hide-restricted', 'wpHideRestricted', Revision::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 ) );
        }
        
        /**
@@ -58,13 +66,15 @@ class RevisionDeleteForm {
        function show( $request ) {
                global $wgOut, $wgUser;
 
-               $first = $this->revisions[0];
-               
                $wgOut->addWikiText( wfMsg( '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
                }
@@ -82,10 +92,11 @@ class RevisionDeleteForm {
                        $hidden[] = wfHidden( 'oldid[]', $revid );
                }
                
-               $special = Title::makeTitle( NS_SPECIAL, 'Revisiondelete' );
+               $special = SpecialPage::getTitleFor( 'Revisiondelete' );
                $wgOut->addHtml( wfElement( '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 ) {
@@ -148,7 +159,7 @@ class RevisionDeleteForm {
        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;
                        }
@@ -159,11 +170,14 @@ class RevisionDeleteForm {
        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;
@@ -180,6 +194,9 @@ class RevisionDeleter {
                // To work!
                foreach( $items as $revid ) {
                        $rev = Revision::newFromId( $revid );
+                       if( !isset( $rev ) ) {
+                               return false;
+                       }
                        $this->updateRevision( $rev, $bitfield );
                        $this->updateRecentChanges( $rev, $bitfield );
                        
@@ -222,9 +239,9 @@ class RevisionDeleter {
        function updateRecentChanges( $rev, $bitfield ) {
                $this->db->update( 'recentchanges',
                        array(
-                               'rc_user' => ($bitfield & Revision::MW_REV_DELETED_USER) ? 0 : $rev->getUser(),
-                               'rc_user_text' => ($bitfield & Revision::MW_REV_DELETED_USER) ? wfMsg( 'rev-deleted-user' ) : $rev->getUserText(),
-                               'rc_comment' => ($bitfield & Revision::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' );