Index: event.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/event/event.module,v retrieving revision 1.214 diff -u -p -r1.214 event.module --- event.module 14 Nov 2006 11:02:54 -0000 1.214 +++ event.module 17 Dec 2006 00:31:09 -0000 @@ -1746,53 +1746,54 @@ function event_block($op = 'list', $delt */ function event_block_upcoming($limit = 6) { global $user; - // For two hours, we display "NOW" - $time = time() - (2 * 60 * 60); - $result = db_query(db_rewrite_sql('SELECT n.nid, n.title, n.type, n.status, n.moderate, n.changed, e.event_start FROM {node} n INNER JOIN {event} e ON n.nid = e.nid WHERE n.status = 1 AND n.moderate = 0 AND e.event_start >= %d ORDER BY event_start'), $time); - while (($node = db_fetch_object($result)) && $limit) { + $time = time(); - //call the event_edit_upcoming hook in all modules. note that modules can prevent display of a node by setting - //it's status to 0 here. + // Lookup events currently taking place and upcoming events, up to $limit events. + $result = db_query(db_rewrite_sql("SELECT n.nid, n.title, n.type, n.status, n.moderate, n.changed, e.event_start, e.event_end FROM {node} n INNER JOIN {event} e ON n.nid = e.nid WHERE n.status = 1 AND n.moderate = 0 AND (((e.event_start != e.event_end) AND (%d >= e.event_start AND %d < e.event_end)) OR ((e.event_start == e.event_end) AND (%d <= e.event_start + %d )) OR e.event_start >= %d) ORDER BY event_start LIMIT %d"), $time, $time, $time, (60 * 60 * 2), $time, $limit); + while ($node = db_fetch_object($result)) { + // Call the event_edit_upcoming hook in all modules. Note that modules can + // prevent display of a node by setting its status to 0 here. foreach (module_implements('event_edit_upcoming') as $module) { $function = $module .'_event_edit_upcoming'; $function($node); } - $minutesleft = floor(($node->event_start - time()) / 60); - - if ($minutesleft < 0) { - $timeleft = t('NOW'); - } - else if ($minutesleft < 60) { - $timeleft = format_plural($minutesleft, '1 minute', '%count minutes'); - } - else if ($minutesleft >= 60 && $minutesleft < (24 * 60)) { - $timeleft = format_plural(floor($minutesleft / 60), '1 hour', '%count hours'); - } - else if ($minutesleft >= (24 * 60)) { - $days = floor($minutesleft / (24 * 60)); - // hours remainder - $hours = ($minutesleft % (24 * 60)) / 60; - // hours left in the day - $hours_left = 24 - date('G', time()); - // see if the remainder of hours on the event date is greater than the hours left in today, if so increase the days by one so that the days remaining mimics the date rather than how many 24 hour periods there are between now and then. - if ($hours > $hours_left) { - $days++; - } - $timeleft = format_plural($days, '1 day', '%count days'); - } - - $node->timeleft = $timeleft; - $ctype = module_invoke('flexinode', 'load_content_type', substr($node->type, 10)); - $node->typename = ($ctype->name ? $ctype->name : $node->type); - if ($node->status) { + if ($node->event_start >= $time) { + $minutesleft = floor(($node->event_start - $time) / 60); + if ($minutesleft >= 0 && $minutesleft < 60) { + $timeleft = format_plural($minutesleft, '1 minute', '%count minutes'); + } + else if ($minutesleft >= 60 && $minutesleft < (24 * 60)) { + $timeleft = format_plural(floor($minutesleft / 60), '1 hour', '%count hours'); + } + else if ($minutesleft >= (24 * 60)) { + $days = floor($minutesleft / (24 * 60)); + // hours remainder + $hours = ($minutesleft % (24 * 60)) / 60; + // hours left in the day + $hours_left = 24 - date('G', time()); + // see if the remainder of hours on the event date is greater than the hours left in today, if so increase the days by one so that the days remaining mimics the date rather than how many 24 hour periods there are between now and then. + if ($hours > $hours_left) { + $days++; + } + $timeleft = format_plural($days, '1 day', '%count days'); + } + } + else { + $timeleft = t('Now'); + } + + $ctype = module_invoke('flexinode', 'load_content_type', substr($node->type, 10)); + $node->typename = ($ctype->name ? $ctype->name : $node->type); + + $node->timeleft = $timeleft; $items[] = theme('event_upcoming_item', $node); - $limit--; } } - if(!$items) { - $items[] = t('no upcoming events available'); + + if (empty($items)) { + $items[] = t('No upcoming events available.'); } $output = theme('event_upcoming_block', $items);