MediaWiki  master
MarkpatrolledAction.php
Go to the documentation of this file.
1 <?php
24 
31 
32  public function getName() {
33  return 'markpatrolled';
34  }
35 
36  protected function getDescription() {
37  // Disable default header "subtitle"
38  return '';
39  }
40 
41  public function getRestriction() {
42  return 'patrol';
43  }
44 
45  protected function usesOOUI() {
46  return true;
47  }
48 
49  protected function getRecentChange( $data = null ) {
50  $rc = null;
51  // Note: This works both on initial GET url and after submitting the form
52  $rcId = $data ? intval( $data['rcid'] ) : $this->getRequest()->getInt( 'rcid' );
53  if ( $rcId ) {
54  $rc = RecentChange::newFromId( $rcId );
55  }
56  if ( !$rc ) {
57  throw new ErrorPageError( 'markedaspatrollederror', 'markedaspatrollederrortext' );
58  }
59  return $rc;
60  }
61 
62  protected function preText() {
63  $rc = $this->getRecentChange();
64  $title = $rc->getTitle();
65  $linkRenderer = MediaWikiServices::getInstance()->getLinkRenderer();
66 
67  // Based on logentry-patrol-patrol (see PatrolLogFormatter)
68  $revId = $rc->getAttribute( 'rc_this_oldid' );
69  $query = [
70  'curid' => $rc->getAttribute( 'rc_cur_id' ),
71  'diff' => $revId,
72  'oldid' => $rc->getAttribute( 'rc_last_oldid' )
73  ];
74  $revlink = $linkRenderer->makeLink( $title, $revId, [], $query );
75  $pagelink = $linkRenderer->makeLink( $title, $title->getPrefixedText() );
76 
77  return $this->msg( 'confirm-markpatrolled-top' )->params(
78  $title->getPrefixedText(),
79  // Provide pre-rendered link as parser would render [[:$1]] as bold non-link
80  Message::rawParam( $pagelink ),
81  Message::rawParam( $revlink )
82  )->parse();
83  }
84 
85  protected function alterForm( HTMLForm $form ) {
86  $form->addHiddenField( 'rcid', $this->getRequest()->getInt( 'rcid' ) );
87  $form->setTokenSalt( 'patrol' );
88  $form->setSubmitTextMsg( 'confirm-markpatrolled-button' );
89  }
90 
95  public function onSubmit( $data ) {
96  $user = $this->getUser();
97  $rc = $this->getRecentChange( $data );
98  $errors = $rc->doMarkPatrolled( $user );
99 
100  if ( in_array( [ 'rcpatroldisabled' ], $errors ) ) {
101  throw new ErrorPageError( 'rcpatroldisabled', 'rcpatroldisabledtext' );
102  }
103 
104  // Guess where the user came from
105  // TODO: Would be nice to see where the user actually came from
106  if ( $rc->getAttribute( 'rc_type' ) == RC_NEW ) {
107  $returnTo = 'Newpages';
108  } elseif ( $rc->getAttribute( 'rc_log_type' ) == 'upload' ) {
109  $returnTo = 'Newfiles';
110  } else {
111  $returnTo = 'Recentchanges';
112  }
113  $return = SpecialPage::getTitleFor( $returnTo );
114 
115  if ( in_array( [ 'markedaspatrollederror-noautopatrol' ], $errors ) ) {
116  $this->getOutput()->setPageTitle( $this->msg( 'markedaspatrollederror' ) );
117  $this->getOutput()->addWikiMsg( 'markedaspatrollederror-noautopatrol' );
118  $this->getOutput()->returnToMain( null, $return );
119  return true;
120  }
121 
122  if ( $errors ) {
123  if ( !in_array( [ 'hookaborted' ], $errors ) ) {
124  throw new PermissionsError( 'patrol', $errors );
125  }
126  // The hook itself has handled any output
127  return $errors;
128  }
129 
130  $this->getOutput()->setPageTitle( $this->msg( 'markedaspatrolled' ) );
131  $this->getOutput()->addWikiMsg( 'markedaspatrolledtext', $rc->getTitle()->getPrefixedText() );
132  $this->getOutput()->returnToMain( null, $return );
133  return true;
134  }
135 
136  public function onSuccess() {
137  // Required by parent class. Redundant as our onSubmit handles output already.
138  }
139 
140  public function doesWrites() {
141  return true;
142  }
143 }
static rawParam( $raw)
Definition: Message.php:1027
getOutput()
Get the OutputPage being used for this instance.
Definition: Action.php:208
setTokenSalt( $salt)
Set the salt for the edit token.
Definition: HTMLForm.php:1036
static newFromId( $rcid)
Obtain the recent change with a given rc_id value.
getUser()
Shortcut to get the User being used for this instance.
Definition: Action.php:218
Mark a revision as patrolled on a page.
msg( $key,... $params)
Get a Message object with context set Parameters are the same as wfMessage()
Definition: Action.php:259
An action which shows a form and does something based on the input from the form. ...
Definition: FormAction.php:28
addHiddenField( $name, $value, array $attribs=[])
Add a hidden field to the output.
Definition: HTMLForm.php:943
An error page which can definitely be safely rendered using the OutputPage.
alterForm(HTMLForm $form)
static getTitleFor( $name, $subpage=false, $fragment='')
Get a localised Title object for a specified special page name If you don&#39;t need a full Title object...
Definition: SpecialPage.php:83
Show an error when a user tries to do something they do not have the necessary permissions for...
setSubmitTextMsg( $msg)
Set the text for the submit button to a message.
Definition: HTMLForm.php:1392
const RC_NEW
Definition: Defines.php:123
getRequest()
Get the WebRequest being used for this instance.
Definition: Action.php:198