mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
parent
94b213ccf3
commit
eea91de0e0
@ -124,20 +124,55 @@ class SearchProvider
|
||||
* @param number $start
|
||||
* @param number $limit
|
||||
* @return array of html results
|
||||
* @throws UnknowSearchDomainException if the domain is unknow
|
||||
*/
|
||||
public function getResults($pattern, $start = 0, $limit = 50)
|
||||
public function getSearchResults($pattern, $start = 0, $limit = 50)
|
||||
{
|
||||
$terms = $this->parse($pattern);
|
||||
$results = array();
|
||||
|
||||
foreach ($this->searchServices as $service) {
|
||||
if ($service->supports($terms['_domain'])) {
|
||||
$results[] = $service->renderResult($terms, $start, $limit);
|
||||
|
||||
//sort searchServices by order
|
||||
$sortedSearchServices = array();
|
||||
foreach($this->searchServices as $service) {
|
||||
$sortedSearchServices[$service->getOrder()] = $service;
|
||||
}
|
||||
|
||||
if ($terms['_domain'] !== NULL) {
|
||||
foreach ($sortedSearchServices as $service) {
|
||||
if ($service->supports($terms['_domain'])) {
|
||||
$results[] = $service->renderResult($terms, $start, $limit);
|
||||
}
|
||||
}
|
||||
|
||||
if (count($results) === 0) {
|
||||
throw new UnknowSearchDomainException($terms['_domain']);
|
||||
}
|
||||
} else { // no domain provided, we use default search
|
||||
foreach($sortedSearchServices as $service) {
|
||||
if ($service->isActiveByDefault()) {
|
||||
$results[] = $service->renderResult($terms, $start, $limit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//sort array
|
||||
ksort($results);
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
public function getResultByName($pattern, $name, $start = 0, $limit = 50)
|
||||
{
|
||||
$terms = $this->parse($pattern);
|
||||
$search = $this->getByName($name);
|
||||
|
||||
if ($terms['_domain'] !== NULL && !$search->supports($terms['_domain']))
|
||||
{
|
||||
throw new ParsingException("The domain is not supported for the search name");
|
||||
}
|
||||
|
||||
return $search->renderResult($terms, $start, $limit);
|
||||
}
|
||||
|
||||
/**
|
||||
* return search services with a specific name, defined in service
|
||||
@ -149,7 +184,7 @@ class SearchProvider
|
||||
public function getByName($name)
|
||||
{
|
||||
if (isset($this->searchServices[$name])) {
|
||||
return $this->searchServices;
|
||||
return $this->searchServices[$name];
|
||||
} else {
|
||||
throw new UnknowSearchNameException($name);
|
||||
}
|
||||
|
@ -25,11 +25,19 @@ namespace Chill\MainBundle\Search;
|
||||
*
|
||||
* @author Julien Fastré <julien.fastre@champs-libres.coop>
|
||||
*/
|
||||
class UnknowSearchNameException extends \Exception
|
||||
class UnknowSearchDomainException extends \Exception
|
||||
{
|
||||
public function __construct($name)
|
||||
|
||||
private $domain;
|
||||
|
||||
public function __construct($domain)
|
||||
{
|
||||
parent::__construct( "The module search with name $name "
|
||||
. "is not found");
|
||||
parent::__construct( "The domain $domain is not found");
|
||||
$this->domain = $domain;
|
||||
}
|
||||
|
||||
public function getDomain()
|
||||
{
|
||||
return $this->domain;
|
||||
}
|
||||
}
|
||||
|
@ -29,7 +29,6 @@ class UnknowSearchNameException extends \Exception
|
||||
{
|
||||
public function __construct($name)
|
||||
{
|
||||
parent::__construct( "The module search with name $name "
|
||||
. "is not found");
|
||||
parent::__construct( "No module search supports with the name $name");
|
||||
}
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ class SearchProviderTest extends \PHPUnit_Framework_TestCase
|
||||
);
|
||||
//add a domain service
|
||||
$this->addSearchService(
|
||||
$this->createDefaultSearchService('I am domain bar', 20), 'bar'
|
||||
$this->createNonDefaultDomainSearchService('I am domain bar', 20, FALSE), 'bar'
|
||||
);
|
||||
}
|
||||
|
||||
@ -169,11 +169,11 @@ class SearchProviderTest extends \PHPUnit_Framework_TestCase
|
||||
* Test the behaviour when no domain is provided in the search pattern :
|
||||
* the default search should be enabled
|
||||
*/
|
||||
public function testDefaultSearch()
|
||||
public function testSearchResultDefault()
|
||||
{
|
||||
$response = $this->search->getSearchResults('default search');
|
||||
|
||||
$this->markTestSkipped();
|
||||
//$this->markTestSkipped();
|
||||
|
||||
$this->assertEquals(array(
|
||||
"I am default"
|
||||
@ -183,15 +183,15 @@ class SearchProviderTest extends \PHPUnit_Framework_TestCase
|
||||
/**
|
||||
* @expectedException \Chill\MainBundle\Search\UnknowSearchDomainException
|
||||
*/
|
||||
public function testDomainUnknow()
|
||||
public function testSearchResultDomainUnknow()
|
||||
{
|
||||
$response = $this->search->getSearchResults('@unknow domain');
|
||||
|
||||
$this->markTestSkipped();
|
||||
//$this->markTestSkipped();
|
||||
|
||||
}
|
||||
|
||||
public function testDomainSearch()
|
||||
public function testSearchResultDomainSearch()
|
||||
{
|
||||
//add a search service which will be supported
|
||||
$this->addSearchService(
|
||||
@ -208,7 +208,6 @@ class SearchProviderTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
public function testSearchWithinSpecificSearchName()
|
||||
{
|
||||
$this->markTestSkipped();
|
||||
//add a search service which will be supported
|
||||
$this->addSearchService(
|
||||
$this->createNonDefaultDomainSearchService("I am domain foo", 100, TRUE), 'foo'
|
||||
@ -216,9 +215,7 @@ class SearchProviderTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
$response = $this->search->getResultByName('@foo search', 'foo');
|
||||
|
||||
$this->assertEquals(array(
|
||||
'I am domain foo'
|
||||
), $response);
|
||||
$this->assertEquals('I am domain foo', $response);
|
||||
|
||||
}
|
||||
|
||||
@ -227,8 +224,6 @@ class SearchProviderTest extends \PHPUnit_Framework_TestCase
|
||||
*/
|
||||
public function testSearchWithinSpecificSearchNameInConflictWithSupport()
|
||||
{
|
||||
$this->markTestSkipped();
|
||||
|
||||
$response = $this->search->getResultByName('@foo default search', 'bar');
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user