53 parent::__construct( $name );
63 $this->
getOutput()->addModuleStyles(
'mediawiki.special' );
66 $propname =
$request->getVal(
'propname', $par );
67 $this->reverse =
$request->getBool(
'reverse' );
68 $this->sortByValue =
$request->getBool(
'sortbyvalue' );
72 $form = HTMLForm::factory(
'ooui', [
76 'options' => $propnames,
77 'default' => $propname,
78 'label-message' =>
'pageswithprop-prop',
84 'default' => $this->reverse,
85 'label-message' =>
'pageswithprop-reverse',
90 'name' =>
'sortbyvalue',
91 'default' => $this->sortByValue,
92 'label-message' =>
'pageswithprop-sortbyvalue',
96 $form->setMethod(
'get' );
97 $form->setSubmitCallback( [ $this,
'onSubmit' ] );
98 $form->setWrapperLegendMsg(
'pageswithprop-legend' );
99 $form->addHeaderText( $this->
msg(
'pageswithprop-text' )->parseAsBlock() );
100 $form->setSubmitTextMsg(
'pageswithprop-submit' );
102 $form->prepareForm();
103 $form->displayForm(
false );
104 if ( $propname !==
'' && $propname !==
null ) {
110 $this->propName = $data[
'propname'];
111 parent::execute( $data[
'propname'] );
138 'tables' => [
'page_props',
'page' ],
140 'page_id' =>
'pp_page',
152 'page' => [
'INNER JOIN',
'page_id = pp_page' ]
159 $sort = [
'page_id' ];
160 if ( $this->sortByValue ) {
161 array_unshift(
$sort,
'pp_sortkey' );
179 $title = Title::newFromRow( $result );
181 if ( $result->pp_value !==
'' ) {
183 $valueLength = strlen( $result->pp_value );
184 $isBinary = strpos( $result->pp_value,
"\0" ) !==
false;
185 $isTooLong = $valueLength > 1024;
187 if ( $isBinary || $isTooLong ) {
189 ->msg( $isBinary ?
'pageswithprop-prophidden-binary' :
'pageswithprop-prophidden-long' )
190 ->params( $this->
getLanguage()->formatSize( $valueLength ) );
192 $propValue = Html::element(
'span', [
'class' =>
'prop-value-hidden' ], $message->text() );
194 $propValue = Html::element(
'span', [
'class' =>
'prop-value' ], $result->pp_value );
197 $ret .= $this->
msg(
'colon-separator' )->escaped() . $propValue;
204 if ( $this->existingPropNames ===
null ) {
212 'DISTINCT',
'ORDER BY' =>
'pp_propname'
230 foreach (
$res as $row ) {
231 $propnames[$row->pp_propname] = $row->pp_propname;
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
This is a class for doing query pages; since they're almost all the same, we factor out some of the f...
int $offset
The offset and limit in use, as passed to the query() function.
outputHeader( $summaryMessageKey='')
Outputs a summary message on top of special pages Per default the message key is the canonical name o...
setHeaders()
Sets headers - this should be called from the execute() method of all derived classes!
getOutput()
Get the OutputPage being used for this instance.
static prefixSearchArray( $search, $limit, array $subpages, $offset)
Helper function for implementations of prefixSearchSubpages() that filter the values in memory (as op...
getContext()
Gets the context this SpecialPage is executed in.
msg( $key)
Wrapper around wfMessage that sets the current context.
getRequest()
Get the WebRequest being used for this instance.
getLanguage()
Shortcut to get user's language.
Special:PagesWithProp to search the page_props table.
execute( $par)
This is the actual workhorse.
queryExistingProps( $limit=null, $offset=0)
getQueryInfo()
Subclasses return an SQL query here, formatted as an array with the following keys: tables => Table(s...
isSyndicated()
Disable RSS/Atom feeds.
isCacheable()
Is the output of this query cacheable? Non-cacheable expensive pages will be disabled in miser mode a...
string[] null $existingPropNames
getOrderFields()
Subclasses return an array of fields to order by here.
prefixSearchSubpages( $search, $limit, $offset)
Return an array of subpages beginning with $search that this special page will accept.
getGroupName()
Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-gro...
__construct( $name='PagesWithProp')
formatResult( $skin, $result)
do that in ParserLimitReportFormat instead use this to modify the parameters of the image all existing parser cache entries will be invalid To avoid you ll need to handle that somehow(e.g. with the RejectParserCacheValue hook) because MediaWiki won 't do it for you. & $defaults also a ContextSource after deleting those rows but within the same transaction you ll probably need to make sure the header is varied on $request
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped noclasses & $ret