--- /home/mihajlo/b/solr/apachesolr-rc2/apachesolr_search.module 2009-08-20 14:36:09.000000000 +0200 +++ /home/mihajlo/b/solr/apachesolr-working-recording-date-facet/apachesolr_search.module 2009-08-20 19:21:51.000000000 +0200 @@ -280,7 +280,7 @@ function apachesolr_search_add_facet_par foreach (apachesolr_get_enabled_facets() as $module => $module_facets) { foreach($module_facets as $delta => $facet_field) { // TODO: generalize handling of date and range facets. - if ($module == 'apachesolr_search' && ($facet_field == 'created' || $facet_field == 'changed')) { + if ($module == 'apachesolr_search' && ($facet_field == 'created' || $facet_field == 'changed' || $facet_field == 'ds_cck_field_recording_date')) { list($start, $end, $gap) = apachesolr_search_date_range($query, $facet_field); if ($gap) { $params['facet.date'][] = $facet_field; @@ -447,8 +447,13 @@ function apachesolr_search_date_range($q // facet.date.* params from the DB and determine the best search // gap to use. This callback assumes $delta is 'changed' or 'created'. if (!isset($start_iso)) { - $start_iso = apachesolr_date_iso(db_result(db_query("SELECT MIN($facet_field) FROM {node} WHERE status = 1"))); - $end_iso = apachesolr_date_iso(db_result(db_query("SELECT MAX($facet_field) FROM {node} WHERE status = 1"))); + if($facet_field == 'ds_cck_field_recording_date') { + $start_iso = db_result(db_query("SELECT MIN(field_recording_date_value) FROM {content_type_audio_recording}")) . 'Z'; + $end_iso = db_result(db_query("SELECT MAX(field_recording_date_value) FROM {content_type_audio_recording}")) . 'Z'; + } else { + $start_iso = apachesolr_date_iso(db_result(db_query("SELECT MIN($facet_field) FROM {node} WHERE status = 1"))); + $end_iso = apachesolr_date_iso(db_result(db_query("SELECT MAX($facet_field) FROM {node} WHERE status = 1"))); + } $gap = apachesolr_date_determine_gap($start_iso, $end_iso); } // Return a query range from the beginning of a gap period to the beginning @@ -652,7 +657,12 @@ function apachesolr_search_block($op = ' foreach ($fields as $name => $field) { if ($field['field_name'] == $delta) { $index_key = apachesolr_index_key($field); - return apachesolr_facet_block($response, $query, 'apachesolr_search', $delta, $index_key, t('Filter by @field', array('@field' => $field['label']))); + if($delta == 'field_recording_date') { + return apachesolr_date_facet_block($response, $query, 'apachesolr_search', $delta, $index_key, t('Filter by recording date')); + } + else { + return apachesolr_facet_block($response, $query, 'apachesolr_search', $delta, $index_key, t('Filter by @field', array('@field' => $field['label']))); + } } } }