MockSearchResultSet.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <?php
  2. class MockSearchResultSet extends SearchResultSet {
  3. /*
  4. * @var SearchResultSet[][] Map from result type to list of results for
  5. * that type.
  6. */
  7. private $interwikiResults;
  8. /**
  9. * @param SearchResult[]|callable[] $results
  10. * @param SearchResultSet[][]|callable[][] $interwikiResults Map from result type
  11. * to list of results for that type.
  12. */
  13. public function __construct( array $results, array $interwikiResults = [] ) {
  14. parent::__construct( false, false );
  15. $this->results = $results;
  16. $this->interwikiResults = $interwikiResults;
  17. }
  18. public function numRows() {
  19. return count( $this->results );
  20. }
  21. public function hasInterwikiResults( $type = self::SECONDARY_RESULTS ) {
  22. return isset( $this->interwikiResults[$type] ) &&
  23. count( $this->interwikiResults[$type] ) > 0;
  24. }
  25. public function extractResults() {
  26. $results = parent::extractResults();
  27. foreach ( $results as &$result ) {
  28. // Resolve deferred results; needed to work around T203279
  29. if ( is_callable( $result ) ) {
  30. $result = $result();
  31. }
  32. }
  33. return $results;
  34. }
  35. public function getInterwikiResults( $type = self::SECONDARY_RESULTS ) {
  36. if ( $this->hasInterwikiResults( $type ) ) {
  37. return $this->interwikiResults[$type];
  38. } else {
  39. return null;
  40. }
  41. }
  42. }