aboutsummaryrefslogtreecommitdiffstats
path: root/includes/specials/SpecialSearch.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/specials/SpecialSearch.php')
-rw-r--r--includes/specials/SpecialSearch.php21
1 files changed, 13 insertions, 8 deletions
diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php
index 927464fbb132..3fa86875d691 100644
--- a/includes/specials/SpecialSearch.php
+++ b/includes/specials/SpecialSearch.php
@@ -110,6 +110,8 @@ class SpecialSearch extends SpecialPage {
/**
* Set up basic search parameters from the request and user settings.
+ *
+ * @see tests/phpunit/includes/specials/SpecialSearchTest.php
*/
public function load() {
$request = $this->getRequest();
@@ -117,27 +119,30 @@ class SpecialSearch extends SpecialPage {
$this->mPrefix = $request->getVal( 'prefix', '' );
$user = $this->getUser();
+
# Extract manually requested namespaces
$nslist = $this->powerSearch( $request );
+ if ( !count( $nslist ) ) {
+ # Fallback to user preference
+ $nslist = SearchEngine::userNamespaces( $user );
+ }
+
$profile = null;
if ( !count( $nslist ) ) {
$profile = 'default';
}
+
$profile = $request->getVal( 'profile', $profile );
$profiles = $this->getSearchProfiles();
if ( $profile === null ) {
// BC with old request format
$profile = 'advanced';
- if ( count( $nslist ) ) {
- foreach( $profiles as $key => $data ) {
- if ( $nslist === $data['namespaces'] && $key !== 'advanced') {
- $profile = $key;
- }
+ foreach( $profiles as $key => $data ) {
+ if ( $nslist === $data['namespaces'] && $key !== 'advanced') {
+ $profile = $key;
}
- $this->namespaces = $nslist;
- } else {
- $this->namespaces = SearchEngine::userNamespaces( $user );
}
+ $this->namespaces = $nslist;
} elseif ( $profile === 'advanced' ) {
$this->namespaces = $nslist;
} else {