/**
* Entry point
*
- * @param string $par
+ * @param string|null $par
*/
public function execute( $par ) {
$request = $this->getRequest();
// parameter, but also as part of the primary url. This can have PII implications
// in releasing page view data. As such issue a 301 redirect to the correct
// URL.
- if ( strlen( $par ) && !strlen( $term ) ) {
+ if ( $par !== null && $par !== '' && $term === '' ) {
$query = $request->getValues();
unset( $query['title'] );
// Strip underscores from title parameter; most of the time we'll want
$this->load();
// TODO: This performs database actions on GET request, which is going to
// be a problem for our multi-datacenter work.
- if ( !is_null( $request->getVal( 'nsRemember' ) ) ) {
+ if ( $request->getCheck( 'nsRemember' ) ) {
$this->saveNamespaces();
// Remove the token from the URL to prevent the user from inadvertently
// exposing it (e.g. by pasting it into a public wiki page) or undoing
}
$this->searchEngineType = $request->getVal( 'srbackend' );
- if (
- !$request->getVal( 'fulltext' ) &&
- $request->getVal( 'offset' ) === null
- ) {
+ if ( !$request->getVal( 'fulltext' ) && !$request->getCheck( 'offset' ) ) {
$url = $this->goResult( $term );
if ( $url !== null ) {
// successful 'go'
$url = str_replace( '$1', urlencode( $term ), $searchForwardUrl );
$out->redirect( $url );
} else {
- $out->addHTML(
- "<fieldset>" .
- "<legend>" .
- $this->msg( 'search-external' )->escaped() .
- "</legend>" .
- "<p class='mw-searchdisabled'>" .
- $this->msg( 'searchdisabled' )->escaped() .
- "</p>" .
- $this->msg( 'googlesearch' )->rawParams(
- htmlspecialchars( $term ),
- 'UTF-8',
- $this->msg( 'searchbutton' )->escaped()
- )->text() .
- "</fieldset>"
- );
+ $this->showGoogleSearch( $term );
}
return;
$this->showResults( $term );
}
+ /**
+ * Output a google search form if search is disabled
+ *
+ * @param string $term Search term
+ * @todo FIXME Maybe we should get rid of this raw html message at some future time
+ * @suppress SecurityCheck-XSS
+ */
+ private function showGoogleSearch( $term ) {
+ $this->getOutput()->addHTML(
+ "<fieldset>" .
+ "<legend>" .
+ $this->msg( 'search-external' )->escaped() .
+ "</legend>" .
+ "<p class='mw-searchdisabled'>" .
+ $this->msg( 'searchdisabled' )->escaped() .
+ "</p>" .
+ $this->msg( 'googlesearch' )->rawParams(
+ htmlspecialchars( $term ),
+ 'UTF-8',
+ $this->msg( 'searchbutton' )->escaped()
+ )->text() .
+ "</fieldset>"
+ );
+ }
+
/**
* Set up basic search parameters from the request and user settings.
*
# Extract manually requested namespaces
$nslist = $this->powerSearch( $request );
- if ( !count( $nslist ) ) {
+ if ( $nslist === [] ) {
# Fallback to user preference
$nslist = $this->searchConfig->userNamespaces( $user );
}
$profile = null;
- if ( !count( $nslist ) ) {
+ if ( $nslist === [] ) {
$profile = 'default';
}
$this->namespaces = $nslist;
} elseif ( $profile === 'advanced' ) {
$this->namespaces = $nslist;
+ } elseif ( isset( $profiles[$profile]['namespaces'] ) ) {
+ $this->namespaces = $profiles[$profile]['namespaces'];
} else {
- if ( isset( $profiles[$profile]['namespaces'] ) ) {
- $this->namespaces = $profiles[$profile]['namespaces'];
- } else {
- // Unknown profile requested
- $profile = 'default';
- $this->namespaces = $profiles['default']['namespaces'];
- }
+ // Unknown profile requested
+ $profile = 'default';
+ $this->namespaces = $profiles['default']['namespaces'];
}
$this->fulltext = $request->getVal( 'fulltext' );
}
$out = $this->getOutput();
+ $widgetOptions = $this->getConfig()->get( 'SpecialSearchFormOptions' );
$formWidget = new MediaWiki\Widget\Search\SearchFormWidget(
$this,
$this->searchConfig,
// only do the form render here for the empty $term case. Rendering
// the form when a search is provided is repeated below.
$out->addHTML( $formWidget->render(
- $this->profile, $term, 0, 0, $this->offset, $this->isPowerSearch()
+ $this->profile, $term, 0, 0, $this->offset, $this->isPowerSearch(), $widgetOptions
) );
return;
}
$showSuggestion = $title === null || !$title->isKnown();
$search->setShowSuggestion( $showSuggestion );
- $rewritten = $search->transformSearchTerm( $term );
- if ( $rewritten !== $term ) {
- $term = $rewritten;
- wfDeprecated( 'SearchEngine::transformSearchTerm() (overridden by ' .
- get_class( $search ) . ')', '1.32' );
- }
-
$rewritten = $search->replacePrefixes( $term );
if ( $rewritten !== $term ) {
wfDeprecated( 'SearchEngine::replacePrefixes() (overridden by ' .
// start rendering the page
$out->enableOOUI();
$out->addHTML( $formWidget->render(
- $this->profile, $term, $num, $totalRes, $this->offset, $this->isPowerSearch()
+ $this->profile, $term, $num, $totalRes, $this->offset, $this->isPowerSearch(), $widgetOptions
) );
// did you mean... suggestions
$offset = $this->offset;
}
- $prevnext = $this->getLanguage()->viewPrevNext(
- $this->getPageTitle(),
+ $prevnext = $this->buildPrevNextNavigation(
$offset,
$this->limit,
$this->powerSearchOptions() + [ 'search' => $term ],
'a',
[
'href' => $this->getPageTitle()->getLocalURL( $params ),
- 'title' => $this->msg( 'search-filter-title-prefix-reset' ),
+ 'title' => $this->msg( 'search-filter-title-prefix-reset' )->text(),
],
- $this->msg( 'search-filter-title-prefix-reset' )
+ $this->msg( 'search-filter-title-prefix-reset' )->text()
);
$subtitle .= ')';
$out->setSubtitle( $subtitle );
) {
// Reset namespace preferences: namespaces are not searched
// when they're not mentioned in the URL parameters.
- foreach ( MWNamespace::getValidNamespaces() as $n ) {
+ foreach ( MediaWikiServices::getInstance()->getNamespaceInfo()->getValidNamespaces()
+ as $n
+ ) {
$user->setOption( 'searchNs' . $n, false );
}
// The request parameters include all the namespaces to be searched.