function print_upcoming_event($e, $date) { global $display_link, $link_target, $SERVER_URL, $charset, $login, $display_tzid, $showTime, $showPopups, $eventinfo, $username, $hcalendar_output, $UPCOMING_DISPLAY_CAT_ICONS; $popupid = 'pop' . $e->getId() . '-' . $date; $private = $confidential = false; // Access: P=Public, R=Private, C=Confidential if ($e->getAccess() == 'R') { // not a public event, so we will just display "Private" $private = true; } else { if ($e->getAccess() == 'C') { // not a public event, so we will just display "Confidential" $confidential = true; } } if (!empty($SERVER_URL) && !$private && !$confidential) { echo "<div class=\"vevent\">\n"; if ($display_link) { if ($showPopups) { $timestr = ''; if ($e->isAllDay()) { $timestr = translate('All day event'); } else { if ($e->getTime() >= 0) { $timestr = display_time($e->getDatetime()); if ($e->getDuration() > 0) { $timestr .= ' - ' . display_time($e->getEndDateTime()); } } } $eventinfo .= build_entry_popup('eventinfo-' . $popupid, $username, $e->getDescription(), $timestr, site_extras_for_popup($e->getId()), $e->getLocation(), $e->getName(), $e->getId()); } $link = "<a class=\"entry\" id=\"{$popupid}\" title=\"" . htmlspecialchars($e->getName()) . '" href="' . $SERVER_URL . 'view_entry.php?id=' . $e->getID() . "&date={$date}&user="******"\" target=\"{$link_target}\""; } $link .= '>'; if (empty($UPCOMING_DISPLAY_CAT_ICONS) || $UPCOMING_DISPLAY_CAT_ICONS != 'N') { $catNum = abs($e->getCategory()); if ($catNum > 0) { $catIcon = 'icons/cat-' . $catNum . '.gif'; if (file_exists($catIcon)) { echo $link . '<img src="' . $catIcon . '" alt="category icon" border="0"/></a>'; } } } echo $link; } } if ($private) { echo '[' . translate('Private') . ']'; } else { if ($confidential) { echo '[' . translate('Confidential') . ']'; } else { echo '<span class="summary">' . htmlspecialchars($e->getName()) . '</span>'; } } if ($display_link && !empty($SERVER_URL) && !$private) { echo '</a>'; } //added for hCalendar if ($hcalendar_output) { echo '<abbr class="dtstart" title="' . export_ts_utc_date($e->getDateTimeTS()) . '">' . $e->getDateTime() . "</abbr>\n"; echo '<abbr class="dtend" title="' . export_ts_utc_date($e->getEndDateTimeTS()) . '">' . $e->getEndDateTimeTS() . "</abbr>\n"; echo '<span class="description">' . $e->getDescription() . "</span>\n"; if (strlen($e->getLocation()) > 0) { echo '<span class="location">' . $e->getLocation() . "</span>\n"; } $categories = get_categories_by_id($e->getId(), $username); $category = implode(', ', $categories); if (strlen($category) > 0) { echo '<span class="categories">' . htmlentities($category) . "</span>\n"; } if (strlen($e->getUrl()) > 0) { echo '<span class="url">' . $e->getUrl() . "</span>\n"; } $rrule = export_recurrence_ical($e->getId()); if (strlen($rrule) > 6) { echo '<span class="rrule">' . substr($rrule, 6) . "</span>\n"; } } if ($showTime) { //show event time if requested (default=don't show) if ($e->isAllDay()) { echo ' (' . translate('All day event') . ")\n"; } else { if ($e->getTime() != -1) { echo ' (' . display_time($e->getDateTime(), $display_tzid) . ")\n"; } } } echo "</div>\n"; }
function export_time($date, $duration, $time, $texport, $vtype = 'E') { global $TIMEZONE, $vtimezone_data, $use_vtimezone; $ret = $vtimezone_exists = ''; $eventstart = date_to_epoch($date . ($time > 0 ? $time : 0), $time > 0); $eventend = $eventstart + $duration * 60; if ($time == 0 && $duration == 1440 && strcmp($texport, 'ical') == 0) { // all day. if ($use_vtimezone && ($vtimezone_data = get_vtimezone($TIMEZONE, $dtstart))) { $vtimezone_exists = true; $dtstart = $date . 'T000000'; $ret .= 'DTSTART;TZID=' . $TIMEZONE . ':' . $dtstart . "\r\n"; } else { $ret .= "DTSTART;VALUE=DATE:{$date}\r\n"; } } else { if ($time == -1) { // untimed event: this is the same regardless of timezone. For example, // New Year's Day starts at 12am localtime regardless of timezone. $ret .= "DTSTART;VALUE=DATE:{$date}\r\n"; } else { // timed event $utc_start = export_ts_utc_date($eventstart); $dtstart = $date . 'T000000'; if ($use_vtimezone && ($vtimezone_data = get_vtimezone($TIMEZONE, $dtstart))) { $vtimezone_exists = true; $ret .= 'DTSTART;TZID=' . $TIMEZONE . ':' . $utc_start . "\r\n"; } else { $ret .= "DTSTART:{$utc_start}\r\n"; } } } if (strcmp($texport, 'ical') == 0) { $utc_dtstamp = export_ts_utc_date(time()); $ret .= "DTSTAMP:{$utc_dtstamp}\r\n"; // We don' want DTEND for VTODOs if ($vtype == 'T' || $vtype == 'N') { return $ret; } if ($time == 0 && $duration == 1440) { // all day event: better to use end date than duration since // duration will be 23hr and 25hrs on DST switch-over days. if ($vtimezone_exists) { $ret .= 'DTEND;TZID=' . $TIMEZONE . ':' . date('Ymd', $eventend) . "T000000\r\n"; } else { $ret .= 'DTEND;VALUE=DATE:' . gmdate('Ymd', $eventend) . "\r\n"; } } else { if ($time == -1) { // untimed event $ret .= "DTEND;VALUE=DATE:{$date}\r\n"; } else { if ($time > 0) { // timed event if ($vtimezone_exists) { $ret .= 'DTEND;TZID=' . $TIMEZONE . ':' . date('Ymd', $eventend) . "T000000\r\n"; } else { $utc_end = export_ts_utc_date($eventend); $ret .= "DTEND:{$utc_end}\r\n"; } } } } } elseif (strcmp($texport, 'vcal') == 0) { $utc_end = export_ts_utc_date($eventend); $ret .= "DTEND:{$utc_end}\r\n"; } else { $ret .= "DURATION:P{$str_duration}\r\n"; } return $ret; }