jenkins-bot has submitted this change and it was merged.
Change subject: Extract replacePrefixes into a static method
......................................................................
Extract replacePrefixes into a static method
Useful for some search engines that have a keyword that wants
to reuse this logic without building a new SearchEngine object.
Change-Id: Iee5bfd1da70b8339a98555ba062bd33b21f0b761
---
M includes/search/SearchEngine.php
1 file changed, 29 insertions(+), 5 deletions(-)
Approvals:
EBernhardson: Looks good to me, approved
jenkins-bot: Verified
diff --git a/includes/search/SearchEngine.php b/includes/search/SearchEngine.php
index 1eba141..fb9b8a3 100644
--- a/includes/search/SearchEngine.php
+++ b/includes/search/SearchEngine.php
@@ -267,36 +267,60 @@
/**
* Parse some common prefixes: all (search everything)
- * or namespace names
+ * or namespace names and set the list of namespaces
+ * of this class accordingly.
*
* @param string $query
* @return string
*/
function replacePrefixes( $query ) {
+ $queryAndNs = self::parseNamespacePrefixes( $query );
+ if ( $queryAndNs === false ) {
+ return $query;
+ }
+ $this->namespaces = $queryAndNs[1];
+ return $queryAndNs[0];
+ }
+
+ /**
+ * Parse some common prefixes: all (search everything)
+ * or namespace names
+ *
+ * @param string $query
+ * @return false|array false if no namespace was extracted, an array
+ * with the parsed query at index 0 and an array of namespaces at index
+ * 1 (or null for all namespaces).
+ */
+ public static function parseNamespacePrefixes( $query ) {
global $wgContLang;
$parsed = $query;
if ( strpos( $query, ':' ) === false ) { // nothing to do
- return $parsed;
+ return false;
}
+ $extractedNamespace = null;
$allkeyword = wfMessage( 'searchall'
)->inContentLanguage()->text() . ":";
if ( strncmp( $query, $allkeyword, strlen( $allkeyword ) ) == 0
) {
- $this->namespaces = null;
+ $extractedNamespace = null;
$parsed = substr( $query, strlen( $allkeyword ) );
} elseif ( strpos( $query, ':' ) !== false ) {
+ // TODO: should we unify with
PrefixSearch::extractNamespace ?
$prefix = str_replace( ' ', '_', substr( $query, 0,
strpos( $query, ':' ) ) );
$index = $wgContLang->getNsIndex( $prefix );
if ( $index !== false ) {
- $this->namespaces = [ $index ];
+ $extractedNamespace = [ $index ];
$parsed = substr( $query, strlen( $prefix ) + 1
);
+ } else {
+ return false;
}
}
+
if ( trim( $parsed ) == '' ) {
$parsed = $query; // prefix was the whole query
}
- return $parsed;
+ return [ $parsed, $extractedNamespace ];
}
/**
--
To view, visit https://gerrit.wikimedia.org/r/311419
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Iee5bfd1da70b8339a98555ba062bd33b21f0b761
Gerrit-PatchSet: 6
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: DCausse <[email protected]>
Gerrit-Reviewer: EBernhardson <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits