X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSearchEngine.php;h=cd8f804b3fcb7ad101f926a937029f915323e3c2;hb=abfd4695a05e6ca0725e782f009ee95d986f46dd;hp=032865e20dcc6e09d98f34a217204547401ed0cd;hpb=3c36b94027efa623cef3bd0a1854fb86c422b746;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SearchEngine.php b/includes/SearchEngine.php index 032865e20d..cd8f804b3f 100644 --- a/includes/SearchEngine.php +++ b/includes/SearchEngine.php @@ -13,6 +13,7 @@ class SearchEngine { var $limit = 10; var $offset = 0; + var $prefix = ''; var $searchTerms = array(); var $namespaces = array( NS_MAIN ); var $showRedirects = false; @@ -48,6 +49,14 @@ class SearchEngine { return true; } + /** + * Transform search term in cases when parts of the query came as different GET params (when supported) + * e.g. for prefix queries: search=test&prefix=Main_Page/Archive -> test prefix:Main Page/Archive + */ + function transformSearchTerm( $term ) { + return $term; + } + /** * If an exact title match can be find, or a very slightly close match, * return the title. If no match, returns NULL. @@ -127,7 +136,7 @@ class SearchEngine { # Go to images that exist even if there's no local page. # There may have been a funny upload, or it may be on a shared # file repository such as Wikimedia Commons. - if( $title->getNamespace() == NS_IMAGE ) { + if( $title->getNamespace() == NS_FILE ) { $image = wfFindFile( $title ); if( $image ) { return $title; @@ -150,7 +159,7 @@ class SearchEngine { } public static function legalSearchChars() { - return "A-Za-z_'0-9\\x80-\\xFF\\-"; + return "A-Za-z_'.0-9\\x80-\\xFF\\-"; } /** @@ -374,11 +383,11 @@ class SearchEngine { */ public static function getOpenSearchTemplate() { global $wgOpenSearchTemplate, $wgServer, $wgScriptPath; - if($wgOpenSearchTemplate) + if( $wgOpenSearchTemplate ) { return $wgOpenSearchTemplate; - else{ - $ns = implode(',',SearchEngine::defaultNamespaces()); - if(!$ns) $ns = "0"; + } else { + $ns = implode( '|', SearchEngine::defaultNamespaces() ); + if( !$ns ) $ns = "0"; return $wgServer . $wgScriptPath . '/api.php?action=opensearch&search={searchTerms}&namespace='.$ns; } } @@ -394,7 +403,7 @@ class SearchEngine { if($wgMWSuggestTemplate) return $wgMWSuggestTemplate; else - return $wgServer . $wgScriptPath . '/api.php?action=opensearch&search={searchTerms}&namespace={namespaces}'; + return $wgServer . $wgScriptPath . '/api.php?action=opensearch&search={searchTerms}&namespace={namespaces}&suggest'; } } @@ -461,7 +470,7 @@ class SearchResultSet { } /** - * @return string highlighted suggested query, '' if none + * @return string HTML highlighted suggested query, '' if none */ function getSuggestionSnippet(){ return ''; @@ -538,7 +547,7 @@ class SearchResult { $this->mTitle = Title::makeTitle( $row->page_namespace, $row->page_title ); if( !is_null($this->mTitle) ){ $this->mRevision = Revision::newFromTitle( $this->mTitle ); - if( $this->mTitle->getNamespace() === NS_IMAGE ) + if( $this->mTitle->getNamespace() === NS_FILE ) $this->mImage = wfFindFile( $this->mTitle ); } } @@ -745,7 +754,7 @@ class SearchHighlighter { if($key == 2){ // see if this is an image link $ns = substr($val[0],2,-1); - if( $wgContLang->getNsIndex($ns) != NS_IMAGE ) + if( $wgContLang->getNsIndex($ns) != NS_FILE ) break; } @@ -1115,7 +1124,7 @@ class SearchHighlighter { global $wgContLang; $ns = substr( $matches[1], 0, $colon ); $index = $wgContLang->getNsIndex($ns); - if( $index !== false && ($index == NS_IMAGE || $index == NS_CATEGORY) ) + if( $index !== false && ($index == NS_FILE || $index == NS_CATEGORY) ) return $matches[0]; // return the whole thing else return $matches[2]; @@ -1156,12 +1165,12 @@ class SearchHighlighter { continue; } --$contextlines; - $pre = $wgContLang->truncate( $m[1], -$contextchars, ' ... ' ); + $pre = $wgContLang->truncate( $m[1], -$contextchars ); if ( count( $m ) < 3 ) { $post = ''; } else { - $post = $wgContLang->truncate( $m[3], $contextchars, ' ... ' ); + $post = $wgContLang->truncate( $m[3], $contextchars ); } $found = $m[2];