Fix exception when searching for stuff beginning with "Media:"
[lhc/web/wiklou.git] / includes / search / SearchEngine.php
index c17f8c2..fa7b872 100644 (file)
@@ -163,7 +163,7 @@ class SearchEngine {
 
        /**
         * Really find the title match.
-        * @return null|\Title
+        * @return null|Title
         */
        private static function getNearMatchInternal( $searchterm ) {
                global $wgContLang, $wgEnableSearchContributorsByIP;
@@ -187,6 +187,11 @@ class SearchEngine {
                                return null;
                        }
 
+                       # Try files if searching in the Media: namespace
+                       if ( $title->getNamespace() == NS_MEDIA ) {
+                               $title = Title::makeTitle( NS_FILE, $title->getText() );
+                       }
+
                        if ( $title->isSpecialPage() || $title->isExternal() || $title->exists() ) {
                                return $title;
                        }
@@ -505,19 +510,6 @@ class SearchEngine {
                        return $wgCanonicalServer . wfScript( 'api' ) . '?action=opensearch&search={searchTerms}&namespace=' . $ns;
                }
        }
-
-       /**
-        * Get internal MediaWiki Suggest template
-        *
-        * @return String
-        */
-       public static function getMWSuggestTemplate() {
-               global $wgMWSuggestTemplate, $wgServer;
-               if ( $wgMWSuggestTemplate )
-                       return $wgMWSuggestTemplate;
-               else
-                       return $wgServer . wfScript( 'api' ) . '?action=opensearch&search={searchTerms}&namespace={namespaces}&suggest';
-       }
 }
 
 /**
@@ -805,9 +797,10 @@ class SearchResult {
        protected function initText() {
                if ( !isset( $this->mText ) ) {
                        if ( $this->mRevision != null ) {
-                               //TODO: don't use the text, but the content object!
+                               //TODO: if we could plug in some code that knows about special content models *and* about
+                               //      special features of the search engine, the search could benefit.
                                $content = $this->mRevision->getContent();
-                               $this->mText = $content->getTextForSearchIndex();
+                               $this->mText = $content ? $content->getTextForSearchIndex() : '';
                        } else { // TODO: can we fetch raw wikitext for commons images?
                                $this->mText = '';
                        }