1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138 |
- <?php
- require_once api_get_path(LIBRARY_PATH).'conditionallogin.lib.php';
- if (isset($_SESSION['info_current_user'][1]) && isset($_SESSION['info_current_user'][2])) {
- require_once api_get_path(LIBRARY_PATH).'legal.lib.php';
- }
- if (isset($_SESSION['conditional_login']['uid']) && $_SESSION['conditional_login']['can_login']=== true){
- $uData = UserManager::get_user_info_by_id($_SESSION['conditional_login']['uid']);
- ConditionalLogin::check_conditions($uData);
-
- $_user['user_id'] = $_SESSION['conditional_login']['uid'];
- $_user['status'] = $uData['status'];
- api_session_register('_user');
- api_session_unregister('conditional_login');
- $uidReset=true;
- event_login();
- }
- $logout = isset($_GET["logout"]) ? $_GET["logout"] : '';
- $gidReq = isset($_GET["gidReq"]) ? Database::escape_string($_GET["gidReq"]) : '';
- $cidReq = isset($cidReq) ? Database::escape_string($cidReq) : '';
- $cidReq = isset($_GET["cidReq"]) ? Database::escape_string($_GET["cidReq"]) : $cidReq;
- $cidReset = isset($cidReset) ? Database::escape_string($cidReset) : '';
- $cidReset = (isset($_GET['cidReq']) && ((isset($_SESSION['_cid']) && $_GET['cidReq']!=$_SESSION['_cid']) || (!isset($_SESSION['_cid'])))) ? Database::escape_string($_GET["cidReq"]) : $cidReset;
- $cDir = (!empty($_GET['cDir']) ? $_GET['cDir'] : null);
- $gidReset = isset($gidReset) ? $gidReset : '';
- $login = isset($_POST["login"]) ? $_POST["login"] : '';
- if (!empty($_SESSION['_user']['user_id']) && ! ($login || $logout)) {
-
- $_user['user_id'] = $_SESSION['_user']['user_id'];
-
-
- if (isset($_SESSION['_user']['uidReset']) && $_SESSION['_user']['uidReset']){
- $uidReset=true;
- }
- } else {
- if (isset($_user['user_id'])) {
- unset($_user['user_id']);
- }
-
-
-
- if (api_get_setting('allow_terms_conditions')=='true') {
- if (isset($_POST['login']) && isset($_POST['password']) && isset($_SESSION['update_term_and_condition'][1])) {
- $user_id = $_SESSION['update_term_and_condition'][1];
-
-
- $info_legal = explode(':',$_POST['legal_info']);
- $legal_type = LegalManager::get_type_of_terms_and_conditions($info_legal[0],$info_legal[1]);
-
- if ($legal_type==1) {
- if ((isset($_POST['legal_accept']) && $_POST['legal_accept']=='1')) {
- $legal_option=true;
- } else {
- $legal_option=false;
- }
- }
-
- if ($legal_type==0) {
- $legal_option=true;
- }
- if (isset($_POST['legal_accept_type']) && $legal_option===true) {
- $cond_array = explode(':',$_POST['legal_accept_type']);
- if (!empty($cond_array[0]) && !empty($cond_array[1])){
- $time = time();
- $condition_to_save = intval($cond_array[0]).':'.intval($cond_array[1]).':'.$time;
- UserManager::update_extra_field_value($user_id,'legal_accept',$condition_to_save);
- }
- }
- }
- }
-
- if (api_get_setting('cas_activate') == 'true') {
- $cas_activated = true;
- } else {
- $cas_activated = false;
- }
- $cas_login=false;
- if ($cas_activated AND !isset($_user['user_id']) and !isset($_POST['login']) && !$logout) {
- require_once(api_get_path(SYS_PATH).'main/auth/cas/authcas.php');
- $cas_login = cas_is_authenticated();
- }
- if ( ( isset($_POST['login']) AND isset($_POST['password']) ) OR ($cas_login) ) {
-
- if ( $cas_login && empty($_POST['login']) ) {
- $login = $cas_login;
- } else {
- $login = $_POST['login'];
- $password = $_POST['password'];
- }
-
- $user_table = Database::get_main_table(TABLE_MAIN_USER);
- $sql = "SELECT user_id, username, password, auth_source, active, expiration_date, status FROM $user_table
- WHERE username = '".Database::escape_string($login)."'";
- $result = Database::query($sql);
- if (Database::num_rows($result) > 0) {
- $uData = Database::fetch_array($result);
- if ($uData['auth_source'] == PLATFORM_AUTH_SOURCE || $uData['auth_source'] == CAS_AUTH_SOURCE) {
-
- $password = trim(stripslashes($password));
- if (api_get_setting('allow_terms_conditions')=='true') {
- if (isset($_POST['password']) && isset($_SESSION['info_current_user'][2]) && $_POST['password']==$_SESSION['info_current_user'][2]) {
- $password=$_POST['password'];
- } else {
- $password = api_get_encrypted_password($password);
- }
- } else {
- $password = api_get_encrypted_password($password);
- }
- if (api_get_setting('allow_terms_conditions')=='true') {
- if ($password == $uData['password'] AND (trim($login) == $uData['username']) OR $cas_login ) {
- $temp_user_id = $uData['user_id'];
- $term_and_condition_status=api_check_term_condition($temp_user_id);
- if ($term_and_condition_status===false) {
- $_SESSION['update_term_and_condition']=array(true,$temp_user_id);
- $_SESSION['info_current_user']=array(true,$login,$password);
- header('Location: '.api_get_path(WEB_CODE_PATH).'auth/inscription.php');
- exit;
- } else {
- unset($_SESSION['update_term_and_condition']);
- unset($_SESSION['info_current_user']);
- }
- }
- }
-
- if ( ($password == $uData['password'] OR $cas_login) AND (trim($login) == $uData['username'])) {
- require_once(api_get_path(LIBRARY_PATH).'usermanager.lib.php');
- $update_type = UserManager::get_extra_user_data_by_field($uData['user_id'], 'update_type');
- $update_type= $update_type['update_type'];
- if (!empty($extAuthSource[$update_type]['updateUser']) && file_exists($extAuthSource[$update_type]['updateUser'])) {
- include_once($extAuthSource[$update_type]['updateUser']);
- }
-
- if ($uData['active']=='1') {
-
-
- if ($uData['expiration_date'] > date('Y-m-d H:i:s') OR $uData['expiration_date'] == '0000-00-00 00:00:00') {
- global $_configuration;
- if (isset($_configuration['multiple_access_urls']) && $_configuration['multiple_access_urls']) {
- $admin_table = Database::get_main_table(TABLE_MAIN_ADMIN);
-
- $sql = "SELECT user_id FROM $admin_table
- WHERE user_id = '".intval($uData['user_id'])."' LIMIT 1";
- $result = Database::query($sql);
- $my_user_is_admin = false;
- if (Database::num_rows($result) > 0) {
- $my_user_is_admin = true;
- }
-
- $my_url_list = api_get_access_url_from_user($uData['user_id']);
-
-
- $current_access_url_id = api_get_current_access_url_id();
- if ($my_user_is_admin === false) {
- if (is_array($my_url_list) && count($my_url_list)>0 ) {
-
- if (in_array($current_access_url_id, $my_url_list)) {
- ConditionalLogin::check_conditions($uData);
-
- $_user['user_id'] = $uData['user_id'];
- $_user['status'] = $uData['status'];
- api_session_register('_user');
- event_login();
- } else {
- $loginFailed = true;
- api_session_unregister('_uid');
- header('Location: '.api_get_path(WEB_PATH).'index.php?loginFailed=1&error=access_url_inactive');
- exit;
- }
- } else {
- $loginFailed = true;
- api_session_unregister('_uid');
- header('Location: '.api_get_path(WEB_PATH).'index.php?loginFailed=1&error=access_url_inactive');
- exit;
- }
- } else {
-
- if (in_array(1, $my_url_list)) {
- ConditionalLogin::check_conditions($uData);
- $_user['user_id'] = $uData['user_id'];
- $_user['status'] = $uData['status'];
- api_session_register('_user');
- event_login();
- } else {
-
- if (in_array($current_access_url_id, $my_url_list)) {
- $_user['user_id'] = $uData['user_id'];
- $_user['status'] = $uData['status'];
- api_session_register('_user');
- event_login();
- } else {
- $loginFailed = true;
- api_session_unregister('_uid');
- header('Location: '.api_get_path(WEB_PATH).'index.php?loginFailed=1&error=access_url_inactive');
- exit;
- }
- }
- }
- } else {
- ConditionalLogin::check_conditions($uData);
- $_user['user_id'] = $uData['user_id'];
- $_user['status'] = $uData['status'];
-
- api_session_register('_user');
- event_login();
- }
- } else {
- $loginFailed = true;
- api_session_unregister('_uid');
- header('Location: '.api_get_path(WEB_PATH).'index.php?loginFailed=1&error=account_expired');
- exit;
- }
- } else {
- $loginFailed = true;
- api_session_unregister('_uid');
- header('Location: '.api_get_path(WEB_PATH).'index.php?loginFailed=1&error=account_inactive');
- exit;
- }
- } else {
-
- $loginFailed = true;
- api_session_unregister('_uid');
- header('Location: '.api_get_path(WEB_PATH).'index.php?loginFailed=1&error=user_password_incorrect');
- exit;
- }
- if (isset($uData['creator_id']) && $_user['user_id'] != $uData['creator_id']) {
-
-
-
- }
- } elseif (!empty($extAuthSource[$uData['auth_source']]['login']) && file_exists($extAuthSource[$uData['auth_source']]['login'])) {
-
- $loginFailed = true;
-
- $key = $uData['auth_source'];
-
-
- include_once($extAuthSource[$key]['login']);
-
- } else {
-
- error_log('Chamilo Authentication file '. $extAuthSource[$uData['auth_source']]['login']. ' could not be found - this might prevent your system from doing the corresponding authentication process',0);
- }
- } else {
-
- $loginFailed = true;
-
-
- if (isset($extAuthSource) && is_array($extAuthSource)) {
- foreach($extAuthSource as $thisAuthSource) {
- if (!empty($thisAuthSource['newUser']) && file_exists($thisAuthSource['newUser'])) {
- include_once($thisAuthSource['newUser']);
- } else {
- error_log('Chamilo Authentication file '. $thisAuthSource['newUser']. ' could not be found - this might prevent your system from using the authentication process in the user creation process',0);
- }
- }
- }
- if ($loginFailed) {
- header('Location: '.api_get_path(WEB_PATH).'index.php?loginFailed=1&error=user_password_incorrect');
- }
- }
- } elseif (api_get_setting('sso_authentication')==='true' && !in_array('webservices', explode('/', $_SERVER['REQUEST_URI']))) {
-
- $subsso = api_get_setting('sso_authentication_subclass');
- require_once(api_get_path(SYS_CODE_PATH).'auth/sso/sso.class.php');
- if (!empty($subsso)) {
- require_once(api_get_path(SYS_CODE_PATH).'auth/sso/sso.'.$subsso.'.class.php');
- $subsso = 'sso'.$subsso;
- $osso = new $subsso();
- } else {
- $osso = new sso();
- }
- if (isset($_SESSION['_user']['user_id'])) {
- if ($logout) {
-
-
- global $logout_no_redirect;
- $logout_no_redirect = TRUE;
-
- online_logout();
- $osso->logout();
- }
- } elseif(!$logout) {
-
- if (!isset($_GET['sso_referer']) && !isset($_GET['loginFailed'])) {
-
- $osso->ask_master();
- } elseif (isset($_GET['sso_cookie'])) {
- $protocol = api_get_setting('sso_authentication_protocol');
- $master_url = api_get_setting('sso_authentication_domain').api_get_setting('sso_authentication_auth_uri');
- if (isset($_GET['sso_referer']) ? $_GET['sso_referer'] === $protocol.$master_url : FALSE) {
-
-
- $osso->check_user();
- } else {
-
- $loginFailed = true;
- api_session_unregister('_uid');
- header('Location: '.api_get_path(WEB_PATH).'index.php?loginFailed=1&error=unrecognize_sso_origin');
- exit;
- }
- }
- }
- } elseif (api_get_setting('openid_authentication')=='true') {
- if (!empty($_POST['openid_url'])) {
- include 'main/auth/openid/login.php';
- openid_begin(trim($_POST['openid_url']),api_get_path(WEB_PATH).'index.php');
-
- die('Openid login redirection should be in progress');
- } elseif (!empty($_GET['openid_identity'])) {
-
- include('main/auth/openid/login.php');
- $res = openid_complete($_GET);
- if ($res['status'] == 'success') {
- $id1 = Database::escape_string($res['openid.identity']);
-
- $id2 = (substr($id1,-1,1)=='/'?substr($id1,0,-1):$id1.'/');
-
- $user_table = Database::get_main_table(TABLE_MAIN_USER);
- $sql = "SELECT user_id, username, password, auth_source, active, expiration_date
- FROM $user_table
- WHERE openid = '$id1'
- OR openid = '$id2' ";
- $result = Database::query($sql);
- if ($result !== false) {
- if (Database::num_rows($result)>0) {
-
- $uData = Database::fetch_array($result);
- if ($uData['auth_source'] == PLATFORM_AUTH_SOURCE) {
-
-
- if ($uData['active']=='1') {
-
- if ($uData['expiration_date']>date('Y-m-d H:i:s') OR $uData['expiration_date']=='0000-00-00 00:00:00') {
- $_user['user_id'] = $uData['user_id'];
- $_user['status'] = $uData['status'];
-
- api_session_register('_user');
- event_login();
- } else {
- $loginFailed = true;
- api_session_unregister('_uid');
- header('Location: index.php?loginFailed=1&error=account_expired');
- exit;
- }
- } else {
- $loginFailed = true;
- api_session_unregister('_uid');
- header('Location: index.php?loginFailed=1&error=account_inactive');
- exit;
- }
- if (isset($uData['creator_id']) && $_user['user_id'] != $uData['creator_id']) {
-
-
-
- }
- }
- } else {
-
- header('Location: '.api_get_path(WEB_CODE_PATH).'auth/inscription.php?username='.$res['openid.sreg.nickname'].'&email='.$res['openid.sreg.email'].'&openid='.$res['openid.identity'].'&openid_msg=idnotfound');
-
- }
- } else {
- $loginFailed = true;
- }
- } else {
- $loginFailed = true;
- }
- }
- }
-
- $uidReset = true;
-
-
- }
- if (isset($use_anonymous) && $use_anonymous) {
-
-
- api_set_anonymous();
- } else {
-
-
- api_clear_anonymous();
- }
- if (!empty($cDir)) {
- $c = CourseManager::get_course_id_from_path($cDir);
- if ($c) { $cidReq = $c; }
- }
- if (!empty($cidReq) && (!isset($_SESSION['_cid']) or (isset($_SESSION['_cid']) && $cidReq != $_SESSION['_cid']))) {
- $cidReset = true;
- $gidReset = true;
- }
- $gid = isset($_SESSION['_gid']) ? $_SESSION['_gid'] : '';
- if ($gidReq && $gidReq != $gid) {
- $gidReset = true;
- }
-
- if (isset($uidReset) && $uidReset) {
- unset($_SESSION['_user']['uidReset']);
- $is_platformAdmin = false;
- $is_allowedCreateCourse = false;
- if (isset($_user['user_id']) && $_user['user_id'] && ! api_is_anonymous()) {
-
- $user_table = Database::get_main_table(TABLE_MAIN_USER);
- $admin_table = Database::get_main_table(TABLE_MAIN_ADMIN);
- $track_e_login = Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_LOGIN);
- $sql = "SELECT user.*, a.user_id is_admin, UNIX_TIMESTAMP(login.login_date) login_date
- FROM $user_table
- LEFT JOIN $admin_table a
- ON user.user_id = a.user_id
- LEFT JOIN $track_e_login login
- ON user.user_id = login.login_user_id
- WHERE user.user_id = '".$_user['user_id']."'
- ORDER BY login.login_date DESC LIMIT 1";
- $result = Database::query($sql);
- if (Database::num_rows($result) > 0) {
-
- $uData = Database::fetch_array($result);
- $_user ['firstName'] = $uData ['firstname' ];
- $_user ['lastName' ] = $uData ['lastname' ];
- $_user ['mail' ] = $uData ['email' ];
- $_user ['lastLogin'] = $uData ['login_date'];
- $_user ['official_code'] = $uData ['official_code'];
- $_user ['picture_uri'] = $uData ['picture_uri'];
- $_user ['user_id'] = $uData ['user_id'];
- $_user ['language'] = $uData ['language'];
- $_user ['auth_source'] = $uData ['auth_source'];
- $_user ['theme'] = $uData ['theme'];
- $_user ['status'] = $uData ['status'];
- $is_platformAdmin = (bool) (! is_null( $uData['is_admin']));
- $is_allowedCreateCourse = (bool) (($uData ['status'] == 1) or (api_get_setting('drhCourseManagerRights') and $uData['status'] == 4));
- ConditionalLogin::check_conditions($uData);
- api_session_register('_user');
- UserManager::update_extra_field_value($_user['user_id'], 'already_logged_in', 'true');
- api_session_register('is_platformAdmin');
- api_session_register('is_allowedCreateCourse');
-
-
- if (empty($_SESSION['request_uri']) || !isset($_SESSION['request_uri'])) {
- if (isset($_SESSION['noredirection'])) {
-
- unset($_SESSION['noredirection']);
- } else {
- require_once api_get_path(LIBRARY_PATH).'loginredirection.lib.php';
- LoginRedirection::redirect();
- }
- }
- } else {
- header('location:'.api_get_path(WEB_PATH));
-
- }
- } else {
- api_session_unregister('_user');
- api_session_unregister('_uid');
- }
-
- api_session_register('is_platformAdmin');
- api_session_register('is_allowedCreateCourse');
- } else {
- $_user = $_SESSION['_user'];
- $is_platformAdmin = $_SESSION['is_platformAdmin'];
- $is_allowedCreateCourse = $_SESSION['is_allowedCreateCourse'];
- }
- if (isset($cidReset) && $cidReset) {
-
- if ($cidReq) {
- $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
- $course_cat_table = Database::get_main_table(TABLE_MAIN_CATEGORY);
- $sql = "SELECT course.*, course_category.code faCode, course_category.name faName
- FROM $course_table
- LEFT JOIN $course_cat_table
- ON course.category_code = course_category.code
- WHERE course.code = '$cidReq'";
- $result = Database::query($sql);
- if (Database::num_rows($result) > 0) {
- $course_data = Database::fetch_array($result);
-
- $_real_cid = $course_data['id'];
-
- $_cid = $course_data['code'];
- $_course = array();
- $_course['real_id'] = $course_data['id'];
- $_course['id'] = $course_data['code'];
- $_course['code'] = $course_data['code'];
- $_course['name'] = $course_data['title'];
- $_course['official_code'] = $course_data['visual_code'];
- $_course['sysCode'] = $course_data['code'];
- $_course['path'] = $course_data['directory'];
- $_course['dbName'] = $course_data['db_name'];
- $_course['db_name'] = $course_data['db_name'];
- $_course['dbNameGlu'] = $_configuration['table_prefix'] . $course_data['db_name'] . $_configuration['db_glue'];
- $_course['titular'] = $course_data['tutor_name'];
- $_course['language'] = $course_data['course_language'];
- $_course['extLink']['url' ] = $course_data['department_url'];
- $_course['extLink']['name'] = $course_data['department_name'];
- $_course['categoryCode'] = $course_data['faCode'];
- $_course['categoryName'] = $course_data['faName'];
- $_course['visibility'] = $course_data['visibility'];
- $_course['subscribe_allowed'] = $course_data['subscribe'];
- $_course['unubscribe_allowed'] = $course_data['unsubscribe'];
- $_course['activate_legal'] = $course_data['activate_legal'];
- $_course['show_score'] = $course_data['show_score'];
- api_session_register('_cid');
- api_session_register('_course');
-
-
- api_session_register('_real_cid');
-
- if (api_get_setting('use_session_mode') == 'true') {
-
- $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
- $tbl_session_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
- $tbl_session_course_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
- if (!empty($_GET['id_session'])) {
- $_SESSION['id_session'] = intval($_GET['id_session']);
- $sql = 'SELECT name FROM '.$tbl_session . ' WHERE id="'.intval($_SESSION['id_session']) . '"';
- $rs = Database::query($sql);
- list($_SESSION['session_name']) = Database::fetch_array($rs);
- } else {
- api_session_unregister('session_name');
- api_session_unregister('id_session');
- }
- }
- if (!isset($_SESSION['login_as'])) {
-
- if (isset($_user['user_id'])) {
- event_course_login($_course['sysCode'], $_user['user_id'], api_get_session_id());
- }
- }
- } else {
-
- header('location:'.api_get_path(WEB_PATH));
- }
- } else {
- api_session_unregister('_cid');
- api_session_unregister('_real_cid');
- api_session_unregister('_course');
-
- if (!empty($_SESSION)) {
- foreach($_SESSION as $key=>$session_item) {
- if (strpos($key,'lp_autolunch_') === false) {
- continue;
- } else {
- if(isset($_SESSION[$key])) {
- api_session_unregister($key);
- }
- }
- }
- }
-
- if (api_get_session_id()) {
- api_session_unregister('id_session');
- api_session_unregister('session_name');
- }
- }
- } else {
-
- if (empty($_SESSION['_course']) OR empty($_SESSION['_cid'])) {
- $_cid = -1;
- $_course = -1;
- } else {
- $_cid = $_SESSION['_cid' ];
- $_course = $_SESSION['_course'];
-
-
- if (!empty($_GET['id_session'])) {
- $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
- $sql = 'SELECT name FROM '.$tbl_session . ' WHERE id="'.intval($_SESSION['id_session']). '"';
- $rs = Database::query($sql);
- list($_SESSION['session_name']) = Database::fetch_array($rs);
- $_SESSION['id_session'] = intval($_GET['id_session']);
- }
-
- if (!isset($_SESSION['login_as'])) {
- $save_course_access = true;
-
-
-
- if (isset($_dont_save_user_course_access) && $_dont_save_user_course_access == true) {
- $save_course_access = false;
- }
-
- if ($save_course_access) {
- $course_tracking_table = Database :: get_statistic_table(TABLE_STATISTIC_TRACK_E_COURSE_ACCESS);
-
-
-
-
- $session_lifetime = 3600;
- $course_code = $_course['sysCode'];
- $time = api_get_datetime();
-
- if (isset($_user['user_id']) && !empty($_user['user_id'])) {
-
-
- $sql = "SELECT course_access_id FROM $course_tracking_table
- WHERE user_id = ".intval($_user ['user_id'])." AND
- course_code = '$course_code' AND
- session_id = ".api_get_session_id()." AND
- login_course_date > now() - INTERVAL $session_lifetime SECOND
- ORDER BY login_course_date DESC LIMIT 0,1";
- $result = Database::query($sql);
- if (Database::num_rows($result) > 0) {
- $i_course_access_id = Database::result($result,0,0);
-
- $sql = "UPDATE $course_tracking_table SET logout_course_date = '$time', counter = counter+1
- WHERE course_access_id = ".intval($i_course_access_id)." AND session_id = ".api_get_session_id();
-
- Database::query($sql);
- } else {
- $sql="INSERT INTO $course_tracking_table (course_code, user_id, login_course_date, logout_course_date, counter, session_id)" .
- "VALUES('".$course_code."', '".$_user['user_id']."', '$time', '$time', '1','".api_get_session_id()."')";
-
- Database::query($sql);
- }
- }
- }
- }
- }
- }
- $session_id = api_get_session_id();
- $user_id = isset($_user['user_id']) ? $_user['user_id'] : null;
- $is_courseAdmin = false;
- $is_courseTutor = false;
- $is_courseMember = false;
- $is_sessionAdmin = false;
- if ((isset($uidReset) && $uidReset) || (isset($cidReset) && $cidReset)) {
-
- if (isset($user_id) && $user_id && isset($_cid) && $_cid) {
-
-
- $course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
- $sql = "SELECT * FROM $course_user_table
- WHERE user_id = '".$user_id."' AND relation_type <> ".COURSE_RELATION_TYPE_RRHH."
- AND course_code = '$cidReq'";
- $result = Database::query($sql);
-
- $cuData = null;
- if (Database::num_rows($result) > 0) {
- $cuData = Database::fetch_array($result, 'ASSOC');
- $is_courseAdmin = (bool) ($cuData['status'] == 1 );
- $is_courseTutor = (bool) ($cuData['tutor_id' ] == 1 );
- $is_courseMember = true;
-
-
- if ($_course['activate_legal'] == 1 && !api_is_platform_admin()) {
- $user_is_subscribed = CourseManager::is_user_accepted_legal($user_id, $_course['id'], $session_id);
- if (!$user_is_subscribed) {
- $url = api_get_path(WEB_CODE_PATH).'course_info/legal.php?course_code='.$_course['code'].'&session_id='.$session_id;
- header('Location: '.$url);
- exit;
- }
- }
- $_courseUser['role'] = $cuData['role'];
- api_session_register('_courseUser');
- }
-
-
- if (!empty($session_id)) {
-
-
- if ($is_courseAdmin == false) {
-
-
- $tbl_session = Database :: get_main_table(TABLE_MAIN_SESSION);
- $tbl_session_course = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE);
- $tbl_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
-
- $sql = "SELECT session.id_coach, session_admin_id, session_rcru.id_user
- FROM $tbl_session session, $tbl_session_course_user session_rcru
- WHERE session_rcru.id_session = session.id AND
- session_rcru.course_code = '$_cid' AND
- session_rcru.id_user = '$user_id' AND
- session_rcru.id_session = $session_id AND
- session_rcru.status = 2";
- $result = Database::query($sql);
- $row = Database::store_result($result);
-
-
- if (isset($row) && isset($row[0]) && $row[0]['session_admin_id'] == $user_id) {
- $_courseUser['role'] = 'Professor';
- $is_courseMember = false;
- $is_courseTutor = false;
- $is_courseAdmin = false;
- $is_courseCoach = false;
- $is_sessionAdmin = true;
- } else {
-
- $sql = "SELECT id_user FROM ".$tbl_session_course_user."
- WHERE course_code = '$_cid' AND
- id_user = '".$user_id."' AND
- id_session = '".$session_id."'
- LIMIT 1";
- $result = Database::query($sql);
-
- if (Database::num_rows($result)) {
- $row = Database::fetch_array($result,'ASSOC');
-
- $session_course_status = $row['status'];
-
- switch($session_course_status) {
- case '2':
- $_courseUser['role'] = 'Professor';
- $is_courseMember = true;
- $is_courseTutor = true;
- $is_courseCoach = true;
- $is_sessionAdmin = false;
- if (api_get_setting('extend_rights_for_coach') == 'true') {
- $is_courseAdmin = true;
- } else {
- $is_courseAdmin = false;
- }
- api_session_register('_courseUser');
- break;
- case '0':
- $is_courseMember = true;
- $is_courseTutor = false;
- $is_courseAdmin = false;
- $is_sessionAdmin = false;
- api_session_register('_courseUser');
- break;
- default:
-
- $is_courseMember = false;
- $is_courseTutor = false;
- $is_courseAdmin = false;
- $is_sessionAdmin = false;
- api_session_unregister('_courseUser');
- break;
- }
- } else {
-
- $is_courseMember = false;
- $is_courseTutor = false;
- $is_courseAdmin = false;
- $is_sessionAdmin = false;
- api_session_unregister('_courseUser');
- }
- }
- }
-
-
- if ($is_platformAdmin) {
- $is_courseAdmin = true;
- }
- }
- } else {
-
- $is_courseMember = false;
- $is_courseAdmin = false;
- $is_courseTutor = false;
- $is_courseCoach = false;
- $is_sessionAdmin = false;
- api_session_unregister('_courseUser');
- }
-
-
- $is_allowed_in_course = false;
-
- if (isset($_course)) {
- switch ($_course['visibility']) {
- case COURSE_VISIBILITY_OPEN_WORLD:
- $is_allowed_in_course = true;
- break;
- case COURSE_VISIBILITY_OPEN_PLATFORM :
- if (isset($user_id) && !api_is_anonymous($user_id)) {
- $is_allowed_in_course = true;
- }
- break;
- case COURSE_VISIBILITY_REGISTERED:
- if ($is_platformAdmin || $is_courseMember) {
- $is_allowed_in_course = true;
- }
- break;
- case COURSE_VISIBILITY_CLOSED:
- if ($is_platformAdmin || $is_courseAdmin) {
- $is_allowed_in_course = true;
- }
- break;
- }
- }
-
-
- if ($is_allowed_in_course == true) {
-
-
- if ($session_id != 0) {
- if (!$is_platformAdmin) {
-
-
- $session_visibility = api_get_session_visibility($session_id);
-
- switch ($session_visibility) {
- case SESSION_INVISIBLE:
- $is_allowed_in_course = false;
- break;
- }
-
- }
- }
- }
-
- api_session_register('is_courseAdmin');
- api_session_register('is_courseMember');
- api_session_register('is_courseTutor');
- api_session_register('is_courseCoach');
- api_session_register('is_allowed_in_course');
-
- api_session_register('is_sessionAdmin');
- } else {
- if (isset($_SESSION ['_courseUser'])) {
- $_courseUser = $_SESSION ['_courseUser'];
- }
- $is_courseAdmin = $_SESSION ['is_courseAdmin'];
- $is_courseTutor = $_SESSION ['is_courseTutor'];
- $is_courseCoach = $_SESSION ['is_courseCoach'];
- $is_courseMember = $_SESSION ['is_courseMember'];
- $is_allowed_in_course = $_SESSION ['is_allowed_in_course'];
- }
- if ((isset($gidReset) && $gidReset) || (isset($cidReset) && $cidReset)) {
- if ($gidReq && $_cid && !empty($_course['real_id'])) {
- $group_table = Database::get_course_table(TABLE_GROUP);
- $sql = "SELECT * FROM $group_table WHERE c_id = ".$_course['real_id']." AND id = '$gidReq'";
- $result = Database::query($sql);
- if (Database::num_rows($result) > 0) {
- $gpData = Database::fetch_array($result);
- $_gid = $gpData ['id'];
- api_session_register('_gid');
- } else {
- api_session_unregister('_gid');
- }
- } elseif (isset($_SESSION['_gid']) or isset($_gid)) {
- api_session_unregister('_gid');
- }
- } elseif (isset($_SESSION['_gid'])) {
- $_gid = $_SESSION ['_gid'];
- } else {
- $_gid = -1;
- }
- if (api_get_setting('student_view_enabled') == "true") {
- if (isset($_GET['isStudentView'])) {
- if ($_GET['isStudentView'] == 'true') {
- if (isset($_SESSION['studentview'])) {
- if (!empty($_SESSION['studentview'])) {
-
- $_SESSION['studentview'] = 'studentview';
- }
- }
- } elseif ($_GET['isStudentView'] == 'false') {
- if (isset($_SESSION['studentview'])) {
- if (!empty($_SESSION['studentview'])) {
-
- $_SESSION['studentview'] = 'teacherview';
- }
- }
- }
- } elseif (!empty($_SESSION['studentview'])) {
-
- } elseif (empty($_SESSION['studentview'])) {
-
- $_SESSION['studentview'] = 'teacherview';
- }
- }
- if (isset($_cid)) {
- $tbl_course = Database::get_main_table(TABLE_MAIN_COURSE);
- $time = api_get_datetime();
- $sql="UPDATE $tbl_course SET last_visit= '$time' WHERE code='$_cid'";
- Database::query($sql);
- }
- if (isset($_SESSION['request_uri']) && !empty($_SESSION['request_uri'])){
- $req= $_SESSION['request_uri'];
- unset($_SESSION['request_uri']);
- header('Location: '.$req);
- exit;
- }
|