From 0f927f1e4b7344d4314f41d436714be6db0632f5 Mon Sep 17 00:00:00 2001 From: Sam Hemelryk Date: Mon, 20 Sep 2010 07:00:18 +0000 Subject: [PATCH] calendar MDL-24284 Fixed up URL param encoding issue --- calendar/delete.php | 2 +- calendar/export.php | 5 +- calendar/lib.php | 272 ++++++++++++++++++++++++++++-------------- calendar/renderer.php | 15 +-- calendar/view.php | 4 +- 5 files changed, 196 insertions(+), 102 deletions(-) diff --git a/calendar/delete.php b/calendar/delete.php index 823e26ab346..8a3d0977036 100644 --- a/calendar/delete.php +++ b/calendar/delete.php @@ -120,7 +120,7 @@ echo $OUTPUT->box($buttons, 'buttons'); echo $OUTPUT->box_end(); // Print the event so that people can visually confirm they have the correct event -$event->time = calendar_format_event_time($event, time(), '', false); +$event->time = calendar_format_event_time($event, time(), null, false); calendar_print_event($event, false); echo $OUTPUT->box_end(); diff --git a/calendar/export.php b/calendar/export.php index 3c9afeb0a19..46b3436d7ee 100644 --- a/calendar/export.php +++ b/calendar/export.php @@ -123,9 +123,8 @@ $strcalendar = get_string('calendar', 'calendar'); $prefsbutton = calendar_preferences_button(); // Print title and header -$link = calendar_get_link_href(CALENDAR_URL.'view.php?view=upcoming&course='.$calendar->courseid.'&', - $now['mday'], $now['mon'], $now['year']); -$PAGE->navbar->add(get_string('calendar', 'calendar'), new moodle_url($link)); +$link = new moodle_url(CALENDAR_URL.'view.php', array('view'=>'upcoming', 'course'=>$calendar->courseid)); +$PAGE->navbar->add(get_string('calendar', 'calendar'), calendar_get_link_href($link, $now['mday'], $now['mon'], $now['year'])); $PAGE->navbar->add($pagetitle); $PAGE->set_title($site->shortname.': '.$strcalendar.': '.$pagetitle); diff --git a/calendar/lib.php b/calendar/lib.php index 1080d3d6cfc..44578a96284 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -83,6 +83,16 @@ function calendar_get_starting_weekday() { } } +/** + * + * @global core_renderer $OUTPUT + * @param $courses + * @param $groups + * @param $users + * @param $cal_month + * @param $cal_year + * @return string + */ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_year = false) { global $CFG, $USER, $OUTPUT; @@ -172,11 +182,11 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y // will also set the $SESSION->cal_courses_shown variable to that one course. Otherwise, we 'd need to add extra // arguments to this function. - $morehref = ''; + $hrefparams = array(); if(!empty($courses)) { $courses = array_diff($courses, array(SITEID)); if(count($courses) == 1) { - $morehref = '&course='.reset($courses); + $hrefparams['course'] = reset($courses); } } @@ -234,7 +244,8 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y // Special visual fx if an event is defined if(isset($eventsbyday[$day])) { $class .= ' hasevent'; - $dayhref = calendar_get_link_href(CALENDAR_URL.'view.php?view=day'.$morehref.'&', $day, $m, $y); + $hrefparams['view'] = 'day'; + $dayhref = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', $hrefparams), $day, $m, $y); // OverLib popup $popupcontent = ''; @@ -243,24 +254,28 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y continue; } $event = $events[$eventid]; + $popupalt = ''; + $component = 'moodle'; if(!empty($event->modulename)) { - $popupicon = $OUTPUT->pix_url('icon', $event->modulename) . ''; + $popupicon = 'icon'; $popupalt = $event->modulename; - + $component = $event->modulename; } else if ($event->courseid == SITEID) { // Site event - $popupicon = $OUTPUT->pix_url('c/site'); - $popupalt = ''; + $popupicon = 'c/site'; } else if ($event->courseid != 0 && $event->courseid != SITEID && $event->groupid == 0) { // Course event - $popupicon = $OUTPUT->pix_url('c/course'); - $popupalt = ''; + $popupicon = 'c/course'; } else if ($event->groupid) { // Group event - $popupicon = $OUTPUT->pix_url('c/group'); - $popupalt = ''; + $popupicon = 'c/group'; } else if ($event->userid) { // User event - $popupicon = $OUTPUT->pix_url('c/user'); - $popupalt = ''; + $popupicon = 'c/user'; } - $popupcontent .= ''; + + $dayhref->set_anchor('event_'.$event->id); + + $popupcontent .= html_writer::start_tag('div'); + $popupcontent .= $OUTPUT->pix_icon($popupicon, $popupalt); + $popupcontent .= html_writer::link($dayhref, format_string($event->name, true)); + $popupcontent .= html_writer::end_tag('div'); } //Accessibility: functionality moved to calendar_get_popup. @@ -280,7 +295,7 @@ function calendar_get_mini($courses, $groups, $users, $cal_month = false, $cal_y } else if(isset($typesbyday[$day]['startuser'])) { $class .= ' calendar_event_user'; } - $cell = ''.$day.''; + $cell = ''.$day.''; } else { $cell = $day; } @@ -413,11 +428,11 @@ function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxeve // will also set the $SESSION->cal_courses_shown variable to that one course. Otherwise, we 'd need to add extra // arguments to this function. - $morehref = ''; + $hrefparams = array(); if(!empty($courses)) { $courses = array_diff($courses, array(SITEID)); if(count($courses) == 1) { - $morehref = '&course='.reset($courses); + $hrefparams['course'] = reset($courses); } } @@ -473,7 +488,7 @@ function calendar_get_upcoming($courses, $groups, $users, $daysinfuture, $maxeve break; } - $event->time = calendar_format_event_time($event, $now, $morehref); + $event->time = calendar_format_event_time($event, $now, $hrefparams); $output[] = $event; ++$processed; } @@ -682,70 +697,116 @@ function calendar_top_controls($type, $data) { $nextlink = calendar_get_link_next(get_string('monthnext', 'access'), 'index.php?', 0, $nextmonth, $nextyear, $accesshide=true); $prevlink = calendar_get_link_previous(get_string('monthprev', 'access'), 'index.php?', 0, $prevmonth, $prevyear, true); - if (right_to_left()) { - $content .= "\n".'
'. $nextlink; - $content .= ' | '.userdate($time, get_string('strftimemonthyear')).''; - $content .= ' | '. $prevlink ."\n"; - $content .= "
\n"; - } else { - $content .= "\n".'
'. $prevlink; - $content .= ' | '.userdate($time, get_string('strftimemonthyear')).''; - $content .= ' | '. $nextlink ."\n"; - $content .= "
\n"; + $calendarlink = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', array('view'=>'month')), 1, $data['m'], $data['y']); + if (!empty($data['id'])) { + $calendarlink->param('course', $data['id']); } - break; + if (right_to_left()) { + $left = $nextlink; + $right = $prevlink; + } else { + $left = $prevlink; + $right = $nextlink; + } + + $content .= html_writer::start_tag('div', array('class'=>'calendar-controls')); + $content .= $left.' | '; + $content .= html_writer::tag('span', html_writer::link($calendarlink, userdate($time, get_string('strftimemonthyear'))), array('class'=>'current')); + $content .= ' | '. $right; + $content .= "\n"; + $content .= html_writer::end_tag('div'); + + break; case 'course': list($prevmonth, $prevyear) = calendar_sub_month($data['m'], $data['y']); list($nextmonth, $nextyear) = calendar_add_month($data['m'], $data['y']); $nextlink = calendar_get_link_next(get_string('monthnext', 'access'), 'view.php?id='.$data['id'].'&', 0, $nextmonth, $nextyear, $accesshide=true); $prevlink = calendar_get_link_previous(get_string('monthprev', 'access'), 'view.php?id='.$data['id'].'&', 0, $prevmonth, $prevyear, true); - $content .= "\n".'
'. $prevlink; - $content .= ' | '.userdate($time, get_string('strftimemonthyear')).''; - $content .= ' | '. $nextlink ."\n"; - $content .= "
\n"; - break; + + $calendarlink = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', array('view'=>'month')), 1, $data['m'], $data['y']); + if (!empty($data['id'])) { + $calendarlink->param('course', $data['id']); + } + + if (right_to_left()) { + $left = $nextlink; + $right = $prevlink; + } else { + $left = $prevlink; + $right = $nextlink; + } + + $content .= html_writer::start_tag('div', array('class'=>'calendar-controls')); + $content .= $left.' | '; + $content .= html_writer::tag('span', html_writer::link($calendarlink, userdate($time, get_string('strftimemonthyear')), array('class'=>'current'))); + $content .= ' | '. $right; + $content .= ""; + $content .= html_writer::end_tag('div'); + break; case 'upcoming': - $content .= '\n"; - break; + $calendarlink = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', array('view'=>'upcoming')), 1, $data['m'], $data['y']); + if (!empty($data['id'])) { + $calendarlink->param('course', $data['id']); + } + $calendarlink = html_writer::link($calendarlink, userdate($time, get_string('strftimemonthyear'))); + $content .= html_writer::tag('div', $calendarlink, array('class'=>'centered')); + break; case 'display': - $content .= '

'.userdate($time, get_string('strftimemonthyear'))."

\n"; - break; + $calendarlink = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', array('view'=>'month')), 1, $data['m'], $data['y']); + if (!empty($data['id'])) { + $calendarlink->param('course', $data['id']); + } + $calendarlink = html_writer::link($calendarlink, userdate($time, get_string('strftimemonthyear'))); + $content .= html_writer::tag('h3', $calendarlink); + break; case 'month': list($prevmonth, $prevyear) = calendar_sub_month($data['m'], $data['y']); list($nextmonth, $nextyear) = calendar_add_month($data['m'], $data['y']); $prevdate = make_timestamp($prevyear, $prevmonth, 1); $nextdate = make_timestamp($nextyear, $nextmonth, 1); - $content .= "\n".'
'; - $content .= calendar_get_link_previous(userdate($prevdate, get_string('strftimemonthyear')), 'view.php?view=month'.$courseid.'&', 1, $prevmonth, $prevyear); - $content .= ' |

'.userdate($time, get_string('strftimemonthyear'))."

\n"; - $content .= ' | '.calendar_get_link_next(userdate($nextdate, get_string('strftimemonthyear')), 'view.php?view=month'.$courseid.'&', 1, $nextmonth, $nextyear); - $content .= "
\n"; - break; + $prevlink = calendar_get_link_previous(userdate($prevdate, get_string('strftimemonthyear')), 'view.php?view=month'.$courseid.'&', 1, $prevmonth, $prevyear); + $nextlink = calendar_get_link_next(userdate($nextdate, get_string('strftimemonthyear')), 'view.php?view=month'.$courseid.'&', 1, $nextmonth, $nextyear); + + if (right_to_left()) { + $left = $nextlink; + $right = $prevlink; + } else { + $left = $prevlink; + $right = $nextlink; + } + + $content .= html_writer::start_tag('div', array('class'=>'calendar-controls')); + $content .= $left . ' |

'.userdate($time, get_string('strftimemonthyear'))."

"; + $content .= ' | ' . $right; + $content .= ''; + $content .= html_writer::end_tag('div')."\n"; + break; case 'day': $data['d'] = $date['mday']; // Just for convenience $prevdate = usergetdate(make_timestamp($data['y'], $data['m'], $data['d'] - 1)); $nextdate = usergetdate(make_timestamp($data['y'], $data['m'], $data['d'] + 1)); $prevname = calendar_wday_name($CALENDARDAYS[$prevdate['wday']]); $nextname = calendar_wday_name($CALENDARDAYS[$nextdate['wday']]); - $content .= "\n".'
'; - $content .= calendar_get_link_previous($prevname, 'view.php?view=day'.$courseid.'&', $prevdate['mday'], $prevdate['mon'], $prevdate['year']); + $prevlink = calendar_get_link_previous($prevname, 'view.php?view=day'.$courseid.'&', $prevdate['mday'], $prevdate['mon'], $prevdate['year']); + $nextlink = calendar_get_link_next($nextname, 'view.php?view=day'.$courseid.'&', $nextdate['mday'], $nextdate['mon'], $nextdate['year']); - // Get the format string - $text = get_string('strftimedaydate'); - /* - // Regexp hackery to make a link out of the month/year part - $text = preg_replace('/(%B.+%Y|%Y.+%B|%Y.+%m[^ ]+)/', '\\1', $text); - $text = preg_replace('/(F.+Y|Y.+F|Y.+m[^ ]+)/', '\\1', $text); - */ - // Replace with actual values and lose any day leading zero - $text = userdate($time, $text); - // Print the actual thing - $content .= ' | '.$text.''; + if (right_to_left()) { + $left = $nextlink; + $right = $prevlink; + } else { + $left = $prevlink; + $right = $nextlink; + } - $content .= ' | '. calendar_get_link_next($nextname, 'view.php?view=day'.$courseid.'&', $nextdate['mday'], $nextdate['mon'], $nextdate['year']); - $content .= "
\n"; - break; + $content .= html_writer::start_tag('div', array('class'=>'calendar-controls')); + $content .= $left; + $content .= ' | '.userdate($time, get_string('strftimedaydate')).''; + $content .= ' | '. $right; + $content .= ""; + $content .= html_writer::end_tag('div')."\n"; + + break; } return $content; } @@ -891,22 +952,43 @@ function calendar_time_representation($time) { * TODO document */ function calendar_get_link_href($linkbase, $d, $m, $y) { - if(empty($linkbase)) return ''; - $paramstr = ''; - if(!empty($d)) $paramstr .= '&cal_d='.$d; - if(!empty($m)) $paramstr .= '&cal_m='.$m; - if(!empty($y)) $paramstr .= '&cal_y='.$y; - if(!empty($paramstr)) $paramstr = substr($paramstr, 5); - return $linkbase.$paramstr; + if (empty($linkbase)) { + return ''; + } + if (!($linkbase instanceof moodle_url)) { + $linkbase = new moodle_url(); + } + if (!empty($d)) { + $linkbase->param('cal_d', $d); + } + if (!empty($m)) { + $linkbase->param('cal_m', $m); + } + if (!empty($y)) { + $linkbase->param('cal_y', $y); + } + return $linkbase; } /** - * TODO document + * This function has been deprecated as of Moodle 2.0... DO NOT USE!!!!! + * + * @deprecated + * @since 2.0 + * + * @param string $text + * @param string|moodle_url $linkbase + * @param int|null $d + * @param int|null $m + * @param int|null $y + * @return string HTML link */ function calendar_get_link_tag($text, $linkbase, $d, $m, $y) { - $href = calendar_get_link_href($linkbase, $d, $m, $y); - if(empty($href)) return $text; - return ''.$text.''; + $url = calendar_get_link_href(new moodle_url($linkbase), $d, $m, $y); + if (empty($url)) { + return $text; + } + return html_writer::link($url, $text); } /** @@ -918,9 +1000,11 @@ function calendar_get_link_tag($text, $linkbase, $d, $m, $y) { * @return string HTML string. */ function calendar_get_link_previous($text, $linkbase, $d, $m, $y, $accesshide=false) { - $href = calendar_get_link_href($linkbase, $d, $m, $y); - if(empty($href)) return $text; - return link_arrow_left($text, $href, $accesshide, 'previous'); + $href = calendar_get_link_href(new moodle_url($linkbase), $d, $m, $y); + if (empty($href)) { + return $text; + } + return link_arrow_left($text, (string)$href, $accesshide, 'previous'); } /** @@ -932,10 +1016,11 @@ function calendar_get_link_previous($text, $linkbase, $d, $m, $y, $accesshide=fa * @return string HTML string. */ function calendar_get_link_next($text, $linkbase, $d, $m, $y, $accesshide=false) { - $href = calendar_get_link_href($linkbase, $d, $m, $y); - if(empty($href)) return $text; - - return link_arrow_right($text, $href, $accesshide, 'next'); + $href = calendar_get_link_href(new moodle_url($linkbase), $d, $m, $y); + if (empty($href)) { + return $text; + } + return link_arrow_right($text, (string)$href, $accesshide, 'next'); } function calendar_wday_name($englishname) { @@ -965,8 +1050,9 @@ function calendar_get_block_upcoming($events, $linkhref = NULL) { } else { if(!empty($linkhref)) { $ed = usergetdate($events[$i]->timestart); - $href = calendar_get_link_href(CALENDAR_URL.$linkhref, $ed['mday'], $ed['mon'], $ed['year']); - $content .= ''.$events[$i]->name.''; + $href = calendar_get_link_href(new moodle_url(CALENDAR_URL.$linkhref), $ed['mday'], $ed['mon'], $ed['year']); + $href->set_anchor('event_'.$events[$i]->id); + $content .= html_writer::link($href, $events[$i]->name); } else { $content .= $events[$i]->name; @@ -1386,7 +1472,7 @@ function calendar_preferences_button() { "
"; } -function calendar_format_event_time($event, $now, $morehref, $usecommonwords = true, $showtime=0) { +function calendar_format_event_time($event, $now, $linkparams = null, $usecommonwords = true, $showtime=0) { $startdate = usergetdate($event->timestart); $enddate = usergetdate($event->timestart + $event->timeduration); $usermidnightstart = usergetmidnight($event->timestart); @@ -1399,6 +1485,11 @@ function calendar_format_event_time($event, $now, $morehref, $usecommonwords = t $usermidnightend = $usermidnightstart; } + if (empty($linkparams) || !is_array($linkparams)) { + $linkparams = array(); + } + $linkparams['view'] = 'day'; + // OK, now to get a meaningful display... // First of all we have to construct a human-readable date/time representation @@ -1419,7 +1510,8 @@ function calendar_format_event_time($event, $now, $morehref, $usecommonwords = t // Set printable representation if (!$showtime) { $day = calendar_day_representation($event->timestart, $now, $usecommonwords); - $eventtime = calendar_get_link_tag($day, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']).', '.$time; + $url = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', $linkparams), $enddate['mday'], $enddate['mon'], $enddate['year']); + $eventtime = html_writer::link($url, $day).', '.$time; } else { $eventtime = $time; } @@ -1438,12 +1530,14 @@ function calendar_format_event_time($event, $now, $morehref, $usecommonwords = t // Set printable representation if ($now >= $usermidnightstart && $now < ($usermidnightstart + 86400)) { - $eventtime = $timestart.' » '.calendar_get_link_tag($dayend, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']). - $timeend; + $url = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', $linkparams), $enddate['mday'], $enddate['mon'], $enddate['year']); + $eventtime = $timestart.' » '.html_writer::link($url, $dayend).$timeend; } else { - $eventtime = calendar_get_link_tag($daystart, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $startdate['mday'], $startdate['mon'], $startdate['year']). - $timestart.' » '.calendar_get_link_tag($dayend, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $enddate['mday'], $enddate['mon'], $enddate['year']). - $timeend; + $url = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', $linkparams), $enddate['mday'], $enddate['mon'], $enddate['year']); + $eventtime = html_writer::link($url, $daystart).$timestart.' » '; + + $url = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', $linkparams), $startdate['mday'], $startdate['mon'], $startdate['year']); + $eventtime .= html_writer::link($url, $dayend).$timeend; } } } else { @@ -1452,7 +1546,8 @@ function calendar_format_event_time($event, $now, $morehref, $usecommonwords = t // Set printable representation if (!$showtime) { $day = calendar_day_representation($event->timestart, $now, $usecommonwords); - $eventtime = calendar_get_link_tag($day, CALENDAR_URL.'view.php?view=day'.$morehref.'&', $startdate['mday'], $startdate['mon'], $startdate['year']).trim($time); + $url = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', $linkparams), $startdate['mday'], $startdate['mon'], $startdate['year']); + $eventtime = html_writer::link($url, $day).trim($time); } else { $eventtime = $time; } @@ -1876,7 +1971,6 @@ class calendar_event { break; case 'group': $this->editorcontext = get_context_instance(CONTEXT_COURSE, $this->properties->courseid); - $this->properties->groupid = 0; $this->properties->userid = $USER->id; break; default: diff --git a/calendar/renderer.php b/calendar/renderer.php index 0c021678f36..be082ab9050 100644 --- a/calendar/renderer.php +++ b/calendar/renderer.php @@ -241,7 +241,7 @@ class core_calendar_renderer extends plugin_renderer_base { $event = new calendar_event($event); $event->calendarcourseid = $calendar->courseid; if ($event->timestart >= $calendar->timestamp_today() && $event->timestart <= $calendar->timestamp_tomorrow()-1) { // Print it now - $event->time = calendar_format_event_time($event, time(), '', false, $calendar->timestamp_today()); + $event->time = calendar_format_event_time($event, time(), null, false, $calendar->timestamp_today()); $output .= $this->event($event); } else { // Save this for later $underway[] = $event; @@ -252,7 +252,7 @@ class core_calendar_renderer extends plugin_renderer_base { if (!empty($underway)) { $output .= $this->output->heading(get_string('spanningevents', 'calendar'), 3); foreach ($underway as $event) { - $event->time = calendar_format_event_time($event, time(), '', false, $calendar->timestamp_today()); + $event->time = calendar_format_event_time($event, time(), null, false, $calendar->timestamp_today()); $output .= $this->event($event); } } @@ -273,7 +273,7 @@ class core_calendar_renderer extends plugin_renderer_base { public function event(calendar_event $event, $showactions=true) { $event = calendar_add_event_metadata($event); - $output = html_writer::tag('a', '', array('name'=>'event_'.$event->id)); + $anchor = html_writer::tag('a', '', array('name'=>'event_'.$event->id)); $table = new html_table(); $table->attributes = array('class'=>'event', 'cellspacing'=>'0'); @@ -283,9 +283,9 @@ class core_calendar_renderer extends plugin_renderer_base { ); if (!empty($event->icon)) { - $table->data[0]->cells[0] = new html_table_cell($event->icon); + $table->data[0]->cells[0] = new html_table_cell($anchor.$event->icon); } else { - $table->data[0]->cells[0] = new html_table_cell($this->output->spacer(array('height'=>16, 'width'=>16, 'br'=>true))); + $table->data[0]->cells[0] = new html_table_cell($anchor.$this->output->spacer(array('height'=>16, 'width'=>16, 'br'=>true))); } $table->data[0]->cells[0]->attributes['class'] .= ' picture'; @@ -443,7 +443,7 @@ class core_calendar_renderer extends plugin_renderer_base { // Reset vars $cell = new html_table_cell(); - $dayhref = calendar_get_link_href(CALENDAR_URL.'view.php?view=day&course='.$calendar->courseid.'&', $calendar->day, $calendar->month, $calendar->year); + $dayhref = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', array('view'=>'day', 'course'=>$calendar->courseid)), $calendar->day, $calendar->month, $calendar->year); $cellclasses = array(); @@ -496,7 +496,8 @@ class core_calendar_renderer extends plugin_renderer_base { if (!empty($events[$eventindex]->class)) { $attributes['class'] = $events[$eventindex]->class; } - $link = html_writer::link($dayhref.'#event_'.$events[$eventindex]->id, format_string($events[$eventindex]->name, true)); + $dayhref->set_anchor('event_'.$events[$eventindex]->id); + $link = html_writer::link($dayhref, format_string($events[$eventindex]->name, true)); $cell->text .= html_writer::tag('li', $link, $attributes); } $cell->text .= html_writer::end_tag('ul'); diff --git a/calendar/view.php b/calendar/view.php index 173e37ff341..a1a06beb02a 100644 --- a/calendar/view.php +++ b/calendar/view.php @@ -93,9 +93,9 @@ $pagetitle = ''; $strcalendar = get_string('calendar', 'calendar'); -$link = calendar_get_link_href(CALENDAR_URL.'view.php?view=upcoming&course='.$courseid.'&', +$link = calendar_get_link_href(new moodle_url(CALENDAR_URL.'view.php', array('view'=>'upcoming', 'course'=>$courseid)), $now['mday'], $now['mon'], $now['year']); -$PAGE->navbar->add($strcalendar, new moodle_url($link)); +$PAGE->navbar->add($strcalendar, $link); if(!checkdate($mon, $day, $yr)) { $day = intval($now['mday']);