Skip to content
Snippets Groups Projects
Commit 3ec610a1 authored by Ere Maijala's avatar Ere Maijala Committed by Demian Katz
Browse files

Add hierarchical facet limit (which overrides other limits when set).

parent 304d351e
No related merge requests found
...@@ -54,6 +54,13 @@ trait FacetLimitTrait ...@@ -54,6 +54,13 @@ trait FacetLimitTrait
*/ */
protected $facetLimitByField = []; protected $facetLimitByField = [];
/**
* Hierarchical facet limit when facets are requested.
*
* @var int|null
*/
protected $hierarchicalFacetLimit = null;
/** /**
* Initialize facet limit from a Config object. * Initialize facet limit from a Config object.
* *
...@@ -95,6 +102,28 @@ trait FacetLimitTrait ...@@ -95,6 +102,28 @@ trait FacetLimitTrait
$this->facetLimitByField = $new; $this->facetLimitByField = $new;
} }
/**
* Get current limit for hierarchical facets
*
* @return int
*/
public function getHierarchicalFacetLimit()
{
return $this->hierarchicalFacetLimit;
}
/**
* Set limit for hierarchical facets
*
* @param int $limit New limit
*
* @return void
*/
public function setHierarchicalFacetLimit($limit)
{
$this->hierarchicalFacetLimit = $limit;
}
/** /**
* Get the facet limit for the specified field. * Get the facet limit for the specified field.
* *
...@@ -104,6 +133,19 @@ trait FacetLimitTrait ...@@ -104,6 +133,19 @@ trait FacetLimitTrait
*/ */
protected function getFacetLimitForField($field) protected function getFacetLimitForField($field)
{ {
return $this->facetLimitByField[$field] ?? $this->facetLimit; $limit = $this->facetLimitByField[$field] ?? $this->facetLimit;
// Check for a different limit for hierarchical facets:
if (null !== $this->hierarchicalFacetLimit
&& $limit !== $this->hierarchicalFacetLimit
&& is_callable([$this->getOptions(), 'getHierarchicalFacets'])
) {
$hierarchicalFacets = $this->getOptions()->getHierarchicalFacets();
if (in_array($field, $hierarchicalFacets)) {
$limit = $this->hierarchicalFacetLimit;
}
}
return $limit;
} }
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment