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)) {