API: Optimize read rights check in opensearch so $wgUser doesn't get unstubbed if...
authorRoan Kattouw <catrope@users.mediawiki.org>
Mon, 15 Feb 2010 20:20:00 +0000 (20:20 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Mon, 15 Feb 2010 20:20:00 +0000 (20:20 +0000)
includes/api/ApiOpenSearch.php

index 567f36b..e11d7e6 100644 (file)
@@ -42,15 +42,15 @@ class ApiOpenSearch extends ApiBase {
        }
 
        public function execute() {
-               global $wgEnableOpenSearchSuggest, $wgSearchSuggestCacheExpiry;
+               global $wgEnableOpenSearchSuggest, $wgSearchSuggestCacheExpiry, $wgGroupPermissions, $wgUser;
                $params = $this->extractRequestParams();
                $search = $params['search'];
                $limit = $params['limit'];
                $namespaces = $params['namespace'];
                $suggest = $params['suggest'];
 
-               // MWSuggest or similar hit
-               if ( $suggest && !$wgEnableOpenSearchSuggest )
+               // MWSuggest or similar hit, or hit without read rights
+               if ( ( $suggest && !$wgEnableOpenSearchSuggest ) || ( !$wgGroupPermissions['*']['read'] && !$wgUser->isAllowed( 'read' ) ) )
                        $srchres = array();
                else {
                        // Open search results may be stored for a very long
@@ -108,4 +108,8 @@ class ApiOpenSearch extends ApiBase {
        public function getVersion() {
                return __CLASS__ . ': $Id$';
        }
+
+       public function isReadMode() {
+               return false;
+       }
 }