Using Views 5.x-1.6, Content Construction Kit (CCK) 5.x-1.9, and Drupal 5.10
When I upgrade my sites to Date 5.x-2.3 from 5.x-1.latest, I can no longer filter a View on Date(field_date) >= NOW, if I add this filter, no events show up at all in my view. I've even tried deleting my view, and recreating it from scratch. I've tried disabling and uninstalling Calendar and Date (and all their buddies), then wiping their dirs, untaring fresh, reenabling, rebuilding my data... STILL broken. Calendar is working OK but I can't filter my "Events" view for >= now.
This "events" view w/o a filter on now works fine... (generated with views -> export...)
$view = new stdClass();
$view->name = 'events';
$view->description = 'Upcoming Events';
$view->access = array (
);
$view->view_args_php = '';
$view->page = TRUE;
$view->page_title = 'Upcoming Events';
$view->page_header = '<p>Upcoming Troop Events. To add a new event, use Create Content -> <a href="/node/add/event">Event</a></p>';
$view->page_header_format = '1';
$view->page_footer = '';
$view->page_footer_format = '1';
$view->page_empty = '';
$view->page_empty_format = '1';
$view->page_type = 'table';
$view->url = 'events';
$view->use_pager = TRUE;
$view->nodes_per_page = '25';
$view->sort = array (
array (
'tablename' => 'node_data_field_date',
'field' => 'field_date_value',
'sortorder' => 'ASC',
'options' => '',
),
);
$view->argument = array (
);
$view->field = array (
array (
'tablename' => 'node',
'field' => 'title',
'label' => '',
'handler' => 'views_handler_field_nodelink',
'options' => 'link',
),
array (
'tablename' => 'node_data_field_date',
'field' => 'field_date_value',
'label' => '',
'handler' => 'content_views_field_handler_ungroup',
'options' => 'default',
),
array (
'tablename' => 'node',
'field' => 'body',
'label' => '',
'handler' => 'views_handler_field_teaser',
),
);
$view->filter = array (
array (
'tablename' => 'node',
'field' => 'type',
'operator' => 'OR',
'options' => '',
'value' => array (
0 => 'event',
),
),
);
$view->exposed_filter = array (
);
$view->requires = array(node_data_field_date, node);
$views[$view->name] = $view;
This "events" view with the additional filter comes up empty every time.
$view = new stdClass();
$view->name = 'events';
$view->description = 'Upcoming Events';
$view->access = array (
);
$view->view_args_php = '';
$view->page = TRUE;
$view->page_title = 'Upcoming Events';
$view->page_header = '<p>Upcoming Troop Events. To add a new event, use Create Content -> <a href="/node/add/event">Event</a></p>';
$view->page_header_format = '1';
$view->page_footer = '';
$view->page_footer_format = '1';
$view->page_empty = '';
$view->page_empty_format = '1';
$view->page_type = 'table';
$view->url = 'events';
$view->use_pager = TRUE;
$view->nodes_per_page = '25';
$view->sort = array (
array (
'tablename' => 'node_data_field_date',
'field' => 'field_date_value',
'sortorder' => 'ASC',
'options' => '',
),
);
$view->argument = array (
);
$view->field = array (
array (
'tablename' => 'node',
'field' => 'title',
'label' => '',
'handler' => 'views_handler_field_nodelink',
'options' => 'link',
),
array (
'tablename' => 'node_data_field_date',
'field' => 'field_date_value',
'label' => '',
'handler' => 'content_views_field_handler_ungroup',
'options' => 'default',
),
array (
'tablename' => 'node',
'field' => 'body',
'label' => '',
'handler' => 'views_handler_field_teaser',
),
);
$view->filter = array (
array (
'tablename' => 'node',
'field' => 'type',
'operator' => 'OR',
'options' => '',
'value' => array (
0 => 'event',
),
),
array (
'tablename' => 'node_data_field_date',
'field' => 'field_date_value_default',
'operator' => '>=',
'options' => 'now',
'value' => '',
),
);
$view->exposed_filter = array (
);
$view->requires = array(node_data_field_date, node);
$views[$view->name] = $view;
Comments
Comment #1
pierce commentedI probably should have mentioned, I'm using PostgreSQL 8.3.3, if that matters
I'm not getting any errors, just an empty view.
Comment #2
pierce commentedok, did a SQL trace with postgres, this SQL statement is the likelyl source of the error...
SELECT count(node.nid) FROM node node LEFT JOIN content_field_date node_data_field_date ON node.vid = node_data_field_date.vid WHERE (node.type IN ('event')) AND (TO_CHAR(TO_DATE(node_data_field_date.field_date_value, 'FMYYYY-FMMM-FMDDTFMHH:FMMI:FMSS'), 'YY-MM-DD') >= '2008-09-23') ;its returning zero... If I manually run this query replacing that last 'YY-MM-DD' with 'YYYY-MM-DD', it returns the event count.
now, I haven't fully debugged the code, but it appears that 'YY' came from line 295 in date_api_sql.inc, and if I change that to "YYYY" my view works. I dunno if this has any other side effects in date_api, but it appears my calendar (also 5.x_2.3) is still working so I'm a happy camper.
hopefully this fix can make it inito a 5.x-2.4 ?
Comment #3
pierce commentedthis is still occuring with 2.x-dev latest, including the release that came out 17-Oct-2008
I don't know if the problem is specific to postgres or if its generic, but any filter that uses 'now' doesn't work.
I'm not getting any SQL errors, I'm just not getting any events displayed. however, again, my 'fix' of changing 'YY' to 'YYYY' on line 295 in date_api seems to work.
Comment #4
millions commentedI have the same problem, except my events ARE showing up, but they won't disappear from my Upcoming Events block when the date has passed. I use the filter for date - date as greater than or equal to Now to only show the upcoming events.
Comment #5
karens commentedThe postgres problem is already fixed in -dev.
#4 is unrelated and doesn't belong here.