* Inlinise Preferences::loadOldSearchNs() in SearchEngine::userNamespaces(); the...
authorAlexandre Emsenhuber <ialex@users.mediawiki.org>
Fri, 20 Jan 2012 16:12:34 +0000 (16:12 +0000)
committerAlexandre Emsenhuber <ialex@users.mediawiki.org>
Fri, 20 Jan 2012 16:12:34 +0000 (16:12 +0000)
* Made code clearer and removed duplication
* Marked Preferences::loadOldSearchNs() as deprecated

includes/Preferences.php
includes/search/SearchEngine.php

index 942b04f..a42c384 100644 (file)
@@ -1456,10 +1456,13 @@ class Preferences {
        }
 
        /**
+        * @deprecated in 1.19; will be removed in 1.20.
         * @param $user User
         * @return array
         */
        public static function loadOldSearchNs( $user ) {
+               wfDeprecated( __METHOD__, '1.19' );
+
                $searchableNamespaces = SearchEngine::searchableNamespaces();
                // Back compat with old format
                $arr = array();
index b3f5da9..2f7dfd7 100644 (file)
@@ -344,20 +344,22 @@ class SearchEngine {
        public static function userNamespaces( $user ) {
                global $wgSearchEverythingOnlyLoggedIn;
 
-               // get search everything preference, that can be set to be read for logged-in users
-               $searcheverything = false;
-               if ( ( $wgSearchEverythingOnlyLoggedIn && $user->isLoggedIn() )
-                       || !$wgSearchEverythingOnlyLoggedIn )
-                       $searcheverything = $user->getOption( 'searcheverything' );
-
-               // searcheverything overrides other options
-               if ( $searcheverything )
-                       return array_keys( SearchEngine::searchableNamespaces() );
-
-               $arr = Preferences::loadOldSearchNs( $user );
                $searchableNamespaces = SearchEngine::searchableNamespaces();
 
-               $arr = array_intersect( $arr, array_keys( $searchableNamespaces ) ); // Filter
+               // get search everything preference, that can be set to be read for logged-in users
+               // it overrides other options
+               if ( !$wgSearchEverythingOnlyLoggedIn || $user->isLoggedIn() ) {
+                       if ( $user->getOption( 'searcheverything' ) ) {
+                               return array_keys( $searchableNamespaces );
+                       }
+               }
+
+               $arr = array();
+               foreach ( $searchableNamespaces as $ns => $name ) {
+                       if ( $user->getOption( 'searchNs' . $ns ) ) {
+                               $arr[] = $ns;
+                       }
+               }
 
                return $arr;
        }