function ApacheSolrFacetapiDate::getDateRange in Apache Solr Search 8
Same name and namespace in other branches
- 6.3 plugins/facetapi/query_type_date.inc \ApacheSolrFacetapiDate::getDateRange()
- 7 plugins/facetapi/query_type_date.inc \ApacheSolrFacetapiDate::getDateRange()
Gets the range of dates we are using.
Parameters
DrupalSolrQueryInterface $query: A SolrBaseQuery object.
Return value
bool|array An array containing the gap and range information or false if not present
1 call to ApacheSolrFacetapiDate::getDateRange()
- ApacheSolrFacetapiDate::execute in plugins/
facetapi/ query_type_date.inc - Adds the filter to the query object.
File
- plugins/
facetapi/ query_type_date.inc, line 62 - Date query type plugin for the Apache Solr adapter.
Class
- ApacheSolrFacetapiDate
- Plugin for "date" query types.
Code
function getDateRange(DrupalSolrQueryInterface $query) {
$return = NULL;
$gap = NULL;
// Attempts to get next gap from passed date filters.
foreach ($this->adapter
->getActiveItems($this->facet) as $item) {
if ($gap = facetapi_get_date_gap($item['start'], $item['end'])) {
$next_gap = facetapi_get_next_date_gap($gap, FACETAPI_DATE_SECOND);
if ($next_gap == $gap) {
$next_gap = NULL;
return NULL;
}
$return = array(
"{$item['start']}/{$next_gap}",
"{$item['end']}+1{$next_gap}/{$next_gap}",
"+1{$next_gap}",
);
}
}
// If no filters were passed, get default range.
if (NULL === $return) {
// Builds SQL that gets minimum and maximum values from node table.
$minimum = $maximum = FALSE;
if ($this->facet['min callback'] && is_callable($this->facet['min callback'])) {
$minimum = $this->facet['min callback']($this->facet);
}
if ($this->facet['max callback'] && is_callable($this->facet['max callback'])) {
$maximum = $this->facet['max callback']($this->facet);
}
// Gets the default gap.
//$gap = FACETAPI_DATE_YEAR;
if ($minimum && $maximum) {
$gap = facetapi_get_timestamp_gap($minimum, $maximum);
$minimum = facetapi_isodate($minimum, $gap);
$maximum = facetapi_isodate($maximum, $gap);
$return = array(
"{$minimum}/{$gap}",
"{$maximum}+1{$gap}/{$gap}",
"+1{$gap}",
);
}
}
// Returns the range information.
return $return;
}