Merge "Allow 'all:' on all wikis in addition to 'searchall' translation"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 11 May 2018 22:05:22 +0000 (22:05 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 11 May 2018 22:05:22 +0000 (22:05 +0000)
includes/search/SearchEngine.php

index 7e6e8e6..0f65711 100644 (file)
@@ -335,12 +335,25 @@ abstract class SearchEngine {
                        return false;
                }
                $extractedNamespace = null;
+               $allkeywords = [];
 
-               $allkeyword = wfMessage( 'searchall' )->inContentLanguage()->text() . ":";
-               if ( strncmp( $query, $allkeyword, strlen( $allkeyword ) ) == 0 ) {
-                       $extractedNamespace = null;
-                       $parsed = substr( $query, strlen( $allkeyword ) );
-               } elseif ( strpos( $query, ':' ) !== false ) {
+               $allkeywords[] = wfMessage( 'searchall' )->inContentLanguage()->text() . ":";
+               // force all: so that we have a common syntax for all the wikis
+               if ( !in_array( 'all:', $allkeywords ) ) {
+                       $allkeywords[] = 'all:';
+               }
+
+               $allQuery = false;
+               foreach ( $allkeywords as $kw ) {
+                       if ( strncmp( $query, $kw, strlen( $kw ) ) == 0 ) {
+                               $extractedNamespace = null;
+                               $parsed = substr( $query, strlen( $kw ) );
+                               $allQuery = true;
+                               break;
+                       }
+               }
+
+               if ( !$allQuery && strpos( $query, ':' ) !== false ) {
                        // TODO: should we unify with PrefixSearch::extractNamespace ?
                        $prefix = str_replace( ' ', '_', substr( $query, 0, strpos( $query, ':' ) ) );
                        $index = $wgContLang->getNsIndex( $prefix );