Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
0.00% |
0 / 26 |
Hooks | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 26 |
onApiOpenSearchSuggest | |
0.00% |
0 / 1 |
42 | |
0.00% |
0 / 26 |
<?php | |
namespace TextExtracts; | |
use ApiBase; | |
use ApiMain; | |
use ApiResult; | |
use FauxRequest; | |
use MediaWiki\MediaWikiServices; | |
/** | |
* @license GPL-2.0-or-later | |
*/ | |
class Hooks { | |
/** | |
* ApiOpenSearchSuggest hook handler | |
* @param array &$results Array of search results | |
*/ | |
public static function onApiOpenSearchSuggest( &$results ) { | |
$config = MediaWikiServices::getInstance()->getConfigFactory()->makeConfig( 'textextracts' ); | |
if ( !$config->get( 'ExtractsExtendOpenSearchXml' ) || $results === [] ) { | |
return; | |
} | |
foreach ( array_chunk( array_keys( $results ), ApiBase::LIMIT_SML1 ) as $pageIds ) { | |
$api = new ApiMain( new FauxRequest( | |
[ | |
'action' => 'query', | |
'prop' => 'extracts', | |
'explaintext' => true, | |
'exintro' => true, | |
'exlimit' => count( $pageIds ), | |
'pageids' => implode( '|', $pageIds ), | |
] ) | |
); | |
$api->execute(); | |
$data = $api->getResult()->getResultData( [ 'query', 'pages' ] ); | |
foreach ( $pageIds as $id ) { | |
$contentKey = $data[$id]['extract'][ApiResult::META_CONTENT] ?? '*'; | |
if ( isset( $data[$id]['extract'][$contentKey] ) ) { | |
$results[$id]['extract'] = $data[$id]['extract'][$contentKey]; | |
$results[$id]['extract trimmed'] = false; | |
} | |
} | |
} | |
} | |
} |