Declare visibility on class properties of SpecialRevisionDelete
[lhc/web/wiklou.git] / includes / actions / MarkpatrolledAction.php
index 5ea986e..4016f67 100644 (file)
  * @ingroup Actions
  */
 
+/**
+ * Mark a revision as patrolled on a page
+ *
+ * @ingroup Actions
+ */
 class MarkpatrolledAction extends FormlessAction {
 
        public function getName() {
                return 'markpatrolled';
        }
 
-       public function getRestriction() {
-               return 'read';
-       }
-
        protected function getDescription() {
                return '';
        }
 
-       protected function checkCanExecute( User $user ) {
-               if ( !$user->matchEditToken( $this->getRequest()->getVal( 'token' ), $this->getRequest()->getInt( 'rcid' ) ) ) {
-                       throw new ErrorPageError( 'sessionfailure-title', 'sessionfailure' );
-               }
-
-               return parent::checkCanExecute( $user );
-       }
-
        public function onView() {
-               $rc = RecentChange::newFromId( $this->getRequest()->getInt( 'rcid' ) );
+               $request = $this->getRequest();
 
+               $rcId = $request->getInt( 'rcid' );
+               $rc = RecentChange::newFromId( $rcId );
                if ( is_null( $rc ) ) {
                        throw new ErrorPageError( 'markedaspatrollederror', 'markedaspatrollederrortext' );
                }
 
-               # It would be nice to see where the user had actually come from, but for now just guess
-               $returnto = $rc->getAttribute( 'rc_type' ) == RC_NEW ? 'Newpages' : 'Recentchanges';
-               $return = SpecialPage::getTitleFor( $returnto );
+               $user = $this->getUser();
+               if ( !$user->matchEditToken( $request->getVal( 'token' ), $rcId ) ) {
+                       throw new ErrorPageError( 'sessionfailure-title', 'sessionfailure' );
+               }
 
-               $errors = $rc->doMarkPatrolled();
+               $errors = $rc->doMarkPatrolled( $user );
 
                if ( in_array( array( 'rcpatroldisabled' ), $errors ) ) {
                        throw new ErrorPageError( 'rcpatroldisabled', 'rcpatroldisabledtext' );
@@ -66,20 +62,24 @@ class MarkpatrolledAction extends FormlessAction {
                        return;
                }
 
+               # It would be nice to see where the user had actually come from, but for now just guess
+               $returnto = $rc->getAttribute( 'rc_type' ) == RC_NEW ? 'Newpages' : 'Recentchanges';
+               $return = SpecialPage::getTitleFor( $returnto );
+
                if ( in_array( array( 'markedaspatrollederror-noautopatrol' ), $errors ) ) {
-                       $this->getOutput()->setPageTitle( wfMsg( 'markedaspatrollederror' ) );
+                       $this->getOutput()->setPageTitle( $this->msg( 'markedaspatrollederror' ) );
                        $this->getOutput()->addWikiMsg( 'markedaspatrollederror-noautopatrol' );
                        $this->getOutput()->returnToMain( null, $return );
+
                        return;
                }
 
-               if ( !empty( $errors ) ) {
-                       $this->getOutput()->showPermissionsErrorPage( $errors );
-                       return;
+               if ( count( $errors ) ) {
+                       throw new PermissionsError( 'patrol', $errors );
                }
 
                # Inform the user
-               $this->getOutput()->setPageTitle( wfMsg( 'markedaspatrolled' ) );
+               $this->getOutput()->setPageTitle( $this->msg( 'markedaspatrolled' ) );
                $this->getOutput()->addWikiMsg( 'markedaspatrolledtext', $rc->getTitle()->getPrefixedText() );
                $this->getOutput()->returnToMain( null, $return );
        }