Index: event.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/event/event.module,v
retrieving revision 1.187
diff -c -r1.187 event.module
*** event.module	5 Feb 2006 18:22:59 -0000	1.187
--- event.module	13 Feb 2006 11:42:56 -0000
***************
*** 1993,1996 ****
--- 1993,2086 ----
    }
  }
  
+ /**
+  * For operation with the views.module.
+  * @see http://drupal.org/project/views
+  */
+ function event_views_tables() {
+   $tables["event"] = array(
+     "name" => "event", 
+     "join" => array(
+       "left" => array(
+         "table" => "node",
+         "field" => "nid"
+       ), 
+       "right" => array(
+         "field" => "nid"
+       ), 
+     ),
+     "fields" => array(
+       "event_start" => array(
+         "name" => "Event: Start Time", 
+         "handler" => array(
+           "views_handler_field_date_small"=>"short date",
+           "views_handler_field_date"=>"medium date",
+           "views_handler_field_date_large"=>"long date"
+         ),
+         "sortable" => true,
+         "nid" => "nid", 
+         "addlfields" => array("nid")
+       ),
+       "event_end" => array(
+         "name" => "Event: End Time", 
+         "handler" => array(
+           "views_handler_field_date_small"=>"short date",
+           "views_handler_field_date"=>"medium date",
+           "views_handler_field_date_large"=>"long date"
+         ),
+         "sortable" => true,
+         "nid" => "nid", 
+         "addlfields" => array("nid")
+       ),
+     ),
+     "sorts" => array(
+       "event_start" => array("name" => "event starts"),
+       "event_end" => array("name" => "event ends"),
+     ),
+     "filters" => array(
+       "event_start" => array(
+         "field" => "event_start",
+         "name" => "Event: Start Time",
+         "operator" => array(
+           ">" => "Is Greater Than",
+           "=" => "Equals",
+           "<" => "Is Less Than"
+         ),
+         "list" => array("***CURRENT_TIME***" => "Current Time"),
+         "handler" => "views_handler_filter_eventstart_custom",
+         "cacheable" => "no",
+       ),
+       "event_end" => array(
+         "field" => "event_end",
+         "name" => "Event: End Time",
+         "operator" => array(
+           ">" => "Is Greater Than",
+           "=" => "Equals",
+           "<" => "Is Less Than"
+         ),
+         "list" => array("***CURRENT_TIME***" => "Current Time"),
+         "handler" => "views_handler_filter_eventend_custom",
+         "cacheable" => "no",
+       )
+     )
+   );
+   
+   return $tables;
+ }
+ 
+ /*
+  * Custom filter for event start time, for views module support
+  */
+ function views_handler_filter_eventstart_custom($op, $filter, $filterinfo, &$query) {
+   $query->ensure_table("event");
+   $query->add_where("event.event_start $filter[operator] ". time());
+ }
+ 
+ /*
+  * Custom filter for event end time, for views module support
+  */
+ function views_handler_filter_eventend_custom($op, $filter, $filterinfo, &$query) {
+   $query->ensure_table("event");
+   $query->add_where("event.event_end $filter[operator] ".time());
+ }
  ?>
