Add fallback languages support for ApiOpenSearch.
authorPhilip Tzou <philip@users.mediawiki.org>
Wed, 5 Jan 2011 16:21:01 +0000 (16:21 +0000)
committerPhilip Tzou <philip@users.mediawiki.org>
Wed, 5 Jan 2011 16:21:01 +0000 (16:21 +0000)
includes/api/ApiOpenSearch.php

index 9f2bae0..8b382a4 100644 (file)
@@ -61,6 +61,21 @@ class ApiOpenSearch extends ApiBase {
 
                        $srchres = PrefixSearch::titleSearch( $search, $limit,
                                $namespaces );
+                       
+                       // if the content language has variants, try to retrieve fallback results
+                       if ( ( $fblimit = $limit - count( $srchres ) ) > 0 ) {
+                               global $wgContLang;
+                               $fbsearchs = $wgContLang->autoConvertToAllVariants( $search );
+                               $fbsearchs = array_diff( array_unique( $fbsearchs ), ( array ) $search );
+                               foreach ( $fbsearchs as $fbsearch ) {
+                                       $_srchres = PrefixSearch::titleSearch( $fbsearch, $fblimit,
+                                               $namespaces );
+                                       $srchres = array_merge( $srchres, $_srchres );
+                                       if ( ( $fblimit -= - count( $_srchres ) ) == 0 ) {
+                                               break;
+                                       }
+                               }
+                       }
                }
                // Set top level elements
                $result = $this->getResult();