Пример #1
0
 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));
 }
Пример #2
0
 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 .= "&#160;<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);
 }