Index: event_views.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/event/contrib/event_views/event_views.module,v retrieving revision 1.9 diff -c -r1.9 event_views.module *** event_views.module 23 Jun 2006 18:02:14 -0000 1.9 --- event_views.module 24 Jun 2006 11:46:30 -0000 *************** *** 714,719 **** --- 714,877 ---- } } + /** + * Handle argument for event start time occurring after the argument value. + * Argument may be in format of a timestamp or a date string paseable by + * strtotime() + */ + function event_views_handler_arg_start_time_after($op, &$query, $argtype, $arg = '') { + $timezone = _views_get_timezone(); + switch($op) { + case 'summary': + $fieldinfo['field'] = "event.event_start"; + $fieldinfo['fieldname'] = 'event_start'; + $query->ensure_table('event'); + return $fieldinfo; + case 'sort': + $query->add_orderby(NULL, 'event_start', $argtype); + break; + case 'filter': + if (!is_numeric($arg)) { + $datetime = strtotime($arg); + if ($datetime === false) $datetime = now(); + } else { + $datetime = intval($arg); + } + $datetime = $datetime - $timezone; + if ($datetime < 0) break; + $query->add_where("event.event_start > (" . $datetime . ")"); + $query->ensure_table('event'); + break; + case 'link': + if ($query->event_start > 0) { + return l(format_date($query->event_start, "large"), "$arg/$query->event_start"); + } + case 'title': + if ($query->event_start > 0) { + return format_date($query->event_start); + } + } + } + + /** + * Handle argument for event start time occurring before the argument value. + * Argument may be in format of a timestamp or a date string paseable by + * strtotime() + */ + function event_views_handler_arg_start_time_before($op, &$query, $argtype, $arg = '') { + $timezone = _views_get_timezone(); + + switch($op) { + case 'summary': + $fieldinfo['field'] = "event.event_start"; + $fieldinfo['fieldname'] = 'event_start'; + $query->ensure_table('event'); + return $fieldinfo; + case 'sort': + $query->add_orderby(NULL, 'event_start', $argtype); + break; + case 'filter': + if (!is_numeric($arg)) { + $datetime = strtotime($arg); + if ($datetime === false) $datetime = now(); + } else { + $datetime = intval($arg); + } + $datetime = $datetime - $timezone; + if ($datetime < 0) break; + $query->add_where("event.event_start < (" . $datetime . ")"); + $query->ensure_table('event'); + break; + case 'link': + if ($query->event_start > 0) { + return l(format_date($query->event_start, "large"), "$arg/$query->event_start"); + } + case 'title': + if ($query->event_start > 0) { + return format_date($query->event_start); + } + } + } + + /** + * Handle argument for event end time occurring after the argument value. + * Argument may be in format of a timestamp or a date string paseable by + * strtotime() + */ + function event_views_handler_arg_end_time_after($op, &$query, $argtype, $arg = '') { + $timezone = _views_get_timezone(); + + switch($op) { + case 'summary': + $fieldinfo['field'] = "event.event_end"; + $fieldinfo['fieldname'] = 'event_end'; + $query->ensure_table('event'); + return $fieldinfo; + case 'sort': + $query->add_orderby(NULL, 'event_end', $argtype); + break; + case 'filter': + if (!is_numeric($arg)) { + $datetime = strtotime($arg); + if ($datetime === false) $datetime = now(); + } else { + $datetime = intval($arg); + } + $datetime = $datetime - $timezone; + if ($datetime < 0) break; + $query->add_where("event.event_end > (" . $datetime . ")"); + $query->ensure_table('event'); + break; + case 'link': + if ($query->event_end > 0) { + return l(format_date($query->event_end, "large"), "$arg/$query->event_end"); + } + case 'title': + if ($query->event_end > 0) { + return format_date($query->event_end); + } + } + } + + /** + * Handle argument for event end time occurring before the argument value. + * Argument may be in format of a timestamp or a date string paseable by + * strtotime() + */ + function event_views_handler_arg_end_time_before($op, &$query, $argtype, $arg = '') { + $timezone = _views_get_timezone(); + + switch($op) { + case 'summary': + $fieldinfo['field'] = "event.event_end"; + $fieldinfo['fieldname'] = 'event_end'; + $query->ensure_table('event'); + return $fieldinfo; + case 'sort': + $query->add_orderby(NULL, 'event_end', $argtype); + break; + case 'filter': + if (!is_numeric($arg)) { + $datetime = strtotime($arg); + if ($datetime === false) $datetime = now(); + } else { + $datetime = intval($arg); + } + $datetime = $datetime - $timezone; + if ($datetime < 0) break; + $query->add_where("event.event_end < (" . $datetime . ")"); + $query->ensure_table('event'); + break; + case 'link': + if ($query->event_end > 0) { + return l(format_date($query->event_end, "large"), "$arg/$query->event_end"); + } + case 'title': + if ($query->event_end > 0) { + return format_date($query->event_end); + } + } + } Index: event_views_tables.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/event/contrib/event_views/event_views_tables.inc,v retrieving revision 1.1 diff -c -r1.1 event_views_tables.inc *** event_views_tables.inc 15 Jun 2006 11:14:12 -0000 1.1 --- event_views_tables.inc 24 Jun 2006 11:46:31 -0000 *************** *** 158,163 **** --- 158,183 ---- 'handler' => 'event_views_handler_arg_week', 'help' => t("Filter by the week number (1-52). Place this argument after a 'Year' argument."), ), + 'event_start_time_after' => array( + 'name' => t('Event: Start Time After'), + 'handler' => 'event_views_handler_arg_start_time_after', + 'help' => t('Filter by events starting after this date/time. Should be in the format or a numeric timestamp or CCYY-MM-DD HH:MM:SS.'), + ), + 'event_start_time_before' => array( + 'name' => t('Event: Start Time Before'), + 'handler' => 'event_views_handler_arg_start_time_before', + 'help' => t('Filter by events starting before this date/time. Should be in the format or a numeric timestamp or CCYY-MM-DD HH:MM:SS.'), + ), + 'event_end_time_after' => array( + 'name' => t('Event: End Time After'), + 'handler' => 'event_views_handler_arg_end_time_after', + 'help' => t('Filter by events whose end time is after this date/time. Should be in the format or a numeric timestamp or CCYY-MM-DD HH:MM:SS.'), + ), + 'event_end_time_before' => array( + 'name' => t('Event: End Time Before'), + 'handler' => 'event_views_handler_arg_end_time_before', + 'help' => t('Filter by events whose end time is before this date/time. Should be in the format or a numeric timestamp or CCYY-MM-DD HH:MM:SS.'), + ), ); return $arguments; }