return;
}
- # No match, generate an edit URL
- $title = Title::newFromText( $term );
- if ( !is_null( $title ) ) {
- Hooks::run( 'SpecialSearchNogomatch', [ &$title ] );
- }
$this->showResults( $term );
}
$textStatus = null;
if ( $textMatches instanceof Status ) {
$textStatus = $textMatches;
- $textMatches = null;
+ $textMatches = $textStatus->getValue();
}
// did you mean... suggestions
$didYouMeanHtml = '';
- if ( $showSuggestion && $textMatches && !$textStatus ) {
+ if ( $showSuggestion && $textMatches ) {
if ( $textMatches->hasRewrittenQuery() ) {
$didYouMeanHtml = $this->getDidYouMeanRewrittenHtml( $term, $textMatches );
} elseif ( $textMatches->hasSuggestion() ) {
$out->addHTML( "<div class='searchresults'>" );
+ $hasErrors = $textStatus && $textStatus->getErrors();
+ if ( $hasErrors ) {
+ list( $error, $warning ) = $textStatus->splitByErrorType();
+ if ( $error->getErrors() ) {
+ $out->addHTML( Html::rawElement(
+ 'div',
+ [ 'class' => 'errorbox' ],
+ $error->getHTML( 'search-error' )
+ ) );
+ }
+ if ( $warning->getErrors() ) {
+ $out->addHTML( Html::rawElement(
+ 'div',
+ [ 'class' => 'warningbox' ],
+ $warning->getHTML( 'search-warning' )
+ ) );
+ }
+ }
+
// prev/next links
$prevnext = null;
if ( $num || $this->offset ) {
}
$titleMatches->free();
}
- if ( $textMatches && !$textStatus ) {
+
+ if ( $textMatches ) {
// output appropriate heading
if ( $numTextMatches > 0 && $numTitleMatches > 0 ) {
$out->addHTML( '<div class="mw-search-visualclear"></div>' );
$hasOtherResults = $textMatches &&
$textMatches->hasInterwikiResults( SearchResultSet::INLINE_RESULTS );
- if ( $num === 0 ) {
- if ( $textStatus ) {
- $out->addHTML( '<div class="error">' .
- $textStatus->getMessage( 'search-error' ) . '</div>' );
- } else {
+ // If we have no results and we have not already displayed an error message
+ if ( $num === 0 && !$hasErrors ) {
+ if ( !$this->offset ) {
+ // If we have an offset the create link was rendered earlier in this function.
+ // This class needs a good de-spaghettification, but for now this will
+ // do the job.
$this->showCreateLink( $title, $num, $titleMatches, $textMatches );
- $out->wrapWikiMsg( "<p class=\"mw-search-nonefound\">\n$1</p>",
- [ $hasOtherResults ? 'search-nonefound-thiswiki' : 'search-nonefound',
- wfEscapeWikiText( $term )
- ] );
}
+ $out->wrapWikiMsg( "<p class=\"mw-search-nonefound\">\n$1</p>", [
+ $hasOtherResults ? 'search-nonefound-thiswiki' : 'search-nonefound',
+ wfEscapeWikiText( $term )
+ ] );
}
if ( $hasOtherResults ) {
$out->addHTML( "</div>" );
Hooks::run( 'SpecialSearchResultsAppend', [ $this, $out, $term ] );
-
}
/**
return "<p class=\"mw-search-interwiki-header mw-search-visualclear\">\n$wikiMsg</p>";
}
- /**
- * Decide if the suggested query should be run, and it's results returned
- * instead of the provided $textMatches
- *
- * @param SearchResultSet $textMatches The results of a users query
- * @return bool
- */
- protected function shouldRunSuggestedQuery( SearchResultSet $textMatches ) {
- if ( !$this->runSuggestion ||
- !$textMatches->hasSuggestion() ||
- $textMatches->numRows() > 0 ||
- $textMatches->searchContainedSyntax()
- ) {
- return false;
- }
-
- return $this->getConfig()->get( 'SearchRunSuggestedQuery' );
- }
-
/**
* Generates HTML shown to the user when we have a suggestion about a query
* that might give more results than their current query.
* @return string
*/
protected function showHit( SearchResult $result, $terms, $position ) {
-
if ( $result->isBrokenTitle() ) {
return '';
}
* @return string
*/
protected function showInterwikiHit( $result, $lastInterwiki, $query ) {
-
if ( $result->isBrokenTitle() ) {
return '';
}
return false;
}
- /**
- * Check if query starts with all: prefix
- *
- * @param string $term The string to check
- * @return bool
- */
- protected function startsWithAll( $term ) {
-
- $allkeyword = $this->msg( 'searchall' )->inContentLanguage()->text();
-
- $parts = explode( ':', $term );
- if ( count( $parts ) > 1 ) {
- return $parts[0] == $allkeyword;
- }
-
- return false;
- }
-
/**
* @since 1.18
*