Index: og_calendar.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/og_calendar/Attic/og_calendar.module,v
retrieving revision 1.10.2.5
diff -u -r1.10.2.5 og_calendar.module
--- og_calendar.module	3 Apr 2007 17:02:40 -0000	1.10.2.5
+++ og_calendar.module	25 Mar 2009 14:36:55 -0000
@@ -26,7 +26,12 @@
         $limit = 6;
         while (($nid = db_fetch_object($result)) && $limit > 0) {
           $node = node_load($nid);
-          $minutesleft = floor(($node->event_start - time()) / 60);
+          // convert event date to timestamp.
+          list($date, $time) = explode(' ',$node->event['start']);
+          list($ret['year'], $ret['month'], $ret['day']) = explode('-', $date);
+          list($ret['hour'], $ret['minute'], $ret['second']) = explode(':', $time);
+          $node->event['start'] = mktime($ret['hour'], $ret['minute'], $ret['second'], $ret['month'], $ret['day'], $ret['year']);
+          $minutesleft = floor(($node->event['start'] - time()) / 60);
           if ($minutesleft < 0) {
             $timeleft = t('NOW');
           }
@@ -48,7 +53,7 @@
             }
             $timeleft = format_plural($days, '1 day', '@count days');
           }
-          $node->timeleft = $timeleft;
+          $node->event['timeleft'] = $timeleft;
           $ctype = module_invoke('flexinode', 'load_content_type', substr($node->type, 10));
           $node->typename = ($ctype->name ? $ctype->name : $node->type);
           if ($node->status) {
@@ -141,10 +146,10 @@
  *   are no events for the group or the user is not permitted to see them,
  *   display "Could not access any events."
  */
-function og_calendar_page($gid = NULL, $year = NULL, $month = NULL, $day = NULL) {
-  if ($gid) {
-    $group = node_load($gid);
-    $nodes = array();
+function og_calendar_page($gid = NULL, $year = NULL, $month = NULL, $day = NULL) {  
+  $group = node_load($gid);
+  if ($group && og_is_group_type($group->type)) {
+  	$gid = $group->nid;
     og_set_group_context($group);
     $bc[] = l(t('Home'), '');
     $bc[] = l(t('Groups'), 'og');
@@ -152,78 +157,50 @@
     drupal_set_breadcrumb($bc);
 
     // Maintains group theme for OG calendar view.
-  	og_set_theme($gid);
+    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'];
+
+    $date = $now;
+    $date['year'] = $year;
+    $date['month'] = $month;
+    $date['day'] = $day; //print_r($date);
+    $view = 'month';
+
+    $caption = event_format_date($date, 'custom', t('F Y')); 
+    //list($thead, $tbody) = event_calendar_month('page', $date); 
+    list($thead, $tbody) = event_calendar_month('page', $date, NULL, NULL, array('og_nid' => $gid));
 
-    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;
-        }
-      }
+ 
+    $start_date = mktime(0, 0, 0, $month, 1, $year);
+    $end_date = mktime(0, 0, -1, $month + 1, 1, $year); 
+    $prev = _og_calendar_event_nav($start_date, 'prev', $gid);
+    $next = _og_calendar_event_nav($end_date, 'next', $gid);
+ 
+    // Set up calendar table header.
+    $caption = $prev .' '. $caption .' '. $next;
+    $node->event = array();
+    $node->event['start_exploded'] = array('year' => $year, 'month' => $month, 'day' => $day);
+    $links = array();
+    $output .= theme('event_links', array_merge(module_invoke_all('link', 'event_'. $view, $node, FALSE), $links), $view);
 
-      $prev = _og_calendar_event_nav($start_date, 'prev', $gid);
-      $next = _og_calendar_event_nav($end_date, 'next', $gid);
+    $output .= theme('event_calendar_'. $view, 'page', $thead, $tbody, array(), $caption);
 
-      $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'));
+    // Add RSS feed and icon to events page.
+    drupal_add_feed(url('event/feed', array('absolute' => TRUE)), t('Events at %site', array('%site' => variable_get('site_name', 'drupal'))));
+
+    drupal_set_title(t('!name calendar', array('!name' => $group->title)));
+    return $output;
 
-      return $output;
-    }
-    else {
-      return t('Could not access any events for the @name group.', array('@name' => $group->title));
-    }
   }
   else {
     // Redirect to the main event page.
@@ -248,7 +225,7 @@
  */
 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(UNIX_TIMESTAMP(e.event_end)) as event_end FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE UNIX_TIMESTAMP(e.event_start) < %d";
     $sql = db_rewrite_sql($sql, 'e', 'nid', array('og_nid' => $gid));
     $range = db_result(db_query($sql, $timestamp));
     if (!empty($range)) {
@@ -256,7 +233,7 @@
     }
   }
   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(UNIX_TIMESTAMP(e.event_start)) as event_start FROM {event} e INNER JOIN {node} n ON n.nid = e.nid WHERE UNIX_TIMESTAMP(e.event_end) > %d";
     $sql = db_rewrite_sql($sql, 'e', 'nid', array('og_nid' => $gid));
     $range = db_result(db_query($sql, $timestamp));
     if (!empty($range)) {
