public function testDoQueryForNearbyResults() { $pageRequestOptions = new PageRequestOptions('Foo/Bar', array()); $pageRequestOptions->initialize(); $queryResult = $this->getMockBuilder('\\SMWQueryResult')->disableOriginalConstructor()->getMock(); $queryResult->expects($this->any())->method('getNext')->will($this->returnValue(false)); $store = $this->getMockBuilder('\\SMW\\Store')->disableOriginalConstructor()->getMockForAbstractClass(); $store->expects($this->once())->method('getQueryResult')->with($this->isInstanceOf('\\SMWQuery'))->will($this->returnValue($queryResult)); $instance = new QueryResultLookup($store); $this->assertInternaltype('array', $instance->doQueryForNearbyResults($pageRequestOptions, 1)); }
private function getNearbyResults($exactResults, $exactCount) { $resultList = ''; $greaterResults = $this->queryResultLookup->doQueryForNearbyResults($this->pageRequestOptions, $exactCount, true); $smallerResults = $this->queryResultLookup->doQueryForNearbyResults($this->pageRequestOptions, $exactCount, false); // Calculate how many greater and smaller results should be displayed $greaterCount = count($greaterResults); $smallerCount = count($smallerResults); if ($greaterCount + $smallerCount + $exactCount > $this->pageRequestOptions->limit) { $lhalf = round(($this->pageRequestOptions->limit - $exactCount) / 2); if ($lhalf < $greaterCount) { if ($lhalf < $smallerCount) { $smallerCount = $lhalf; $greaterCount = $lhalf; } else { $greaterCount = $this->pageRequestOptions->limit - ($exactCount + $smallerCount); } } else { $smallerCount = $this->pageRequestOptions->limit - ($exactCount + $greaterCount); } } if ($greaterCount + $smallerCount + $exactCount == 0) { return array('', $resultList, 0); } $resultMessage = $this->messageBuilder->getMessage('smw_sbv_displayresultfuzzy', $this->pageRequestOptions->property->getShortHTMLText($this->linker), $this->pageRequestOptions->value->getShortHTMLText($this->linker))->text(); $resultList .= $this->makeResultList($smallerResults, $smallerCount, false); if ($exactCount == 0) { $resultList .= " <em><strong><small>" . $this->messageBuilder->getMessage('parentheses')->rawParams($this->pageRequestOptions->value->getLongHTMLText())->escaped() . "</small></strong></em>"; } else { $resultList .= $this->makeResultList($exactResults, $exactCount, true, true); } $resultList .= $this->makeResultList($greaterResults, $greaterCount, true); return array($resultMessage, $resultList, $greaterCount + $exactCount); }