function apachesolr_date_find_query_gap in Apache Solr Search 6
Same name and namespace in other branches
- 5.2 apachesolr.module \apachesolr_date_find_query_gap()
- 6.2 apachesolr.module \apachesolr_date_find_query_gap()
Determine the gap in a date range query filter that we generated.
This function assumes that the start and end dates are the beginning and end of a single period: 1 year, month, day, hour, minute, or second (all date range query filters we generate meet this criteria). So, if the seconds are different, it is a second gap. If the seconds are the same (incidentally, they will also be 0) but the minutes are different, it is a minute gap. If the minutes are the same but hours are different, it's an hour gap. etc.
Parameters
$start: Start date as an ISO date string.
$end: End date as an ISO date string.
Return value
YEAR, MONTH, DAY, HOUR, MINUTE, or SECOND.
3 calls to apachesolr_date_find_query_gap()
- apachesolr_date_facet_block in ./
apachesolr.module - Helper function for displaying a date facet block.
- apachesolr_date_format_range in ./
apachesolr.module - Format the beginning of a date range query filter that we generated.
- apachesolr_search_date_range in ./
apachesolr_search.module
File
- ./
apachesolr.module, line 1024 - Integration with the Apache Solr search application.
Code
function apachesolr_date_find_query_gap($start_iso, $end_iso) {
$gaps = array(
'SECOND' => 6,
'MINUTE' => 5,
'HOUR' => 4,
'DAY' => 3,
'MONTH' => 2,
'YEAR' => 1,
);
$re = '@(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})@';
if (preg_match($re, $start_iso, $start) && preg_match($re, $end_iso, $end)) {
foreach ($gaps as $gap => $idx) {
if ($start[$idx] != $end[$idx]) {
return $gap;
}
}
}
// can't tell
return 'YEAR';
}