MediaWiki  master
SpecialDiff.php
Go to the documentation of this file.
1 <?php
40  public function __construct() {
41  parent::__construct( 'Diff' );
42  $this->mAllowedRedirectParams = [];
43  }
44 
49  public function getRedirect( $subpage ) {
50  $parts = explode( '/', $subpage );
51 
52  // Try to parse the values given, generating somewhat pretty URLs if possible
53  if ( count( $parts ) === 1 && $parts[0] !== '' ) {
54  $this->mAddedRedirectParams['diff'] = $parts[0];
55  } elseif ( count( $parts ) === 2 ) {
56  $this->mAddedRedirectParams['oldid'] = $parts[0];
57  $this->mAddedRedirectParams['diff'] = $parts[1];
58  } else {
59  return false;
60  }
61 
62  return true;
63  }
64 
65  protected function showNoRedirectPage() {
66  $this->addHelpLink( 'Help:Diff' );
67  $this->setHeaders();
68  $this->outputHeader();
69  $this->showForm();
70  }
71 
72  private function showForm() {
73  $form = HTMLForm::factory( 'ooui', [
74  'oldid' => [
75  'name' => 'oldid',
76  'type' => 'int',
77  'label-message' => 'diff-form-oldid',
78  ],
79  'diff' => [
80  'name' => 'diff',
81  'class' => HTMLTextField::class,
82  'label-message' => 'diff-form-revid',
83  ],
84  ], $this->getContext(), 'diff-form' );
85  $form->setSubmitTextMsg( 'diff-form-submit' );
86  $form->setSubmitCallback( [ $this, 'onFormSubmit' ] );
87  $form->show();
88  }
89 
90  public function onFormSubmit( $formData ) {
91  $params = [];
92  if ( $formData['oldid'] ) {
93  $params[] = $formData['oldid'];
94  }
95  if ( $formData['diff'] ) {
96  $params[] = $formData['diff'];
97  }
98  $title = $this->getPageTitle( $params ? implode( '/', $params ) : null );
99  $url = $title->getFullUrlForRedirect();
100  $this->getOutput()->redirect( $url );
101  }
102 
103  public function getDescription() {
104  // 'diff' message is in lowercase, using own message
105  return $this->msg( 'diff-form' )->text();
106  }
107 
108  public function getName() {
109  return 'diff-form';
110  }
111 
112  public function isListed() {
113  return true;
114  }
115 
116  protected function getGroupName() {
117  return 'redirects';
118  }
119 }
getContext()
Gets the context this SpecialPage is executed in.
addHelpLink( $to, $overrideBaseUrl=false)
Adds help link with an icon via page indicators.
getRedirect( $subpage)
Definition: SpecialDiff.php:49
showNoRedirectPage()
Definition: SpecialDiff.php:65
getOutput()
Get the OutputPage being used for this instance.
msg( $key,... $params)
Wrapper around wfMessage that sets the current context.
static factory( $displayFormat,... $arguments)
Construct a HTMLForm object for given display type.
Definition: HTMLForm.php:307
Redirect from Special:Diff/### to index.php?diff=### and from Special:Diff/###/### to index...
Definition: SpecialDiff.php:39
Shortcut to construct a special page alias.
setHeaders()
Sets headers - this should be called from the execute() method of all derived classes! ...
onFormSubmit( $formData)
Definition: SpecialDiff.php:90
outputHeader( $summaryMessageKey='')
Outputs a summary message on top of special pages Per default the message key is the canonical name o...
getPageTitle( $subpage=false)
Get a self-referential title object.