From: Brad Jorsch Date: Thu, 28 May 2015 14:38:19 +0000 (-0400) Subject: ApiOpenSearch: Ignore any other unexpected keys in json output X-Git-Tag: 1.31.0-rc.0~11259 X-Git-Url: http://git.heureux-cyclage.org/?a=commitdiff_plain;h=0e6b9fdb6fd221b1352e329e1ee26008c23ccc4c;p=lhc%2Fweb%2Fwiklou.git ApiOpenSearch: Ignore any other unexpected keys in json output Iad295d2f fixed warnings to not break the opensearch json output. But other stuff like $wgDebugToolbar can do the same thing, so let's strip all unrecognized keys to avoid that problem. Bug: T100635 Change-Id: I20b6502482af537ccb703f400508960038213a91 --- diff --git a/includes/api/ApiOpenSearch.php b/includes/api/ApiOpenSearch.php index a93b7cc698..0adb464d5a 100644 --- a/includes/api/ApiOpenSearch.php +++ b/includes/api/ApiOpenSearch.php @@ -384,13 +384,25 @@ class ApiOpenSearchFormatJson extends ApiFormatJson { public function execute() { if ( !$this->getResult()->getResultData( 'error' ) ) { - $warnings = $this->getResult()->removeValue( 'warnings', null ); + $result = $this->getResult(); + + // Ignore warnings or treat as errors, as requested + $warnings = $result->removeValue( 'warnings', null ); if ( $this->warningsAsError && $warnings ) { $this->dieUsage( 'Warnings cannot be represented in OpenSearch JSON format', 'warnings', 0, array( 'warnings' => $warnings ) ); } + + // Ignore any other unexpected keys (e.g. from $wgDebugToolbar) + $remove = array_keys( array_diff_key( + $result->getResultData(), + array( 0 => 'search', 1 => 'terms', 2 => 'descriptions', 3 => 'urls' ) + ) ); + foreach ( $remove as $key ) { + $result->removeValue( $key, null ); + } } parent::execute();