Index: og_calendar.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/og_calendar/Attic/og_calendar.module,v
retrieving revision 1.10.2.8
diff -u -p -r1.10.2.8 og_calendar.module
--- og_calendar.module	1 Jul 2007 19:23:17 -0000	1.10.2.8
+++ og_calendar.module	3 Dec 2007 01:20:21 -0000
@@ -18,59 +18,17 @@ function og_calendar_block($op = 'list',
     if ( arg(0) == 'node' && is_numeric(arg(1)) && ! arg(2) ) {
       $node = node_load(arg(1));
     }
-    $types = variable_get('og_node_types', array('og'));
-    foreach ($types as $type) {
-      if ($node->type == $type) {
-        $sql = "SELECT DISTINCT e.nid FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE e.event_start >= %d ORDER BY e.event_start";
-        $result = db_query(db_rewrite_sql($sql, 'e', 'nid', array('og_nid' => $node->nid)), time() - (2 * 60 * 60));
-        $limit = 6;
-        while (($nid = db_fetch_object($result)) && $limit > 0) {
-          $node = node_load($nid);
-          $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) {
-            $items[] = theme('event_upcoming_item', $node);
-            $limit--;
-          }
-        }
-        if (empty($items)) {
-          $output = t('No upcoming events available');
-        }
-        else {
-          $output = theme('event_upcoming_block', $items);
-          $output .= theme('event_more_link', 'og_calendar/'. arg(1));
-        }
-        if ($output == '') {
-          // no group events
-          return;
-        }
-        $block['subject'] = 'Group events';
-        $block['content'] = $output;
-        return $block;
+    if (isset($node->type) && in_array($node->type, variable_get('og_node_types', array('og')))) {
+      $items = _event_block_upcoming(variable_get('event_upcoming_limit', '6'), array('og_nid' => $node->nid));
+      if(!count($items)) {
+        // no group events
+        return;
       }
+      $output = theme('event_upcoming_block', $items);
+      $output .= theme('event_more_link', 'og_calendar/'. arg(1));
+      $block['subject'] = t('Group events');
+      $block['content'] = $output;
+      return $block;
     }
   }
 }
@@ -144,7 +102,6 @@ function og_calendar_menu($may_cache) {
 function og_calendar_page($gid = NULL, $year = NULL, $month = NULL, $day = NULL) {
   if ($gid) {
     $group = node_load($gid);
-    $nodes = array();
     og_set_group_context($group);
     $bc[] = l(t('Home'), '');
     $bc[] = l(t('Groups'), 'og');
@@ -154,76 +111,43 @@ function og_calendar_page($gid = NULL, $
     // Maintains group theme for OG calendar view.
     og_set_theme($gid);
 
-    // Get the parameters for the current month.
-    if (empty($year)) {
-      $year = date('Y', time());
-    }
-    if (empty($month)) {
-      $month = date('m', time());
-    }
-    if (empty($day)) {
-      $day = date('d', time());
-    }
-    $start_date = mktime(0, 0, 0, $month, 1, $year);
-    $end_date = mktime(0, 0, -1, $month + 1, 1, $year);
+    // include event files
+    event_include_files();
 
-    // View only events from this group limited by above timeframe.
-    $sql = "SELECT e.nid, e.event_start, e.event_end FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE e.event_start < %d AND e.event_end > %d";
-    $sql = db_rewrite_sql($sql, 'n', 'nid', array('og_nid' => $gid));
-    $result = db_query($sql, $end_date, $start_date);
-
-    if (db_num_rows($result) == 0) {
-      // Check for future events.
-      $sql = "SELECT MIN(e.event_start) FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE e.event_start > %d";
-      $sql = db_rewrite_sql($sql, 'n', 'nid', array('og_nid' => $gid));
-      $range = db_result(db_query($sql, $end_date));
-
-      if (empty($range)) {
-        // Check for past events.
-        $sql = "SELECT MAX(e.event_end) FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE e.event_end < %d";
-        $sql = db_rewrite_sql($sql, 'n', 'nid', array('og_nid' => $gid));
-        $range = db_result(db_query($sql, $start_date));
-      }
+    // get local date value
+    $now = _event_user_date();
 
-      if (!empty($range)) {
-        $start_date = gmmktime(0, 0, 0, gmdate('m', $range), 1, gmdate('Y', $range));
-        $end_date = gmmktime(0, 0, -1, gmdate('m', $range) + 1, 1, gmdate('Y', $range));
-
-        $sql = "SELECT e.nid, e.event_start, e.event_end FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE e.event_start < %d AND e.event_end > %d";
-        $sql = db_rewrite_sql($sql, 'n', 'nid', array('og_nid' => $gid));
-        $result = db_query($sql, $end_date, $start_date);
-      }
-    }
+    // date values
+    $year = (isset($year) && is_numeric($year)) ? $year : $now['year'];
+    $month = (isset($month) && is_numeric($month)) ? $month : $now['month'];
+    $day = (isset($day) && is_numeric($day)) ? $day : $now['day'];
 
-    if (db_num_rows($result) > 0) {
-      while ($nid = db_fetch_object($result)) {
-        $event = node_load($nid->nid);
-        if (isset($event->nid)) {
-          $nodes[$event->nid] = $event;
-        }
-      }
+    $date = $now;
+    $date['year'] = $year;
+    $date['month'] = $month;
+    $date['day'] = $day;
+    $view = 'month';
 
-      $prev = _og_calendar_event_nav($start_date, 'prev', $gid);
-      $next = _og_calendar_event_nav($end_date, 'next', $gid);
+    $caption = event_format_date($date, 'custom', t('F Y'));
+    list($thead, $tbody) = event_calendar_month('page', $date, array(), array(), array('og_nid' => $gid));
 
-      $output = event_get_calendar('month', $nodes, 'og_calendar', t('!name calendar', array('!name' => $group->title)));
-      $output .= $prev .'|'. $next;
-      $output .= theme('event_ical_link', 'event/ical/'. $node->filter);
-
-      // Add RSS feed and icon to events page.
-      drupal_add_link(array(
-        'rel' => 'alternate',
-        'type' => 'application/rss+xml',
-        'title' => t('RSS'),
-        'href' => url('event/feed', NULL, NULL, TRUE)
-      ));
-      $output .= theme('feed_icon', url('event/feed'));
+    $prev = _og_calendar_event_nav($start_date, 'prev', $gid);
+    $next = _og_calendar_event_nav($end_date, 'next', $gid);
 
-      return $output;
-    }
-    else {
-      return t('Could not access any events for the @name group.', array('@name' => $group->title));
-    }
+    // setup calendar table header
+    $caption = $prev .' '. $caption .' '. $next;
+    $node->event = array();
+    $node->event['start_exploded'] = array('year' => $year, 'month' => $month, 'day' => $day);
+
+    $output .= theme('event_links', array_merge(module_invoke_all('link', 'event_'. $view, $node, FALSE), $links), $view);
+
+    $output .= theme('event_calendar_'. $view, 'page', $thead, $tbody, array(), $caption);
+
+    // Add RSS feed and icon to events page
+    drupal_add_feed(url('event/feed', NULL, NULL, TRUE), t('Events at %site', array('%site' => variable_get('site_name', 'drupal'))));
+
+    drupal_set_title(t('!name calendar', array('!name' => $group->title)));
+    return $output;
   }
   else {
     // Redirect to the main event page.
@@ -248,34 +172,29 @@ function og_calendar_page($gid = NULL, $
  */
 function _og_calendar_event_nav($timestamp, $dir, $gid) {
   if ($dir == 'prev') {
-    $sql = "SELECT MAX(e.event_end) as event_end FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE e.event_start < %d";
+    $sql = "SELECT MAX(e.event_end) as event_end FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE e.event_start < '%s'";
     $sql = db_rewrite_sql($sql, 'e', 'nid', array('og_nid' => $gid));
     $range = db_result(db_query($sql, $timestamp));
     if (!empty($range)) {
-      $date = gmmktime(0, 0, 0, gmdate('m', $range), 1, gmdate('Y', $range));
+      $date = event_explode_date($range);
     }
   }
   if ($dir == 'next') {
-    $sql = "SELECT MIN(e.event_start) as event_start FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE e.event_end > %d";
+    $sql = "SELECT MIN(e.event_start) as event_start FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE e.event_end > '%s'";
     $sql = db_rewrite_sql($sql, 'e', 'nid', array('og_nid' => $gid));
     $range = db_result(db_query($sql, $timestamp));
     if (!empty($range)) {
-      $date = gmmktime(0, 0, 0, gmdate('m', $range), 1, gmdate('Y', $range));
+      $date = event_explode_date($range);
     }
   }
 
   // If we are beyond the range of the stored events, don't display navigation.
   if (isset($date)) {
-    $url[] = 'og_calendar/'. $gid;
-    $url[] = gmdate('Y', $date);
-    $url[] = gmdate('m', $date);
-    $url[] = gmdate('d', $date);
-
     if ($dir == 'prev') {
-      return l('Previous', implode('/', $url)) .' ';
+      return l(t('Previous'), 'og_calendar/'. $gid .'/'. _event_format_url($date)) .' ';
     }
     if ($dir == 'next') {
-      return ' '. l('Next', implode('/', $url));
+      return ' '. l(t('Next'), 'og_calendar/'. $gid .'/'. _event_format_url($date));
     }
   }
 }
