function calendar_session_vars($course = null) { global $SESSION, $USER; if (!empty($USER->id) && isset($USER->realuser) && !isset($SESSION->cal_loggedinas)) { // We just logged in as someone else, update the filtering unset($SESSION->cal_users_shown); unset($SESSION->cal_courses_shown); $SESSION->cal_loggedinas = true; if (intval(get_user_preferences('calendar_persistflt', 0))) { calendar_set_filters_status(get_user_preferences('calendar_savedflt', 0xff)); } } else { if (!empty($USER->id) && !isset($USER->realuser) && isset($SESSION->cal_loggedinas)) { // We just logged back to our real self, update again unset($SESSION->cal_users_shown); unset($SESSION->cal_courses_shown); unset($SESSION->cal_loggedinas); if (intval(get_user_preferences('calendar_persistflt', 0))) { calendar_set_filters_status(get_user_preferences('calendar_savedflt', 0xff)); } } } if (!isset($SESSION->cal_course_referer)) { $SESSION->cal_course_referer = 0; } if (!isset($SESSION->cal_show_global)) { $SESSION->cal_show_global = true; } if (!isset($SESSION->cal_show_groups)) { $SESSION->cal_show_groups = true; } if (!isset($SESSION->cal_show_course)) { $SESSION->cal_show_course = true; } if (!isset($SESSION->cal_show_user)) { $SESSION->cal_show_user = true; } if (isset($course)) { // speedup hack for calendar related blocks $SESSION->cal_courses_shown = array($course->id => $course); } else { $SESSION->cal_courses_shown = calendar_get_default_courses(true); } if (empty($SESSION->cal_users_shown)) { // The empty() instead of !isset() here makes a whole world of difference, // as it will automatically change to the user's id when the user first logs // in. With !isset(), it would never do that. $SESSION->cal_users_shown = !empty($USER->id) ? $USER->id : false; } else { if (is_numeric($SESSION->cal_users_shown) && !empty($USER->id) && $SESSION->cal_users_shown != $USER->id) { // Follow the white rabbit, for example if a teacher logs in as a student $SESSION->cal_users_shown = $USER->id; } } }
/** * When logging in, this function is run to set certain preferences * for the current SESSION */ function set_login_session_preferences() { global $SESSION, $CFG; $SESSION->justloggedin = true; unset($SESSION->lang); // Restore the calendar filters, if saved if (intval(get_user_preferences('calendar_persistflt', 0))) { include_once $CFG->dirroot . '/calendar/lib.php'; calendar_set_filters_status(get_user_preferences('calendar_savedflt', 0xff)); } }