function print_date_entries_timebar($date, $user, $ssi) { global $DISPLAY_UNAPPROVED, $events, $is_admin, $PUBLIC_ACCESS, $PUBLIC_ACCESS_CAN_ADD, $readonly, $totalSlots; $ret = ''; $cnt = 0; $get_unapproved = $DISPLAY_UNAPPROVED == 'Y'; $year = substr($date, 0, 4); $month = substr($date, 4, 2); $day = substr($date, 6, 2); $can_add = $readonly == 'N' || $is_admin; if ($PUBLIC_ACCESS == 'Y' && $PUBLIC_ACCESS_CAN_ADD != 'Y' && $GLOBALS['login'] == '__public__') { $can_add = false; } $cur_rep = 0; // Combine and sort the event arrays. $ev = combine_and_sort_events(get_entries($date, $get_unapproved), get_repeating_entries($user, $date)); $evcnt = count($ev); for ($i = 0; $i < $evcnt; $i++) { if ($get_unapproved || $ev[$i]->getStatus() == 'A') { $ret .= print_entry_timebar($ev[$i], $date); $cnt++; } } return $ret . ($cnt == 0 ? ' <tr> <td colspan="' . $totalSlots . '"> </td> </tr>' : ''); }
function print_day_at_a_glance($date, $user, $can_add = 0) { global $CELLBG, $DISPLAY_TASKS_IN_GRID, $DISPLAY_UNAPPROVED, $first_slot, $hour_arr, $last_slot, $rowspan, $rowspan_arr, $TABLEBG, $THBG, $THFG, $TIME_SLOTS, $today, $TODAYCELLBG, $WORK_DAY_END_HOUR, $WORK_DAY_START_HOUR; if (empty($TIME_SLOTS)) { return translate('Error TIME_SLOTS undefined!') . "<br />\n"; } $get_unapproved = $DISPLAY_UNAPPROVED == 'Y'; // Get, combine and sort the events for this date. $ev = combine_and_sort_events(get_entries($date, $get_unapproved), get_repeating_entries($user, $date)); if ($date >= date('Ymd') && (empty($DISPLAY_TASKS_IN_GRID) || $DISPLAY_TASKS_IN_GRID == 'Y')) { $ev = combine_and_sort_events($ev, get_tasks($date, $get_unapproved)); } $hour_arr = $rowspan_arr = array(); $interval = 1440 / $TIME_SLOTS; // Number of minutes per slot $first_slot = intval($WORK_DAY_START_HOUR * 60 / $interval); $last_slot = intval($WORK_DAY_END_HOUR * 60 / $interval); for ($i = 0, $cnt = count($ev); $i < $cnt; $i++) { if ($get_unapproved || $ev[$i]->getStatus() == 'A') { html_for_event_day_at_a_glance($ev[$i], $date); } } $last_row = -1; $ret = ''; $rowspan = 0; // Squish events that use the same cell into the same cell. // For example, an event from 8:00-9:15 and another from 9:30-9:45 both // want to show up in the 8:00-9:59 cell. for ($i = $first_slot < 0 ? $first_slot : 0; $i < $TIME_SLOTS; $i++) { if ($rowspan > 1) { if (!empty($hour_arr[$i])) { $diff_start_time = $i - $last_row; if (!empty($rowspan_arr[$i])) { if ($rowspan_arr[$i] > 1 && $rowspan_arr[$i] + $diff_start_time > $rowspan_arr[$last_row]) { $rowspan_arr[$last_row] = $rowspan_arr[$i] + $diff_start_time; } $rowspan += $rowspan_arr[$i] - 1; } else { $rowspan_arr[$last_row] += $rowspan_arr[$i]; } // This will move entries apart that appear in one field, // yet start on different hours. for ($u = $diff_start_time; $u > 0; $u--) { $hour_arr[$last_row] .= "<br />\n"; } $hour_arr[$last_row] .= $hour_arr[$i]; $hour_arr[$i] = ''; $rowspan_arr[$i] = 0; } $rowspan--; } else { if (!empty($rowspan_arr[$i]) && $rowspan_arr[$i] > 1) { $last_row = $i; $rowspan = $rowspan_arr[$i]; } } } $ret .= ' <table class="main glance" cellspacing="0" cellpadding="0">' . (empty($hour_arr[9999]) ? '' : ' <tr> <th class="empty"> </th> <td class="hasevents">' . $hour_arr[9999] . '</td> </tr>'); $rowspan = 0; for ($i = $first_slot; $i <= $last_slot; $i++) { $time_h = intval($i * $interval / 60); $time_m = $i * $interval % 60; $addIcon = $can_add ? html_for_add_icon($date, $time_h, $time_m, $user) : ''; $ret .= ' <tr> <th class="row">' . display_time(($time_h * 100 + $time_m) * 100) . '</th>'; if ($rowspan > 1) { // This might mean there's an overlap, or it could mean one event // ends at 11:15 and another starts at 11:30. if (!empty($hour_arr[$i])) { $ret .= ' <td class="hasevents">' . $addIcon . $hour_arr[$i] . '</td>'; } $rowspan--; } else { $ret .= ' <td '; if (empty($hour_arr[$i])) { $ret .= ($date == date('Ymd', $today) ? ' class="today"' : '') . '>' . ($can_add ? $addIcon : ' '); } else { $rowspan = empty($rowspan_arr[$i]) ? '' : $rowspan_arr[$i]; $ret .= ($rowspan > 1 ? 'rowspan="' . $rowspan . '"' : '') . 'class="hasevents">' . $addIcon . $hour_arr[$i]; } $ret .= '</td>'; } $ret .= ' </tr>'; } return $ret . ' </table>'; }
$weekdays[$i] = weekday_name(($i + $WEEK_START) % 7, $DISPLAY_LONG_DAYS); $dateYmd = date('Ymd', $days[$i]); $header[$i] = $weekdays[$i] . '<br />' . date_to_str($dateYmd, $DATE_FORMAT_MD, false, true); // . // Generate header row. $class = $dateYmd == date('Ymd', $today) ? ' class="today"' : (is_weekend($days[$i]) ? ' class="weekend"' : ''); $headerStr .= ' <th ' . $class . '>' . ($can_add ? html_for_add_icon($dateYmd, '', '', $user) : '') . '<p style="margin:.75em 0 0 0"><a href="day.php?' . $u_url . 'date=' . $dateYmd . $caturl . '">' . $header[$i] . '</a></p></th>'; $date = date('Ymd', $days[$i]); $hour_arr = $rowspan_arr = $tk = array(); // . // Get, combine and sort, static and repeating events for this date. $ev = combine_and_sort_events(get_entries($date, $get_unapproved), get_repeating_entries($user, $date)); // . // Then sort in any tasks due for this day and before. $ev = combine_and_sort_events($ev, $date >= date('Ymd') ? get_tasks($date, $get_unapproved) : $tk); for ($j = 0, $cnt = count($ev); $j < $cnt; $j++) { if ($get_unapproved || $ev[$j]->getStatus() == 'A') { html_for_event_week_at_a_glance($ev[$j], $date); } } // . // Squish events that use the same cell into the same cell. // For example, an event from 8:00-9:15 and another from 9:30-9:45 // both want to show up in the 8:00-9:59 cell. $last_row = -1; $rowspan = 0; for ($j = 0; $j < $TIME_SLOTS; $j++) { if ($rowspan > 1) { if (!empty($hour_arr[$j])) { $diff_start_time = $j - $last_row;
if (!empty($end_date)) { $thismonth = date('m', $end_date); $thisyear = date('Y', $end_date); } if (empty($error) && empty($list)) { $cat_id = empty($report_cat_id) ? '' : $report_cat_id; $repeated_events = read_repeated_events($report_user, $start_date, $end_date, $cat_id); $events = read_events($report_user, $start_date, $end_date, $cat_id); $get_unapproved = $DISPLAY_UNAPPROVED == 'Y'; // Loop through each day. // Get events for each day (both normal and repeating). // (Most of this code was copied from week.php.) for ($cur_time = $start_date; $cur_time <= $end_date; $cur_time += 86400) { $event_str = ''; $dateYmd = date('Ymd', $cur_time); $ev = combine_and_sort_events(get_entries($dateYmd), get_repeating_entries($report_user, $dateYmd)); for ($i = 0, $cnt = count($ev); $i < $cnt; $i++) { if ($get_unapproved || $ev[$i]->getStatus() == 'A') { $event_str .= event_to_text($ev[$i], $dateYmd); } } if (!empty($event_str) || $report_include_empty == 'Y' || $report_time_range < 10) { $date_str = date_to_str($dateYmd, '', false); $date_full_str = date_to_str($dateYmd); $day_str .= str_replace(array('${date}', '${events}', '${fulldate}', '${report_id}'), array($date_str, $event_str, $date_full_str, $report_id), $day_template); } } } if (!empty($error)) { echo print_error($error) . print_trailer(); exit;
?> <div class="vcalendar"> <?php echo "<dl>\n"; echo "<!-- \nstartTime: {$startDate}\nendTime: {$endDate}\nstartDate: " . "{$date}\nnumDays: {$numDays}\nuser: {$username}\nevents: " . count($events) . "\nrepeated_events: " . count($repeated_events) . " -->\n"; $eventinfo = ''; $numEvents = 0; $endDateYmd = date('Ymd', $endDate); for ($i = $startDate; date('Ymd', $i) <= $endDateYmd && $numEvents < $maxEvents; $i += ONE_DAY) { $d = date('Ymd', $i); $entries = get_entries($d, $get_unapproved); $rentries = get_repeating_entries($username, $d, $get_unapproved); $ev = combine_and_sort_events($entries, $rentries); $tentries = get_tasks($d, $get_unapproved); $ev = combine_and_sort_events($ev, $tentries); $ev_cnt = count($ev); echo "<!-- {$d} " . count($ev) . " -->\n"; if ($ev_cnt > 0) { echo "<!-- XXX -->\n"; //print "<dt>" . date_to_str ( $d, translate ( '__month__ __dd__' ), true, true ) . "</dt>\n<dd>"; echo '<dt>' . date_to_str($d) . "</dt>\n<dd>"; for ($j = 0; $j < $ev_cnt && $numEvents < $maxEvents; $j++) { print_upcoming_event($ev[$j], $d); $numEvents++; } echo "</dd>\n"; } } echo "</dl>\n"; if ($showMore) {
function print_det_date_entries($date, $user, $ssi) { global $events, $is_admin, $readonly; $date = mktime(0, 0, 0, substr($date, 4, 2), substr($date, 6, 2), substr($date, 0, 4)); // . // Get and sort all the repeating and non-repeating events for this date. $ev = combine_and_sort_events(get_entries($date), get_repeating_entries($user, $date)); for ($i = 0, $cnt = count($ev); $i < $cnt; $i++) { if (!empty($DISPLAY_UNAPPROVED) && $DISPLAY_UNAPPROVED != 'N' || $ev[$i]->getStatus() == 'A') { print_detailed_entry($ev[$i], $date); } } }