X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=includes%2Fsearch%2FSearchResult.php;h=f85c58fe2d26c1f29ab242b83eaaf84d6236496e;hp=dc294c324e2f18d699a7101e71744556658394de;hb=facddc488ae8714e1f41035599a8f54056d0ab2f;hpb=967a96e7fa5910f8fc451590decb381dbfb481ba diff --git a/includes/search/SearchResult.php b/includes/search/SearchResult.php index dc294c324e..f85c58fe2d 100644 --- a/includes/search/SearchResult.php +++ b/includes/search/SearchResult.php @@ -57,8 +57,8 @@ class SearchResult { protected $searchEngine; /** - * A set of extension data. - * @var array[] + * A function returning a set of extension data. + * @var Closure|null */ protected $extensionData; @@ -66,7 +66,7 @@ class SearchResult { * Return a new SearchResult and initializes it with a title. * * @param Title $title - * @param SearchResultSet $parentSet + * @param SearchResultSet|null $parentSet * @return SearchResult */ public static function newFromTitle( $title, SearchResultSet $parentSet = null ) { @@ -267,17 +267,34 @@ class SearchResult { * @return array[] */ public function getExtensionData() { - return $this->extensionData; + if ( $this->extensionData ) { + return call_user_func( $this->extensionData ); + } else { + return []; + } } /** * Set extension data for this result. * The data is: * augmentor name => data - * @param array[] $extensionData + * @param Closure|array $extensionData Takes no arguments, returns + * either array of extension data or null. */ - public function setExtensionData( array $extensionData ) { - $this->extensionData = $extensionData; + public function setExtensionData( $extensionData ) { + if ( $extensionData instanceof Closure ) { + $this->extensionData = $extensionData; + } elseif ( is_array( $extensionData ) ) { + wfDeprecated( __METHOD__ . ' with array argument', '1.32' ); + $this->extensionData = function () use ( $extensionData ) { + return $extensionData; + }; + } else { + $type = is_object( $extensionData ) + ? get_class( $extensionData ) + : gettype( $extensionData ); + throw new \InvalidArgumentException( + __METHOD__ . " must be called with Closure|array, but received $type" ); + } } - }