MediaWiki  master
SpecialProtectedtitles.php
Go to the documentation of this file.
1 <?php
30  protected $IdLevel = 'level';
31  protected $IdType = 'type';
32 
33  public function __construct() {
34  parent::__construct( 'Protectedtitles' );
35  }
36 
37  function execute( $par ) {
38  $this->setHeaders();
39  $this->outputHeader();
40  $this->addHelpLink( 'Help:Protected_pages' );
41 
42  $request = $this->getRequest();
43  $type = $request->getVal( $this->IdType );
44  $level = $request->getVal( $this->IdLevel );
45  $sizetype = $request->getVal( 'sizetype' );
46  $size = $request->getIntOrNull( 'size' );
47  $NS = $request->getIntOrNull( 'namespace' );
48 
49  $pager = new ProtectedTitlesPager( $this, [], $type, $level, $NS, $sizetype, $size );
50 
51  $this->getOutput()->addHTML( $this->showOptions( $NS, $type, $level ) );
52 
53  if ( $pager->getNumRows() ) {
54  $this->getOutput()->addHTML(
55  $pager->getNavigationBar() .
56  '<ul>' . $pager->getBody() . '</ul>' .
57  $pager->getNavigationBar()
58  );
59  } else {
60  $this->getOutput()->addWikiMsg( 'protectedtitlesempty' );
61  }
62  }
63 
70  function formatRow( $row ) {
71  $title = Title::makeTitleSafe( $row->pt_namespace, $row->pt_title );
72  if ( !$title ) {
73  return Html::rawElement(
74  'li',
75  [],
77  'span',
78  [ 'class' => 'mw-invalidtitle' ],
80  $this->getContext(),
81  $row->pt_namespace,
82  $row->pt_title
83  )
84  )
85  ) . "\n";
86  }
87 
88  $link = $this->getLinkRenderer()->makeLink( $title );
89  // Messages: restriction-level-sysop, restriction-level-autoconfirmed
90  $description = $this->msg( 'restriction-level-' . $row->pt_create_perm )->escaped();
91  $lang = $this->getLanguage();
92  $expiry = strlen( $row->pt_expiry ) ?
93  $lang->formatExpiry( $row->pt_expiry, TS_MW ) :
94  'infinity';
95 
96  if ( $expiry !== 'infinity' ) {
97  $user = $this->getUser();
98  $description .= $this->msg( 'comma-separator' )->escaped() . $this->msg(
99  'protect-expiring-local',
100  $lang->userTimeAndDate( $expiry, $user ),
101  $lang->userDate( $expiry, $user ),
102  $lang->userTime( $expiry, $user )
103  )->escaped();
104  }
105 
106  return '<li>' . $lang->specialList( $link, $description ) . "</li>\n";
107  }
108 
116  function showOptions( $namespace, $type, $level ) {
117  $formDescriptor = [
118  'namespace' => [
119  'class' => 'HTMLSelectNamespace',
120  'name' => 'namespace',
121  'id' => 'namespace',
122  'cssclass' => 'namespaceselector',
123  'all' => '',
124  'label' => $this->msg( 'namespace' )->text()
125  ],
126  'levelmenu' => $this->getLevelMenu( $level )
127  ];
128 
129  $htmlForm = HTMLForm::factory( 'ooui', $formDescriptor, $this->getContext() );
130  $htmlForm
131  ->setMethod( 'get' )
132  ->setWrapperLegendMsg( 'protectedtitles' )
133  ->setSubmitText( $this->msg( 'protectedtitles-submit' )->text() );
134 
135  return $htmlForm->prepareForm()->getHTML( false );
136  }
137 
143  function getLevelMenu( $pr_level ) {
144  // Temporary array
145  $m = [ $this->msg( 'restriction-level-all' )->text() => 0 ];
146  $options = [];
147 
148  // First pass to load the log names
149  foreach ( $this->getConfig()->get( 'RestrictionLevels' ) as $type ) {
150  if ( $type != '' && $type != '*' ) {
151  // Messages: restriction-level-sysop, restriction-level-autoconfirmed
152  $text = $this->msg( "restriction-level-$type" )->text();
153  $m[$text] = $type;
154  }
155  }
156 
157  // Is there only one level (aside from "all")?
158  if ( count( $m ) <= 2 ) {
159  return '';
160  }
161  // Third pass generates sorted XHTML content
162  foreach ( $m as $text => $type ) {
163  $options[ $text ] = $type;
164  }
165 
166  return [
167  'type' => 'select',
168  'options' => $options,
169  'label' => $this->msg( 'restriction-level' )->text(),
170  'name' => $this->IdLevel,
171  'id' => $this->IdLevel
172  ];
173  }
174 
175  protected function getGroupName() {
176  return 'maintenance';
177  }
178 }
static element( $element, $attribs=[], $contents='')
Identical to rawElement(), but HTML-escapes $contents (like Xml::element()).
Definition: Html.php:231
getContext()
Gets the context this SpecialPage is executed in.
formatRow( $row)
Callback function to output a restriction.
if(!isset( $args[0])) $lang
static rawElement( $element, $attribs=[], $contents='')
Returns an HTML element in a string.
Definition: Html.php:209
addHelpLink( $to, $overrideBaseUrl=false)
Adds help link with an icon via page indicators.
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
A special page that list protected titles from creation.
showOptions( $namespace, $type, $level)
setHeaders()
Sets headers - this should be called from the execute() method of all derived classes! ...
static makeTitleSafe( $ns, $title, $fragment='', $interwiki='')
Create a new Title from a namespace index and a DB key.
Definition: Title.php:612
getUser()
Shortcut to get the User executing this instance.
getConfig()
Shortcut to get main config object.
getLanguage()
Shortcut to get user&#39;s language.
static getInvalidTitleDescription(IContextSource $context, $namespace, $title)
Get a message saying that an invalid title was encountered.
Definition: Linker.php:187
getRequest()
Get the WebRequest being used for this instance.
outputHeader( $summaryMessageKey='')
Outputs a summary message on top of special pages Per default the message key is the canonical name o...