diff --git a/calendar/lib.php b/calendar/lib.php index 95f3e9a01ff..5255a728e3c 100644 --- a/calendar/lib.php +++ b/calendar/lib.php @@ -842,7 +842,7 @@ function calendar_filter_controls(moodle_url $returnurl) { $id = optional_param( 'id',0,PARAM_INT ); - $seturl = new moodle_url('/calendar/set.php', array('return' => $returnurl)); + $seturl = new moodle_url('/calendar/set.php', array('return' => base64_encode($returnurl->out(false)), 'sesskey'=>sesskey())); $content = ''; $content .= ''; diff --git a/calendar/renderer.php b/calendar/renderer.php index 8e502a82e6d..48d1ef365a8 100644 --- a/calendar/renderer.php +++ b/calendar/renderer.php @@ -580,7 +580,7 @@ class core_calendar_renderer extends plugin_renderer_base { $output .= html_writer::start_tag('tr'); // Global events - $link = new moodle_url(CALENDAR_URL.'set.php', array('var' => 'showglobal', 'return' => $returnurl)); + $link = new moodle_url(CALENDAR_URL.'set.php', array('var' => 'showglobal', 'return' => base64_encode($returnurl->out(false)), 'sesskey'=>sesskey())); if (calendar_show_event_type(CALENDAR_EVENT_GLOBAL)) { $output .= html_writer::tag('td', '', array('class'=>'calendar_event_global', 'style'=>'width:8px;')); $output .= html_writer::tag('td', html_writer::tag('strong', get_string('globalevents', 'calendar')).' '.get_string('shown', 'calendar').' ('.html_writer::link($link, get_string('clickhide', 'calendar')).')'); @@ -590,7 +590,7 @@ class core_calendar_renderer extends plugin_renderer_base { } // Course events - $link = new moodle_url(CALENDAR_URL.'set.php', array('var'=>'showcourses', 'return' => $returnurl)); + $link = new moodle_url(CALENDAR_URL.'set.php', array('var'=>'showcourses', 'return' => base64_encode($returnurl->out(false)), 'sesskey'=>sesskey())); if (calendar_show_event_type(CALENDAR_EVENT_COURSE)) { $output .= html_writer::tag('td', '', array('class'=>'calendar_event_course', 'style'=>'width:8px;')); $output .= html_writer::tag('td', html_writer::tag('strong', get_string('courseevents', 'calendar')).' '.get_string('shown', 'calendar').' ('.html_writer::link($link, get_string('clickhide', 'calendar')).')'); @@ -603,7 +603,7 @@ class core_calendar_renderer extends plugin_renderer_base { if(isloggedin() && !isguestuser()) { $output .= html_writer::start_tag('tr'); // Group events - $link = new moodle_url(CALENDAR_URL.'set.php', array('var'=>'showgroups', 'return' => $returnurl)); + $link = new moodle_url(CALENDAR_URL.'set.php', array('var'=>'showgroups', 'return' => base64_encode($returnurl->out(false)), 'sesskey'=>sesskey())); if (calendar_show_event_type(CALENDAR_EVENT_GROUP)) { $output .= html_writer::tag('td', '', array('class'=>'calendar_event_group', 'style'=>'width:8px;')); $output .= html_writer::tag('td', html_writer::tag('strong', get_string('groupevents', 'calendar')).' '.get_string('shown', 'calendar').' ('.html_writer::link($link, get_string('clickhide', 'calendar')).')'); @@ -612,7 +612,7 @@ class core_calendar_renderer extends plugin_renderer_base { $output .= html_writer::tag('td', html_writer::tag('strong', get_string('groupevents', 'calendar')).' '.get_string('hidden', 'calendar').' ('.html_writer::link($link, get_string('clickshow', 'calendar')).')'); } // User events - $link = new moodle_url(CALENDAR_URL.'set.php', array('var'=>'showuser', 'return' => $returnurl)); + $link = new moodle_url(CALENDAR_URL.'set.php', array('var'=>'showuser', 'return' => base64_encode($returnurl->out(false)), 'sesskey'=>sesskey())); if (calendar_show_event_type(CALENDAR_EVENT_USER)) { $output .= html_writer::tag('td', '', array('class'=>'calendar_event_user', 'style'=>'width:8px;')); $output .= html_writer::tag('td', html_writer::tag('strong', get_string('userevents', 'calendar')).' '.get_string('shown', 'calendar').' ('.html_writer::link($link, get_string('clickhide', 'calendar')).')'); @@ -701,7 +701,7 @@ class core_calendar_renderer extends plugin_renderer_base { } else { $selected = ''; } - $select = new single_select(new moodle_url(CALENDAR_URL.'set.php', array('return' => $returnurl, 'var' => 'setcourse')), 'id', $courseoptions, $selected, null); + $select = new single_select(new moodle_url(CALENDAR_URL.'set.php', array('return' => base64_encode($returnurl->out(false)), 'var' => 'setcourse', 'sesskey'=>sesskey())), 'id', $courseoptions, $selected, null); $select->class = 'cal_courses_flt'; if ($label !== null) { $select->label = $label; diff --git a/calendar/set.php b/calendar/set.php index 020a636533b..0122b583d98 100644 --- a/calendar/set.php +++ b/calendar/set.php @@ -41,12 +41,14 @@ require_once('../config.php'); require_once($CFG->dirroot.'/calendar/lib.php'); -$return = required_param('return', PARAM_URL); -$var = required_param('var', PARAM_ALPHA); +require_sesskey(); -$url = new moodle_url('/calendar/set.php', array('return'=>$return,'var'=>$var)); +$var = required_param('var', PARAM_ALPHA); +$return = clean_param(base64_decode(required_param('return', PARAM_RAW)), PARAM_URL); + +$url = new moodle_url('/calendar/set.php', array('return'=>base64_encode($return->out(false)),'var'=>$var, 'sesskey'=>sesskey())); $PAGE->set_url($url); -$PAGE->set_context(get_context_instance(CONTEXT_SYSTEM)); //TODO: wrong +$PAGE->set_context(get_context_instance(CONTEXT_SYSTEM)); switch($var) { case 'showgroups':