1 | <?php |
---|
2 | |
---|
3 | /** |
---|
4 | * Implementation of hook_views_convert(). |
---|
5 | */ |
---|
6 | function date_views_convert($display, $type, &$view, $field, $id = NULL) { |
---|
7 | static $date_fields; |
---|
8 | if (!isset($date_fields)) { |
---|
9 | $date_fields = array(); |
---|
10 | $content_types = content_types(); |
---|
11 | foreach ($content_types as $content_type) { |
---|
12 | foreach ($content_type['fields'] as $content_field) { |
---|
13 | if ($content_field['module'] == 'date') { |
---|
14 | $date_fields["$content_field[field_name]_value_default"] = 'default'; |
---|
15 | $date_fields["$content_field[field_name]_value_year"] = 'year'; |
---|
16 | $date_fields["$content_field[field_name]_value_month"] = 'month'; |
---|
17 | $date_fields["$content_field[field_name]_value_day"] = 'day'; |
---|
18 | $date_fields["$content_field[field_name]_value_to|default"] = 'to|default'; |
---|
19 | $date_fields["$content_field[field_name]_value_to|year"] = 'to|year'; |
---|
20 | $date_fields["$content_field[field_name]_value_to|month"] = 'to|month'; |
---|
21 | $date_fields["$content_field[field_name]_value_to|day"] = 'to|day'; |
---|
22 | } |
---|
23 | } |
---|
24 | } |
---|
25 | } |
---|
26 | switch ($type) { |
---|
27 | case 'filter': |
---|
28 | if (isset($date_fields[$field['field']])) { |
---|
29 | $item = $view->get_item($display, 'filter', $id); |
---|
30 | switch ($date_fields[$field['field']]) { |
---|
31 | case 'default': |
---|
32 | $field_name = drupal_substr($field['field'], 0, -14); |
---|
33 | $item['date_fields'] = array('node_data_'. $field_name .'.'. $field_name .'_value'); |
---|
34 | $item['granularity'] = 'second'; |
---|
35 | break; |
---|
36 | case 'year': |
---|
37 | $field_name = drupal_substr($field['field'], 0, -11); |
---|
38 | $item['date_fields'] = array('node_data_'. $field_name .'.'. $field_name .'_value'); |
---|
39 | $item['granularity'] = 'year'; |
---|
40 | break; |
---|
41 | case 'month': |
---|
42 | $field_name = drupal_substr($field['field'], 0, -12); |
---|
43 | $item['date_fields'] = array('node_data_'. $field_name .'.'. $field_name .'_value'); |
---|
44 | $item['granularity'] = 'month'; |
---|
45 | break; |
---|
46 | case 'day': |
---|
47 | $field_name = drupal_substr($field['field'], 0, -10); |
---|
48 | $item['date_fields'] = array('node_data_'. $field_name .'.'. $field_name .'_value'); |
---|
49 | $item['granularity'] = 'day'; |
---|
50 | break; |
---|
51 | case 'to|default': |
---|
52 | $field_name = drupal_substr($field['field'], 0, -17); |
---|
53 | $item['date_fields'] = array('node_data_'. $field_name .'.'. $field_name .'_value2'); |
---|
54 | $item['granularity'] = 'second'; |
---|
55 | break; |
---|
56 | case 'to|year': |
---|
57 | $field_name = drupal_substr($field['field'], 0, -14); |
---|
58 | $item['date_fields'] = array('node_data_'. $field_name .'.'. $field_name .'_value2'); |
---|
59 | $item['granularity'] = 'year'; |
---|
60 | break; |
---|
61 | case 'to|month': |
---|
62 | $field_name = drupal_substr($field['field'], 0, -15); |
---|
63 | $item['date_fields'] = array('node_data_'. $field_name .'.'. $field_name .'_value2'); |
---|
64 | $item['granularity'] = 'month'; |
---|
65 | break; |
---|
66 | case 'to|day': |
---|
67 | $field_name = drupal_substr($field['field'], 0, -13); |
---|
68 | $item['date_fields'] = array('node_data_'. $field_name .'.'. $field_name .'_value2'); |
---|
69 | $item['granularity'] = 'day'; |
---|
70 | break; |
---|
71 | } |
---|
72 | $item['table'] = 'node'; |
---|
73 | $item['field'] = 'date_filter'; |
---|
74 | $item['form_type'] = 'date_text'; |
---|
75 | $item['operator'] = $field['operator'] == '<>' ? '!=' : $field['operator']; |
---|
76 | if ($field['value'] == 'now' || $field['options'] == 'now') { |
---|
77 | $item['default_date'] = 'now'; |
---|
78 | } |
---|
79 | else { |
---|
80 | $item['value'] = $field['value']; |
---|
81 | $item['default_date'] = $field['options']; |
---|
82 | } |
---|
83 | $view->set_item($display, 'filter', $id, $item); |
---|
84 | } |
---|
85 | break; |
---|
86 | } |
---|
87 | } |
---|