104
104
list($d, $m, $y) = array($date['mday'], $date['mon'], $date['year']); // This is what we want to display
105
105
$display->maxdays = calendar_days_in_month($m, $y);
107
// We 'll keep these values as GMT here, and offset them when the time comes to query the db
108
$display->tstart = gmmktime(0, 0, 0, $m, 1, $y); // This is GMT
109
$display->tend = gmmktime(23, 59, 59, $m, $display->maxdays, $y); // GMT
107
if (get_user_timezone_offset() < 99) {
108
// We 'll keep these values as GMT here, and offset them when the time comes to query the db
109
$display->tstart = gmmktime(0, 0, 0, $m, 1, $y); // This is GMT
110
$display->tend = gmmktime(23, 59, 59, $m, $display->maxdays, $y); // GMT
112
// no timezone info specified
113
$display->tstart = mktime(0, 0, 0, $m, 1, $y);
114
$display->tend = mktime(23, 59, 59, $m, $display->maxdays, $y);
111
117
$startwday = dayofweek(1, $m, $y);
125
// TODO: THIS IS TEMPORARY CODE!
126
// [pj] I was just reading through this and realized that I when writing this code I was probably
127
// asking for trouble, as all these time manipulations seem to be unnecessary and a simple
128
// make_timestamp would accomplish the same thing. So here goes a test:
129
//$test_start = make_timestamp($y, $m, 1);
130
//$test_end = make_timestamp($y, $m, $display->maxdays, 23, 59, 59);
131
//if($test_start != usertime($display->tstart) - dst_offset_on($display->tstart)) {
132
//notify('Failed assertion in calendar/lib.php line 126; display->tstart = '.$display->tstart.', dst_offset = '.dst_offset_on($display->tstart).', usertime = '.usertime($display->tstart).', make_t = '.$test_start);
134
//if($test_end != usertime($display->tend) - dst_offset_on($display->tend)) {
135
//notify('Failed assertion in calendar/lib.php line 130; display->tend = '.$display->tend.', dst_offset = '.dst_offset_on($display->tend).', usertime = '.usertime($display->tend).', make_t = '.$test_end);
119
139
// Get the events matching our criteria. Don't forget to offset the timestamps for the user's TZ!
120
140
$whereclause = calendar_sql_where(
121
141
usertime($display->tstart) - dst_offset_on($display->tstart),
147
167
//calendar_events_by_day($events, $display->tstart, $eventsbyday, $durationbyday, $typesbyday);
148
168
calendar_events_by_day($events, $m, $y, $eventsbyday, $durationbyday, $typesbyday);
150
$content .= '<table class="minicalendar">'; // Begin table
170
//Accessibility: added summary and <abbr> elements.
171
///global $CALENDARDAYS; appears to be broken.
172
$days_title = array('sunday','monday','tuesday','wednesday','thursday','friday','saturday');
174
$summary = get_string('calendarheading', 'calendar', userdate(make_timestamp($y, $m), get_string('strftimemonthyear')));
175
$summary = get_string('tabledata', 'access', $summary);
176
$content .= '<table class="minicalendar" summary="'.$summary.'">'; // Begin table
151
177
$content .= '<tr class="weekdays">'; // Header row: day names
153
179
// Print out the names of the weekdays
220
245
$popupcontent .= '<div><img height="16" width="16" src="'.$popupicon.'" style="vertical-align: middle; margin-right: 4px;" alt="'.$popupalt.'" /><a href="'.$dayhref.'">'.format_string($event->name,true).'</a></div>';
223
$popupcaption = get_string('eventsfor', 'calendar', userdate($events[$eventid]->timestart, $strftimetimedayshort));
224
$popupcontent = str_replace("'", "\'", htmlspecialchars($popupcontent));
225
$popup = 'onmouseover="return overlib(\''.$popupcontent.'\', CAPTION, \''.$popupcaption.'\');" onmouseout="return nd();"';
248
//Accessibility: functionality moved to calendar_get_popup.
249
if($display->thismonth && $day == $d) {
250
$popup = calendar_get_popup(true, $events[$eventid]->timestart, $popupcontent);
252
$popup = calendar_get_popup(false, $events[$eventid]->timestart, $popupcontent);
227
255
// Class and cell content
228
256
if(isset($typesbyday[$day]['startglobal'])) {
320
* calendar_get_popup, called at multiple points in from calendar_get_mini.
321
* Copied and modified from calendar_get_mini.
322
* @uses OverLib popup.
323
* @param $is_today bool, false except when called on the current day.
324
* @param $event_timestart mixed, $events[$eventid]->timestart, OR false if there are no events.
325
* @param $popupcontent string.
326
* @return $popup string, contains onmousover and onmouseout events.
328
function calendar_get_popup($is_today, $event_timestart, $popupcontent='') {
331
$popupcaption = get_string('today', 'calendar').' ';
333
if (false === $event_timestart) {
334
$popupcaption .= userdate(time(), get_string('strftimedayshort'));
335
$popupcontent = get_string('eventnone', 'calendar');
338
$popupcaption .= get_string('eventsfor', 'calendar', userdate($event_timestart, get_string('strftimedayshort')));
340
$popupcontent = str_replace("'", "\'", htmlspecialchars($popupcontent));
341
$popupcaption = str_replace("'", "\'", htmlspecialchars($popupcaption));
342
$popup = 'onmouseover="return overlib(\''.$popupcontent.'\', CAPTION, \''.$popupcaption.'\');" onmouseout="return nd();"';
282
346
function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxevents, $fromtime=0) {
555
620
$data['m'] = $date['mon'];
556
621
$data['y'] = $date['year'];
623
//Accessibility: calendar block controls, replaced <table> with <div>.
624
$nexttext = '<img src="'. $CFG->pixpath .'/a/r_next.gif" alt="'.get_string('monthnext','access').'" class="resize" />';
625
$prevtext = '<img src="'. $CFG->pixpath .'/a/r_previous.gif" alt="'.get_string('monthprev','access').'" class="resize" />';
559
628
case 'frontpage':
560
629
list($prevmonth, $prevyear) = calendar_sub_month($data['m'], $data['y']);
561
630
list($nextmonth, $nextyear) = calendar_add_month($data['m'], $data['y']);
562
$nextlink = calendar_get_link_tag('>>', 'index.php?', 0, $nextmonth, $nextyear);
563
$prevlink = calendar_get_link_tag('<<', 'index.php?', 0, $prevmonth, $prevyear);
564
$content .= '<table class="calendar-controls"><tr>';
565
$content .= '<td class="previous">'.$prevlink."</td>\n";
566
$content .= '<td class="current"><a href="'.calendar_get_link_href(CALENDAR_URL.'view.php?view=month&', 1, $data['m'], $data['y']).'">'.userdate($time, get_string('strftimemonthyear')).'</a></td>';
567
$content .= '<td class="next">'.$nextlink."</td>\n";
568
$content .= '</tr></table>';
631
$nextlink = calendar_get_link_tag($nexttext, 'index.php?', 0, $nextmonth, $nextyear);
632
$prevlink = calendar_get_link_tag($prevtext, 'index.php?', 0, $prevmonth, $prevyear);
633
$content .= '<div class="calendar-controls">';
634
$content .= '<span class="previous" title="'.get_string('monthprev','access').'">'.$prevlink."</span>\n";
635
$content .= '<span class="hide"> | </span><span class="current"><a href="'.calendar_get_link_href(CALENDAR_URL.'view.php?view=month&', 1, $data['m'], $data['y']).'">'.userdate($time, get_string('strftimemonthyear')).'</a></span>';
636
$content .= '<span class="hide"> | </span><span class="next" title="'.get_string('monthnext','access').'">'.$nextlink."</span>\n";
637
$content .= "<span class=\"clearer\"></span></div>\n";
571
640
list($prevmonth, $prevyear) = calendar_sub_month($data['m'], $data['y']);
572
641
list($nextmonth, $nextyear) = calendar_add_month($data['m'], $data['y']);
573
$nextlink = calendar_get_link_tag('>>', 'view.php?id='.$data['id'].'&', 0, $nextmonth, $nextyear);
574
$prevlink = calendar_get_link_tag('<<', 'view.php?id='.$data['id'].'&', 0, $prevmonth, $prevyear);
575
$content .= '<table class="calendar-controls"><tr>';
576
$content .= '<td class="previous">'.$prevlink."</td>\n";
577
$content .= '<td class="current"><a href="'.calendar_get_link_href(CALENDAR_URL.'view.php?view=month&course='.$data['id'].'&', 1, $data['m'], $data['y']).'">'.userdate($time, get_string('strftimemonthyear')).'</a></td>';
578
$content .= '<td class="next">'.$nextlink."</td>\n";
579
$content .= '</tr></table>';
642
$nextlink = calendar_get_link_tag($nexttext, 'view.php?id='.$data['id'].'&', 0, $nextmonth, $nextyear);
643
$prevlink = calendar_get_link_tag($prevtext, 'view.php?id='.$data['id'].'&', 0, $prevmonth, $prevyear);
644
$content .= '<div class="calendar-controls">';
645
$content .= '<span class="previous" title="'.get_string('monthprev','access').'">'.$prevlink."</span>\n";
646
$content .= '<span class="hide"> | </span><span class="current"><a href="'.calendar_get_link_href(CALENDAR_URL.'view.php?view=month&course='.$data['id'].'&', 1, $data['m'], $data['y']).'">'.userdate($time, get_string('strftimemonthyear')).'</a></span>';
647
$content .= '<span class="hide"> | </span><span class="next" title="'.get_string('monthnext','access').'">'.$nextlink."</span>\n";
648
$content .= "<span class=\"clearer\"></span></div>\n";
582
651
$content .= '<div style="text-align: center;"><a href="'.CALENDAR_URL.'view.php?view=upcoming">'.userdate($time, get_string('strftimemonthyear'))."</a></div>\n";
589
658
list($nextmonth, $nextyear) = calendar_add_month($data['m'], $data['y']);
590
659
$prevdate = make_timestamp($prevyear, $prevmonth, 1);
591
660
$nextdate = make_timestamp($nextyear, $nextmonth, 1);
592
$content .= '<table class="calendar-controls"><tr>';
593
$content .= '<td class="previous"><a href="'.calendar_get_link_href('view.php?view=month&', 1, $prevmonth, $prevyear).'"><< '.userdate($prevdate, get_string('strftimemonthyear')).'</a></td>';
594
$content .= '<td class="current">'.userdate($time, get_string('strftimemonthyear'))."</td>\n";
595
$content .= '<td class="next"><a href="'.calendar_get_link_href('view.php?view=month&', 1, $nextmonth, $nextyear).'">'.userdate($nextdate, get_string('strftimemonthyear'))." >></a></td>\n";
596
$content .= "</tr></table>\n";
661
$content .= '<div class="calendar-controls">';
662
$content .= '<span class="previous"><a href="'.calendar_get_link_href('view.php?view=month&', 1, $prevmonth, $prevyear).'">< '.userdate($prevdate, get_string('strftimemonthyear')).'</a></span>';
663
$content .= '<span class="hide"> | </span><span class="current">'.userdate($time, get_string('strftimemonthyear'))."</span>\n";
664
$content .= '<span class="hide"> | </span><span class="next"><a href="'.calendar_get_link_href('view.php?view=month&', 1, $nextmonth, $nextyear).'">'.userdate($nextdate, get_string('strftimemonthyear'))." ></a></span>\n";
665
$content .= "<span class=\"clearer\"></span></div>\n";
599
668
$data['d'] = $date['mday']; // Just for convenience
601
670
$nextdate = usergetdate(make_timestamp($data['y'], $data['m'], $data['d'] + 1));
602
671
$prevname = calendar_wday_name($CALENDARDAYS[$prevdate['wday']]);
603
672
$nextname = calendar_wday_name($CALENDARDAYS[$nextdate['wday']]);
604
$content .= '<table class="calendar-controls"><tr>';
605
$content .= '<td class="previous"><a href="'.calendar_get_link_href('view.php?view=day&', $prevdate['mday'], $prevdate['mon'], $prevdate['year']).'"><< '.$prevname."</a></td>\n";
673
$content .= '<div class="calendar-controls">';
674
$content .= '<span class="previous"><a href="'.calendar_get_link_href('view.php?view=day&', $prevdate['mday'], $prevdate['mon'], $prevdate['year']).'">< '.$prevname."</a></span>\n";
607
676
// Get the format string
608
677
$text = get_string('strftimedaydate');
614
683
// Replace with actual values and lose any day leading zero
615
684
$text = userdate($time, $text);
616
685
// Print the actual thing
617
$content .= '<td class="current">'.$text.'</td>';
686
$content .= '<span class="hide"> | </span><span class="current">'.$text.'</span>';
619
$content .= '<td class="next"><a href="'.calendar_get_link_href('view.php?view=day&', $nextdate['mday'], $nextdate['mon'], $nextdate['year']).'">'.$nextname." >></a></td>\n";
620
$content .= '</tr></table>';
688
$content .= '<span class="hide"> | </span><span class="next"><a href="'.calendar_get_link_href('view.php?view=day&', $nextdate['mday'], $nextdate['mon'], $nextdate['year']).'">'.$nextname." ></a></span>\n";
689
$content .= "<span class=\"clearer\"></span></div>\n";