Index: includes/date.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/signup/includes/date.inc,v
retrieving revision 1.11
diff -u -p -r1.11 date.inc
--- includes/date.inc	19 Nov 2008 23:47:57 -0000	1.11
+++ includes/date.inc	21 Nov 2008 00:58:15 -0000
@@ -279,10 +279,11 @@ function _signup_get_date_field_options(
  * @return Array of SQL clauses for cron reminder email query builder.
  */
 function _signup_date_reminder_sql($content_type) {
-  $field = signup_date_field($content_type);
   global $db_type;
-  include_once drupal_get_path('module', 'date_api') .'/date_api_sql.inc';
+  module_load_include('inc', 'date_api', 'date_api_sql');
+  $field = signup_date_field($content_type);
   $handler = new date_sql_handler();
+  $handler->construct($field['type']);
   switch ($db_type) {
     case 'mysql':
     case 'mysqli':
@@ -311,15 +312,17 @@ function _signup_date_reminder_sql($cont
  * @return Array of SQL clauses for cron auto-close query builder.
  */
 function _signup_date_autoclose_sql($content_type) {
-  $field = signup_date_field($content_type);
   module_load_include('inc', 'date_api', 'date_api_sql');
+  $field = signup_date_field($content_type);
   $handler = new date_sql_handler();
+  $handler->construct($field['type']);
+  $where = $handler->sql_where_date('DATE', $field['database']['columns']['value']['column'], '<=', 'NOW', (variable_get('signup_close_early', 1) * 3600));
   return array(
     'fields' => array($field['database']['columns']['value']['column']),
     'joins' => array(
       'LEFT JOIN {'. $field['database']['table'] .'} ON {'. $field['database']['table'] .'}.vid = n.vid',
     ),
-    'where' => array($handler->sql_extract('DATE', $field['database']['columns']['value']['column']) ." < '". date('Y-m-d\TH:i:s', time() + variable_get('signup_close_early', 1) * 3600) ."'"),
+    'where' => $where,
   );
 }
 
@@ -330,8 +333,18 @@ function _signup_date_autoclose_sql($con
 function _signup_date_node_completed($node) {
   $field = signup_date_field($node->type);
   if ($field && $field != 'none' && isset($node->{$field['field_name']})) {
-    $closing_time = time() + (variable_get('signup_close_early', 1) * 3600);
-    if (strtotime($node->{$field['field_name']}[0]['value']) < $closing_time) {
+    $date_value = $node->{$field['field_name']}[0]['value'];
+    if ($field['tz_handling'] == 'date') {
+      $tz = $node->{$field['field_name']}[0]['timezone'];
+    }
+    else {
+      $tz = date_default_timezone_name();
+    }
+    $db_tz = date_get_timezone_db($field['tz_handling'], $tz);
+    $date = date_make_date($date_value, $db_tz, $field['type']);
+    $start_time = date_format($date, 'U');
+    $close_time = $start_time - (variable_get('signup_close_early', 1) * 3600);
+    if (time() > $close_time) {
       return TRUE;
     }
   }
