* If $fullForm is true, it returns an entire form.
*/
static function buildTagFilterSelector( $selected='', $fullForm = false /* used to put a full form around the selector */ ) {
+
+ if ( !count( self::listDefinedTags() ) )
+ return $fullForm ? '' : array();
+
global $wgTitle;
$data = array( wfMsgExt( 'tag-filter', 'parseinline' ), Xml::input( 'tagfilter', 20, $selected ) );
/** Basically lists defined tags which count even if they aren't applied to anything */
static function listDefinedTags() {
+ // Caching...
+ global $wgMemc;
+ $key = wfMemcKey( 'valid-tags' );
+
+ if ($tags = $wgMemc->get( $key ))
+ return $tags;
+
$emptyTags = array();
// Some DB stuff
wfRunHooks( 'ListDefinedTags', array(&$emptyTags) );
- return array_filter( array_unique( $emptyTags ) );
+ $emptyTags = array_filter( array_unique( $emptyTags ) );
+
+ // Short-term caching.
+ $wgMemc->set( $key, $emptyTags, 300 );
+ return $emptyTags;
}
}
\ No newline at end of file
$title = SpecialPage::getTitleFor( 'Log' );
$special = htmlspecialchars( $title->getPrefixedDBkey() );
+ $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
+
$this->out->addHTML( "<form action=\"$action\" method=\"get\"><fieldset>" .
Xml::element( 'legend', array(), wfMsg( 'log' ) ) .
Xml::hidden( 'title', $special ) . "\n" .
$this->getTitleInput( $page ) . "\n" .
( !$wgMiserMode ? ($this->getTitlePattern( $pattern )."\n") : "" ) .
"<p>" . $this->getDateMenu( $year, $month ) . "\n" .
- Xml::tags( 'p', null, implode( ' ', ChangeTags::buildTagFilterSelector( $tagFilter ) ) ) . "\n" .
+ ( $tagSelector ? Xml::tags( 'p', null, implode( ' ', $tagSelector ) ) :'' ). "\n" .
( $filter ? "</p><p>".$this->getFilterLinks( $type, $filter )."\n" : "" ) . "\n" .
Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "</p>\n" .
"</fieldset></form>"
$year = $wgRequest->getInt( 'year' );
$month = $wgRequest->getInt( 'month' );
$tagFilter = $wgRequest->getVal( 'tagfilter' );
+ $tagSelector = ChangeTags::buildTagFilterSelector( $tagFilter );
$action = htmlspecialchars( $wgScript );
$wgOut->addHTML(
Xml::hidden( 'title', $this->mTitle->getPrefixedDBKey() ) . "\n" .
Xml::hidden( 'action', 'history' ) . "\n" .
$this->getDateMenu( $year, $month ) . ' ' .
- implode( ' ', ChangeTags::buildTagFilterSelector( $tagFilter ) ) . ' ' .
+ ( $tagSelector ? ( implode( ' ', $tagSelector ) . ' ' ) : '' ) .
Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . "\n" .
'</fieldset></form>'
);
if( !isset( $this->opts['month'] ) ) {
$this->opts['month'] = '';
}
-
- if( !isset( $this->opts['tagfilter'] ) ) {
- $this->opts['tagfilter'] = '';
- }
if( $this->opts['contribs'] == 'newbie' ) {
$this->opts['target'] = '';
}
$f .= "\t" . Xml::hidden( $name, $value ) . "\n";
}
+
+ $tagFilter = ChangeTags::buildTagFilterSelector( $this->opts['tagfilter'] );
$f .= '<fieldset>' .
Xml::element( 'legend', array(), wfMsg( 'sp-contributions-search' ) ) .
Xml::label( wfMsg( 'namespace' ), 'namespace' ) . ' ' .
Xml::namespaceSelector( $this->opts['namespace'], '' ) .
'</span>' .
- Xml::tags( 'p', null, implode( ' ', ChangeTags::buildTagFilterSelector( $this->opts['tagfilter'] ) ) ) .
+ ( $tagFilter ? Xml::tags( 'p', null, implode( ' ', $tagFilter ) ) : '' ) .
Xml::openElement( 'p' ) .
'<span style="white-space: nowrap">' .
Xml::label( wfMsg( 'year' ), 'year' ) . ' '.
}
$hidden = implode( "\n", $hidden );
- list( $tagFilterLabel, $tagFilterSelector ) = ChangeTags::buildTagFilterSelector( $this->opts['tagfilter'] );
+ $tagFilter = ChangeTags::buildTagFilterSelector( $this->opts['tagfilter'] );
+ if ($tagFilter)
+ list( $tagFilterLabel, $tagFilterSelector ) = $tagFilter;
$form = Xml::openElement( 'form', array( 'action' => $wgScript ) ) .
Xml::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
<td class='mw-input'>" .
Xml::namespaceSelector( $namespace, 'all' ) .
"</td>
- </tr>" .
+ </tr>" . ( $tagFilter ? (
"<tr>
<td class='mw-label'>" .
$tagFilterLabel .
<td class='mw-input'>" .
$tagFilterSelector .
"</td>
- </tr>" .
+ </tr>" ) : '' ) .
($wgEnableNewpagesUserFilter ?
"<tr>
<td class='mw-label'>" .
$extraOpts['category'] = $this->categoryFilterForm( $opts );
}
- $extraOpts['tagfilter'] = ChangeTags::buildTagFilterSelector( $opts['tagfilter'] );
+ $tagFilter = ChangeTags::buildTagFilterSelector( $opts['tagfilter'] );
+ if ( count($tagFilter) )
+ $extraOpts['tagfilter'] = $tagFilter;
wfRunHooks( 'SpecialRecentChangesPanel', array( &$extraOpts, $opts ) );
return $extraOpts;
Xml::input( 'target', 40, str_replace('_',' ',$opts['target']) ) .
Xml::check( 'showlinkedto', $opts['showlinkedto'], array('id' => 'showlinkedto') ) . ' ' .
Xml::label( wfMsg("recentchangeslinked-to"), 'showlinkedto' ) );
- $extraOpts['tagfilter'] = ChangeTags::buildTagFilterSelector( $opts['tagfilter'] );
+ $tagFilter = ChangeTags::buildTagFilterSelector( $opts['tagfilter'] );
+ if ($tagFilter)
+ $extraOpts['tagfilter'] = $tagFilter;
return $extraOpts;
}