Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/main/inc/lib/redirect.class.php

105 lines
3.4 KiB

<?php
/**
* Send a redirect to the user agent and exist
*
* @license see /license.txt
* @author Laurent Opprecht <laurent@opprecht.info> for the Univesity of Geneva
*/
class Redirect {
static function www() {
return Uri::www();
}
static function go($url = '') {
if (empty($url)) {
Redirect::session_request_uri();
$www = self::www();
self::navigate($www);
}
$is_full_uri = (strpos($url, 'http') === 0);
if ($is_full_uri) {
self::navigate($url);
}
$url = self::www() . $url;
self::navigate($url);
}
/**
* Redirect to the session "request uri" if it exists.
* @param bool Whether the user just logged in (in this case, use page_after_login rules)
*/
static function session_request_uri($logging_in = false, $user_id = null) {
$no_redirection = isset($_SESSION['noredirection']) ? $_SESSION['noredirection'] : false;
if ($no_redirection) {
unset($_SESSION['noredirection']);
return;
}
$url = isset($_SESSION['request_uri']) ? $_SESSION['request_uri'] : '';
unset($_SESSION['request_uri']);
if (!empty($url)) {
self::navigate($url);
} elseif ($logging_in || (isset($_REQUEST['sso_referer']) && !empty($_REQUEST['sso_referer']))) {
if (isset($user_id)) {
// Make sure we use the appropriate role redirection in case one has been defined
$user_status = api_get_user_status($user_id);
switch ($user_status) {
case COURSEMANAGER:
$redir = api_get_setting('teacher_page_after_login');
if (!empty($redir)) {
self::navigate(api_get_path(WEB_PATH) . $redir);
}
break;
case STUDENT:
$redir = api_get_setting('student_page_after_login');
if (!empty($redir)) {
self::navigate(api_get_path(WEB_PATH) . $redir);
}
break;
case DRH:
$redir = api_get_setting('drh_page_after_login');
if (!empty($redir)) {
self::navigate(api_get_path(WEB_PATH) . $redir);
}
break;
case SESSIONADMIN:
$redir = api_get_setting('sessionadmin_page_after_login');
if (!empty($redir)) {
self::navigate(api_get_path(WEB_PATH) . $redir);
}
break;
default:
break;
}
}
$page_after_login = api_get_setting('page_after_login');
if (!empty($page_after_login)) {
self::navigate(api_get_path(WEB_PATH) . $page_after_login);
}
}
}
static function home() {
$www = self::www();
self::navigate($www);
}
static function user_home() {
$www = self::www();
self::navigate("$www/user_portal.php");
}
protected static function navigate($url)
{
$url = Security::remove_XSS($url);
session_write_close(); //should not be neeeded
header("Location: $url");
exit;
}
}