diff --git a/VERSIONS_HOTLINE/80536 b/VERSIONS_HOTLINE/80536 new file mode 100644 index 0000000000000000000000000000000000000000..320839e6cccfdc2f3d92fbe6a41db9c7d73ed163 --- /dev/null +++ b/VERSIONS_HOTLINE/80536 @@ -0,0 +1 @@ + - ticket #80536 : Recherche avancée : prise en compte du mix des axes de recherches avec des facettes dynamiques \ No newline at end of file diff --git a/application/modules/opac/controllers/RechercheController.php b/application/modules/opac/controllers/RechercheController.php index 86188d06a74153d603f06d076e68f1de217d9d61..03b098d8deded4330a6c7e948e1d0f272ced217b 100644 --- a/application/modules/opac/controllers/RechercheController.php +++ b/application/modules/opac/controllers/RechercheController.php @@ -87,16 +87,8 @@ class RechercheController extends ZendAfi_Controller_Action { unset($params['q']); } - if($dynamic_facets = $this->_extractDynamicFacets($params) ) { - $url = $this->newCriteresRecherches($params) - ->getUrlWithMultifacetsUpdate($dynamic_facets); - return $this->_redirect($this->view->url($url, - null, - true), - ['prependBase' => false]); - } - - if ($multifacets = $this->_extractMultifacetsPost()) { + if ($multifacets = array_merge($this->_extractDynamicFacets($params), + $this->_extractMultifacetsPost())) { $url = $this->newCriteresRecherches($params) ->getUrlWithMultifacetsUpdate($multifacets); $this->_redirect($this->view->url($url, null, true), @@ -193,7 +185,7 @@ class RechercheController extends ZendAfi_Controller_Action { protected function _extractMultifacetsPost() { return $this->_request->isPost() ? ZendAfi_View_Helper_Facettes::extractMultiFacets($this->_request->getPost()) - : null; + : []; } diff --git a/tests/scenarios/AdvancedSearch/AdvancedSearchTest.php b/tests/scenarios/AdvancedSearch/AdvancedSearchTest.php index 6c03141b37aa2e43b5d749655d78e727a5ef096d..1b5082f4820c544e53e38b341e3922018b704074 100644 --- a/tests/scenarios/AdvancedSearch/AdvancedSearchTest.php +++ b/tests/scenarios/AdvancedSearch/AdvancedSearchTest.php @@ -659,10 +659,42 @@ class AdvancedSearchMultiFacetsPostDispatchTest extends Admin_AbstractController $_storm_default_to_volatile = true; + public function setUp() { + parent::setUp(); + $this->fixture('Class_CodifThesaurus', + ['id' => 3, + 'libelle' => 'Document', + 'libelle_facette' => 'Document', + 'id_thesaurus' => 'DOCU', + 'id_origine' => null, + 'code' => 'DOCU', + 'rules' => '{"label":" 99$t "}']); + + $this->fixture('Class_CodifThesaurus', + ['id' => 4, + 'libelle' => 'SIFI', + 'libelle_facette' => 'Science fiction', + 'id_thesaurus' => 'DOCU0001', + 'id_origine' => null, + 'code' => 'DOCU', + 'rules' => '{"label":" 99$t "}']); + } + + /** @test */ public function shouldRedirectToRechercheSimpleMultifacetsA12MinusA42MinusM608() { $this->postDispatch('/recherche/simple', ['custom_multifacets_author' => ['A12', 'A42'], 'custom_multifacets_subject' => 'M608']); $this->assertRedirectTo('/recherche/simple/multifacets/A12-A42-M608'); } + + + + /** @test */ + public function mixMultifacetsAndDynamicFacetsShouldMergeFacets() { + $this->postDispatch('/recherche/simple', [ 'custom_multifacets_author' => ['A12', 'A42'], + 'custom_multifacets_subject' => 'M608', + 'rech_HDOCU' => 'SIFI']); + $this->assertRedirectTo('/recherche/simple/multifacets/HDOCU0001-A12-A42-M608'); + } } \ No newline at end of file