0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
webcalendar
/
1.2.3-0
/
standard
/
htdocs
/
[
Home
]
File: week.php
<?php /* $Id: week.php,v 1.133.2.5 2008/09/27 14:50:18 cknudsen Exp $ */ include_once 'includes/init.php'; //check UAC if ( ! access_can_access_function ( ACCESS_WEEK ) || ( ! empty ( $user ) && ! access_user_calendar ( 'view', $user ) ) ) send_to_preferred_view (); load_user_layers ( ( $user != $login ) && $is_nonuser_admin ? $user : '' ); load_user_categories (); $nextYmd = date ( 'Ymd', mktime ( 0, 0, 0, $thismonth, $thisday + 7, $thisyear ) ); $prevYmd = date ( 'Ymd', mktime ( 0, 0, 0, $thismonth, $thisday - 7, $thisyear ) ); $boldDays = ( ! empty ( $BOLD_DAYS_IN_YEAR ) && $BOLD_DAYS_IN_YEAR == 'Y' ); $wkstart = get_weekday_before ( $thisyear, $thismonth, $thisday + 1 ); $wkend = $wkstart + ( 86400 * ( $DISPLAY_WEEKENDS == 'N' ? 5 : 7 ) ); $startdate = date ( 'Ymd', $wkstart ); $enddate = date ( 'Ymd', $wkend ); $start_ind = 0; if ( $DISPLAY_WEEKENDS == 'N' ) { $end_ind = 4; $WEEK_START = 1; //Set to Monday. } else $end_ind = 6; if ( empty ( $TIME_SLOTS ) ) $TIME_SLOTS = 24; $interval = 1440 / $TIME_SLOTS; $first_slot = intval ( ( $WORK_DAY_START_HOUR * 60 ) / $interval ); $last_slot = intval ( ( $WORK_DAY_END_HOUR * 60 ) / $interval ); $untimed_found = false; $get_unapproved = ( $DISPLAY_UNAPPROVED == 'Y' ); // . // Make sure all days with events are bold if mini cal is displayed. if ( $DISPLAY_SM_MONTH == 'Y' && $BOLD_DAYS_IN_YEAR == 'Y' ) { $evStart = get_weekday_before ( $thisyear, $thismonth ); $evEnd = mktime ( 23, 59, 59, $thismonth + 2, 0, $thisyear ); } else { $evStart = $wkstart; $evEnd = $wkend; } /* Pre-Load the repeated events for quickier access. */ $repeated_events = read_repeated_events ( ( strlen ( $user ) ? $user : $login ), $evStart, $evEnd, $cat_id ); /* Pre-load the non-repeating events for quicker access. */ // Start the search ONE_WEEK early to account for cross-day events. $events = read_events ( ( strlen ( $user ) ? $user : $login ), $evStart - 604800, $evEnd, $cat_id ); if ( empty ( $DISPLAY_TASKS_IN_GRID ) || $DISPLAY_TASKS_IN_GRID == 'Y' ) /* Pre-load tasks for quicker access. */ $tasks = read_tasks ( ! empty ( $user ) && strlen ( $user ) && $is_assistant ? $user : $login, $wkend, $cat_id ); $eventsStr = $filler = $headerStr = $minical_tasks = $untimedStr = ''; $navStr = display_navigation ( 'week' ); for ( $i = $start_ind; $i <= $end_ind; $i++ ) { $days[$i] = ( $wkstart + ( 86400 * $i ) ) + 43200; $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 ( $rowspan_arr[$j] > 1 ) { if ( $rowspan_arr[$j] + ( $diff_start_time ) > $rowspan_arr[$last_row] ) $rowspan_arr[$last_row] = ( $rowspan_arr[$j] + ( $diff_start_time ) ); $rowspan += ( $rowspan_arr[$j] - 1 ); } else $rowspan_arr[$last_row] += $rowspan_arr[$j]; // . // 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[$j]; $hour_arr[$j] = ''; $rowspan_arr[$j] = 0; } $rowspan--; } else if ( ! empty ( $rowspan_arr[$j] ) && $rowspan_arr[$j] > 1 ) { $last_row = $j; $rowspan = $rowspan_arr[$j]; } } // . // Now save the output... if ( ! empty ( $hour_arr[9999] ) && strlen ( $hour_arr[9999] ) ) { $untimed[$i] = $hour_arr[9999]; $untimed_found = true; } $untimedStr .= ' <td' // Use the class 'hasevents' for any hour block that has events in it. . ( ! empty ( $untimed[$i] ) && strlen ( $untimed[$i] ) ? ' class="hasevents"' : $class ) . '>' . ( ! empty ( $untimed[$i] ) && strlen ( $untimed[$i] ) ? $untimed[$i] : ' ' ) . '</td>'; $save_hour_arr[$i] = $hour_arr; $save_rowspan_arr[$i] = $rowspan_arr; $rowspan_day[$i] = 0; } $untimedStr = ( $untimed_found ? ' <tr> <th class="empty"> </th>' . $untimedStr . ' </tr>' : '' ); for ( $i = $first_slot; $i <= $last_slot; $i++ ) { $time_h = intval ( ( $i * $interval ) / 60 ); $time_m = ( $i * $interval ) % 60; // Do not apply TZ offset. $eventsStr .= ' <tr> <th class="row">' . display_time ( ( $time_h * 100 + $time_m ) * 100, 1 ) . '</th>'; for ( $d = $start_ind; $d <= $end_ind; $d++ ) { $dateYmd = date ( 'Ymd', $days[$d] ); // Class "hasevents" overrides both "today" and "weekend". // And class "today" overrides "weekend". // So, no need to list them all. $class = ( ! empty ( $save_hour_arr[$d][$i] ) && strlen ( $save_hour_arr[$d][$i] ) ? ' class="hasevents"' : ( $dateYmd == date ( 'Ymd', $today ) ? ' class="today"' : ( is_weekend ( $days[$d] ) ? ' class="weekend"' : '' ) ) ); if ( $rowspan_day[$d] > 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 ( $save_hour_arr[$d][$i] ) ) $eventsStr .= ' <td' . $class . '>' . $save_hour_arr[$d][$i] . '</td>'; $rowspan_day[$d]--; } else { $eventsStr .= ' <td' . $class; if ( empty ( $save_hour_arr[$d][$i] ) ) { $eventsStr .= '>' . ( $can_add // If user can add events, then echo the add event icon. ? html_for_add_icon ( $dateYmd, $time_h, $time_m, $user ) : '' ) . ' '; } else { $rowspan_day[$d] = $save_rowspan_arr[$d][$i]; $eventsStr .= ( $rowspan_day[$d] > 1 ? ' rowspan="' . $rowspan_day[$d] .'"': '' ) . '>' . ( $can_add ? html_for_add_icon ( $dateYmd, $time_h, $time_m, $user ) : '' ) . $save_hour_arr[$d][$i]; } $eventsStr .= '</td>'; } } $eventsStr .= ' </tr>'; } $eventinfo = ( empty ( $eventinfo ) ? '' : $eventinfo ); $tableWidth = '100%'; $unapprovedStr = $printerStr = ''; if ( empty ( $friendly ) ) { $unapprovedStr = display_unapproved_events ( $is_assistant || $is_nonuser_admin ? $user : $login ); $printerStr = generate_printer_friendly ( 'month.php' ); } $trailerStr = print_trailer (); if ( $DISPLAY_TASKS == 'Y' ) { $tableWidth = '80%'; $filler = '<td></td>'; $minical_tasks .= ' <td id="minicolumn" rowspan="2" valign="top"> <!-- START MINICAL --> <div class="minicontainer">' . ( $DISPLAY_SM_MONTH == 'Y' ? ' <div class="minicalcontainer">' . display_small_month ( $thismonth, $thisyear, true ) . '</div>' : '' ) . ' <div id="minitask">' . display_small_tasks ( $cat_id ) . '</div> </div> </td>'; } print_header ( array ( 'js/popups.php/true' ), generate_refresh_meta (), '', false, false, false, false ); echo <<<EOT <table width="100%" cellpadding="1"> <tr> <td id="printarea" style="vertical-align:top; width:{$tableWidth};" > {$navStr} </td> {$filler} </tr> <tr> <td> <table class="main"> <tr> <th class="empty"> </th>{$headerStr} </tr>{$untimedStr}{$eventsStr} </table> </td>{$minical_tasks} </tr> </table> {$eventinfo} {$unapprovedStr} {$printerStr} {$trailerStr} EOT; ?>