12require_once(
"libs/composer/vendor/autoload.php");
 
   16    $GLOBALS[
'ilGlobalStartTime'] = microtime();
 
   19include_once 
"Services/Context/classes/class.ilContext.php";
 
   54            foreach ($var as $k => $v) {
 
   62                array(
"\x00", 
"\n", 
"\r", 
"\\", 
"'", 
'"', 
"\x1a"),
 
   76            require_once 
"./Services/UICore/classes/class.ilTemplate.php";
 
   80        require_once 
"./Services/Utilities/classes/class.ilUtil.php";
 
   81        require_once 
"./Services/Calendar/classes/class.ilDatePresentation.php";
 
   82        require_once 
"include/inc.ilias_version.php";
 
   84        include_once 
'./Services/Authentication/classes/class.ilAuthUtils.php';
 
   86        self::initGlobal(
"ilBench", 
"ilBenchmark", 
"./Services/Utilities/classes/class.ilBenchmark.php");
 
   96        include_once 
'Services/Authentication/classes/class.ilAuthFactory.php';
 
   98            require_once(
"include/inc.xml5compliance.php");
 
  100        require_once(
"include/inc.xsl5compliance.php");
 
  112        require_once(
"./Services/Init/classes/class.ilIniFile.php");
 
  118        define(
"ILIAS_DATA_DIR", 
$ilIliasIniFile->readVariable(
"clients", 
"datadir"));
 
  119        define(
"ILIAS_WEB_DIR", 
$ilIliasIniFile->readVariable(
"clients", 
"path"));
 
  120        define(
"ILIAS_ABSOLUTE_PATH", 
$ilIliasIniFile->readVariable(
'server', 
'absolute_path'));
 
  124        define(
"ILIAS_LOG_FILE", 
$ilIliasIniFile->readVariable(
"log", 
"file"));
 
  125        define(
"ILIAS_LOG_ENABLED", 
$ilIliasIniFile->readVariable(
"log", 
"enabled"));
 
  126        define(
"ILIAS_LOG_LEVEL", 
$ilIliasIniFile->readVariable(
"log", 
"level"));
 
  127        define(
"SLOW_REQUEST_TIME", 
$ilIliasIniFile->readVariable(
"log", 
"slow_request_time"));
 
  130        define(
"PATH_TO_CONVERT", 
$ilIliasIniFile->readVariable(
"tools", 
"convert"));
 
  131        define(
"PATH_TO_FFMPEG", 
$ilIliasIniFile->readVariable(
"tools", 
"ffmpeg"));
 
  133        define(
"PATH_TO_MKISOFS", 
$ilIliasIniFile->readVariable(
"tools", 
"mkisofs"));
 
  134        define(
"PATH_TO_UNZIP", 
$ilIliasIniFile->readVariable(
"tools", 
"unzip"));
 
  135        define(
"PATH_TO_GHOSTSCRIPT", 
$ilIliasIniFile->readVariable(
"tools", 
"ghostscript"));
 
  136        define(
"PATH_TO_JAVA", 
$ilIliasIniFile->readVariable(
"tools", 
"java"));
 
  137        define(
"URL_TO_LATEX", 
$ilIliasIniFile->readVariable(
"tools", 
"latex"));
 
  139        define(
"PATH_TO_LESSC", 
$ilIliasIniFile->readVariable(
"tools", 
"lessc"));
 
  140        define(
"PATH_TO_PHANTOMJS", 
$ilIliasIniFile->readVariable(
"tools", 
"phantomjs"));
 
  145                define(
"IL_VIRUS_SCANNER", 
"Sophos");
 
  146                define(
"IL_VIRUS_SCAN_COMMAND", 
$ilIliasIniFile->readVariable(
"tools", 
"scancommand"));
 
  147                define(
"IL_VIRUS_CLEAN_COMMAND", 
$ilIliasIniFile->readVariable(
"tools", 
"cleancommand"));
 
  151                define(
"IL_VIRUS_SCANNER", 
"AntiVir");
 
  152                define(
"IL_VIRUS_SCAN_COMMAND", 
$ilIliasIniFile->readVariable(
"tools", 
"scancommand"));
 
  153                define(
"IL_VIRUS_CLEAN_COMMAND", 
$ilIliasIniFile->readVariable(
"tools", 
"cleancommand"));
 
  157                define(
"IL_VIRUS_SCANNER", 
"ClamAV");
 
  158                define(
"IL_VIRUS_SCAN_COMMAND", 
$ilIliasIniFile->readVariable(
"tools", 
"scancommand"));
 
  159                define(
"IL_VIRUS_CLEAN_COMMAND", 
$ilIliasIniFile->readVariable(
"tools", 
"cleancommand"));
 
  163                define(
"IL_VIRUS_SCANNER", 
"None");
 
  167        include_once 
'./Services/Calendar/classes/class.ilTimeZone.php';
 
  169        define(
"IL_TIMEZONE", 
$tz);
 
  183    public static function bootstrapFilesystems()
 
  187        $DIC[
'filesystem.security.sanitizing.filename'] = 
function ($c) {
 
  191        $DIC[
'filesystem.factory'] = 
function ($c) {
 
  192            return new \ILIAS\Filesystem\Provider\DelegatingFilesystemFactory($c[
'filesystem.security.sanitizing.filename']);
 
  195        $DIC[
'filesystem.web'] = 
function ($c) {
 
  201            $delegatingFactory = $c[
'filesystem.factory'];
 
  202            $webConfiguration = new \ILIAS\Filesystem\Provider\Configuration\LocalConfig(ILIAS_ABSOLUTE_PATH . 
'/' . ILIAS_WEB_DIR . 
'/' . CLIENT_ID);
 
  203            return $delegatingFactory->getLocal($webConfiguration);
 
  206        $DIC[
'filesystem.storage'] = 
function ($c) {
 
  212            $delegatingFactory = $c[
'filesystem.factory'];
 
  213            $storageConfiguration = new \ILIAS\Filesystem\Provider\Configuration\LocalConfig(ILIAS_DATA_DIR . 
'/' . CLIENT_ID);
 
  214            return $delegatingFactory->getLocal($storageConfiguration);
 
  217        $DIC[
'filesystem.temp'] = 
function ($c) {
 
  223            $delegatingFactory = $c[
'filesystem.factory'];
 
  224            $tempConfiguration = new \ILIAS\Filesystem\Provider\Configuration\LocalConfig(ILIAS_DATA_DIR . 
'/' . CLIENT_ID . 
'/temp');
 
  225            return $delegatingFactory->getLocal($tempConfiguration);
 
  228        $DIC[
'filesystem.customizing'] = 
function ($c) {
 
  234            $delegatingFactory = $c[
'filesystem.factory'];
 
  235            $customizingConfiguration = new \ILIAS\Filesystem\Provider\Configuration\LocalConfig(ILIAS_ABSOLUTE_PATH . 
'/' . 
'Customizing');
 
  236            return $delegatingFactory->getLocal($customizingConfiguration);
 
  239        $DIC[
'filesystem.libs'] = 
function ($c) {
 
  245            $delegatingFactory = $c[
'filesystem.factory'];
 
  246            $customizingConfiguration = new \ILIAS\Filesystem\Provider\Configuration\LocalConfig(ILIAS_ABSOLUTE_PATH . 
'/' . 
'libs');
 
  247            return $delegatingFactory->getLocal($customizingConfiguration, 
true);
 
  250        $DIC[
'filesystem'] = 
function ($c) {
 
  251            return new \ILIAS\Filesystem\FilesystemsImpl(
 
  252                $c[
'filesystem.storage'],
 
  253                $c[
'filesystem.web'],
 
  254                $c[
'filesystem.temp'],
 
  255                $c[
'filesystem.customizing'],
 
  256                $c[
'filesystem.libs']
 
  272        $dic[
'upload.processor-manager'] = 
function ($c) {
 
  273            return new \ILIAS\FileUpload\Processor\PreProcessorManagerImpl();
 
  276        $dic[
'upload'] = 
function ($c) {
 
  277            $fileUploadImpl = new \ILIAS\FileUpload\FileUploadImpl($c[
'upload.processor-manager'], $c[
'filesystem'], $c[
'http']);
 
  278            if (IL_VIRUS_SCANNER != 
"None") {
 
  282            return $fileUploadImpl;
 
  291        include_once 
'./Services/Http/classes/class.ilHTTPS.php';
 
  294        if (
$https->isDetected()) {
 
  301        $rq_uri = strip_tags(
$_SERVER[
'REQUEST_URI']);
 
  305        if (is_int($pos = strpos($rq_uri, 
"?"))) {
 
  306            $rq_uri = substr($rq_uri, 0, $pos);
 
  309        if (!
defined(
'ILIAS_MODULE')) {
 
  310            $path = pathinfo($rq_uri);
 
  311            if (!
$path[
'extension']) {
 
  314                $uri = dirname($rq_uri);
 
  318            $path = dirname($rq_uri);
 
  326            foreach ($dirs as $dir) {
 
  327                $uri = dirname($uri);
 
  346            self::abortAndDie(
'Fatal Error: ilInitialisation::determineClient called without initialisation of ILIAS ini file object.');
 
  349        if (isset(
$_GET[
'client_id']) && strlen(
$_GET[
'client_id']) > 0) {
 
  351            if (!
defined(
'IL_PHPUNIT_TEST')) {
 
  356        } elseif (!isset(
$_COOKIE[
'ilClientId'])) {
 
  386        if (ILIAS_WEB_DIR == 
"") {
 
  387            self::abortAndDie(
"Fatal Error: ilInitialisation::initClientIniFile called without ILIAS_WEB_DIR.");
 
  391        if (CLIENT_ID == 
"") {
 
  392            self::abortAndDie(
"Fatal Error: ilInitialisation::initClientIniFile called without CLIENT_ID.");
 
  395        $ini_file = 
"./" . ILIAS_WEB_DIR . 
"/" . CLIENT_ID . 
"/client.ini.php";
 
  398        $ilClientIniFile = 
new ilIniFile($ini_file);
 
  399        $ilClientIniFile->read();
 
  402        if ($ilClientIniFile->ERROR != 
"") {
 
  406            if (CLIENT_ID != 
"" && CLIENT_ID != $default_client) {
 
  407                $mess = array(
"en" => 
"Client does not exist.",
 
  408                        "de" => 
"Mandant ist ungültig.");
 
  409                self::redirect(
"index.php?client_id=" . $default_client, 
null, $mess);
 
  411                self::abortAndDie(
"Fatal Error: ilInitialisation::initClientIniFile initializing client ini file abborted with: " . $ilClientIniFile->ERROR);
 
  418        define(
"SESSION_REMINDER_LEADTIME", 30);
 
  419        define(
"DEBUG", $ilClientIniFile->readVariable(
"system", 
"DEBUG"));
 
  420        define(
"DEVMODE", $ilClientIniFile->readVariable(
"system", 
"DEVMODE"));
 
  421        define(
"SHOWNOTICES", $ilClientIniFile->readVariable(
"system", 
"SHOWNOTICES"));
 
  422        define(
"DEBUGTOOLS", $ilClientIniFile->readVariable(
"system", 
"DEBUGTOOLS"));
 
  423        define(
"ROOT_FOLDER_ID", $ilClientIniFile->readVariable(
'system', 
'ROOT_FOLDER_ID'));
 
  424        define(
"SYSTEM_FOLDER_ID", $ilClientIniFile->readVariable(
'system', 
'SYSTEM_FOLDER_ID'));
 
  425        define(
"ROLE_FOLDER_ID", $ilClientIniFile->readVariable(
'system', 
'ROLE_FOLDER_ID'));
 
  426        define(
"MAIL_SETTINGS_ID", $ilClientIniFile->readVariable(
'system', 
'MAIL_SETTINGS_ID'));
 
  427        $error_handler = $ilClientIniFile->readVariable(
'system', 
'ERROR_HANDLER');
 
  428        define(
"ERROR_HANDLER", $error_handler ? $error_handler : 
"PRETTY_PAGE");
 
  432        define(
"OH_REF_ID", $ilClientIniFile->readVariable(
"system", 
"OH_REF_ID"));
 
  434        define(
"SYSTEM_MAIL_ADDRESS", $ilClientIniFile->readVariable(
'system', 
'MAIL_SENT_ADDRESS')); 
 
  435        define(
"MAIL_REPLY_WARNING", $ilClientIniFile->readVariable(
'system', 
'MAIL_REPLY_WARNING')); 
 
  441        define(
"CLIENT_DATA_DIR", ILIAS_DATA_DIR . 
"/" . CLIENT_ID);
 
  442        define(
"CLIENT_WEB_DIR", ILIAS_ABSOLUTE_PATH . 
"/" . ILIAS_WEB_DIR . 
"/" . CLIENT_ID);
 
  443        define(
"CLIENT_NAME", $ilClientIniFile->readVariable(
'client', 
'name')); 
 
  445        $val = $ilClientIniFile->readVariable(
"db", 
"type");
 
  447            define(
"IL_DB_TYPE", 
"mysql");
 
  449            define(
"IL_DB_TYPE", $val);
 
  453        $ilGlobalCacheSettings->readFromIniFile($ilClientIniFile);
 
  464        global $ilClientIniFile;
 
  466        if (!$ilClientIniFile->readVariable(
"client", 
"access")) {
 
  467            $mess = array(
"en" => 
"The server is not available due to maintenance." .
 
  468                    " We apologise for any inconvenience.",
 
  469                "de" => 
"Der Server ist aufgrund von Wartungsarbeiten nicht verfügbar." .
 
  470                    " Wir bitten um Verständnis.");
 
  471            $mess_id = 
"init_error_maintenance";
 
  489        require_once(
"./Services/Database/classes/class.ilDBWrapperFactory.php");
 
  490        $ilDB = ilDBWrapperFactory::getWrapper(IL_DB_TYPE);
 
  491        $ilDB->initFromIniFile();
 
  504        if (ini_get(
'session.save_handler') != 
'user' && version_compare(PHP_VERSION, 
'7.2.0', 
'<')) {
 
  505            ini_set(
"session.save_handler", 
"user");
 
  508        require_once 
"Services/Authentication/classes/class.ilSessionDBHandler.php";
 
  510        if (!$db_session_handler->setSaveHandler()) {
 
  511            self::abortAndDie(
"Please turn off Safe mode OR set session.save_handler to \"user\" in your php.ini");
 
  517            if (function_exists(
"session_status") && session_status() == PHP_SESSION_ACTIVE) {
 
  518                session_regenerate_id();
 
  528        include_once 
'Services/Authentication/classes/class.ilAuthFactory.php';
 
  531        } elseif (
$GLOBALS[
'COOKIE_PATH']) {
 
  549        define(
'IL_COOKIE_HTTPONLY', 
true); 
 
  550        define(
'IL_COOKIE_EXPIRE', 0);
 
  552        define(
'IL_COOKIE_DOMAIN', 
'');
 
  562        if (!
defined(
'IL_COOKIE_SECURE')) {
 
  566            include_once 
'./Services/Http/classes/class.ilHTTPS.php';
 
  568            define(
'IL_COOKIE_SECURE', $cookie_secure); 
 
  570            session_set_cookie_params(
 
  585        $c[
"mail.mime.transport.factory"] = 
function ($c) {
 
  586            require_once 
'Services/Mail/classes/Mime/Transport/class.ilMailMimeTransportFactory.php';
 
  589        $c[
"mail.mime.sender.factory"] = 
function ($c) {
 
  590            require_once 
'Services/Mail/classes/Mime/Sender/class.ilMailMimeSenderFactory.php';
 
  600        $c[
"user.avatar.factory"] = 
function ($c) {
 
  601            require_once 
'Services/User/Avatar/classes/class.ilUserAvatarFactory.php';
 
  618            "Services/Administration/classes/class.ilSetting.php" 
  627        define(
"ANONYMOUS_USER_ID", 
$ilSetting->get(
"anonymous_user_id"));
 
  628        define(
"ANONYMOUS_ROLE_ID", 
$ilSetting->get(
"anonymous_role_id"));
 
  629        define(
"SYSTEM_USER_ID", 
$ilSetting->get(
"system_user_id"));
 
  630        define(
"SYSTEM_ROLE_ID", 
$ilSetting->get(
"system_role_id"));
 
  631        define(
"USER_FOLDER_ID", 7);
 
  634        define(
"RECOVERY_FOLDER_ID", 
$ilSetting->get(
"recovery_folder_id"));
 
  637        define(
"IL_INST_ID", 
$ilSetting->get(
"inst_id", 0));
 
  640        define(
"SUFFIX_REPL_DEFAULT", 
"php,php3,php4,inc,lang,phtml,htaccess");
 
  641        define(
"SUFFIX_REPL_ADDITIONAL", 
$ilSetting->get(
"suffix_repl_additional"));
 
  653        global $styleDefinition, $ilPluginAdmin;
 
  659            "./Services/Style/System/classes/class.ilStyleDefinition.php" 
  663        $pl_names = $ilPluginAdmin->getActivePluginsForSlot(
IL_COMP_SERVICE, 
"UIComponent", 
"uihk");
 
  664        foreach ($pl_names as $pl) {
 
  666            $gui_class = $ui_plugin->getUIClassInstance();
 
  667            $gui_class->modifyGUI(
"Services/Init", 
"init_style", array(
"styleDefinition" => $styleDefinition));
 
  674    public static function initUserAccount()
 
  681        $uid = 
$GLOBALS[
'DIC'][
'ilAuthSession']->getUserId();
 
  687            include_once 
'./Services/Logging/classes/public/class.ilLoggerFactory.php';
 
  689            \ilOnlineTracking::updateAccess(
$ilUser);
 
  706            $larr = explode(
",", trim(
$ilSetting->get(
"locale")));
 
  709            foreach ($larr as 
$l) {
 
  710                if (trim(
$l) != 
"") {
 
  714            if (count($ls) > 0) {
 
  715                setlocale(LC_ALL, $ls);
 
  718                setlocale(LC_NUMERIC, 
"C");
 
  720                if (class_exists(
"Collator")) {
 
  721                    $GLOBALS[
"ilCollator"] = 
new Collator($first);
 
  722                    $GLOBALS[
"DIC"][
"ilCollator"] = 
function ($c) {
 
  739        if (ANONYMOUS_USER_ID == 
"") {
 
  743        $session_destroyed = 
false;
 
  744        if (
$GLOBALS[
'DIC'][
'ilAuthSession']->isExpired()) {
 
  745            $session_destroyed = 
true;
 
  748        if (!
$GLOBALS[
'DIC'][
'ilAuthSession']->isAuthenticated()) {
 
  749            $session_destroyed = 
true;
 
  753        if ($session_destroyed) {
 
  754            $GLOBALS[
'DIC'][
'ilAuthSession']->setAuthenticated(
true, ANONYMOUS_USER_ID);
 
  757        self::initUserAccount();
 
  760        if (strlen(
$_GET[
"target"])) {
 
  762            $current_script = substr(strrchr(
$_SERVER[
"PHP_SELF"], 
"/"), 1);
 
  763            if ($current_script == 
"goto.php") {
 
  771        #if(!$GLOBALS['DIC']->rbac()->system()->checkAccess('read', ROOT_FOLDER_ID)) 
  773        #       return self::goToLogin(); 
  777        $_GET[
"ref_id"] = ROOT_FOLDER_ID;
 
  778        $_GET[
"cmd"] = 
"frameset";
 
  780            "ilias.php?baseClass=ilrepositorygui&reloadpublic=1&cmd=" .
 
  794        if (
$GLOBALS[
'DIC'][
'ilAuthSession']->isExpired()) {
 
  797        if (!
$GLOBALS[
'DIC'][
'ilAuthSession']->isAuthenticated()) {
 
  801        $script = 
"login.php?target=" . 
$_GET[
"target"] . 
"&client_id=" . 
$_COOKIE[
"ilClientId"] .
 
  802            "&auth_stat=" . $a_auth_stat;
 
  806            "init_error_authentication_fail",
 
  808                "en" => 
"Authentication failed.",
 
  809                "de" => 
"Authentifizierung fehlgeschlagen.")
 
  816    protected static function initLanguage($a_use_user_language = 
true)
 
  825        require_once 
'Services/Language/classes/class.ilLanguage.php';
 
  827        if ($a_use_user_language) {
 
  828            if (
$DIC->offsetExists(
'lng')) {
 
  829                $DIC->offsetUnset(
'lng');
 
  835        if (is_object($rbacsystem)) {
 
  836            $rbacsystem->initMemberView();
 
  848            "./Services/AccessControl/classes/class.ilRbacReview.php" 
  851        require_once 
"./Services/AccessControl/classes/class.ilRbacSystem.php";
 
  858            "./Services/AccessControl/classes/class.ilRbacAdmin.php" 
  864            "./Services/AccessControl/classes/class.ilAccess.php" 
  867        require_once 
"./Services/AccessControl/classes/class.ilConditionHandler.php";
 
  875        include_once 
'./Services/Logging/classes/public/class.ilLoggerFactory.php';
 
  890    protected static function initGlobal($a_name, $a_class, $a_source_file = 
null)
 
  894        if ($a_source_file) {
 
  895            include_once $a_source_file;
 
  901        $DIC[$a_name] = 
function ($c) use ($a_name) {
 
  914            $GLOBALS[
'ilLog']->write(
"Fatal Error: ilInitialisation - " . $a_message);
 
  924        if (
defined(SHOWNOTICES) && SHOWNOTICES) {
 
  929            error_reporting(E_ALL);
 
  932        if (
defined(
'DEBUGTOOLS') && DEBUGTOOLS) {
 
  933            include_once 
"include/inc.debug.php";
 
  942        self::$already_initialized = 
false;
 
  951        if (self::$already_initialized) {
 
  961                if (is_object(
$tpl)) {
 
  964                    $tpl->setVariable(
"LOCATION_STYLESHEET", $location_stylesheet);
 
  971        $GLOBALS[
"DIC"] = new \ILIAS\DI\Container();
 
  972        $GLOBALS[
"DIC"][
"ilLoggerFactory"] = 
function ($c) {
 
  976        self::$already_initialized = 
true;
 
  997            self::initLanguage(
true);
 
  998            $GLOBALS[
'DIC'][
'tree']->initLangCode();
 
 1004                include_once(
'./Services/WebServices/ECS/classes/class.ilECSTaskScheduler.php');
 
 1017        $GLOBALS[
"DIC"][
"ilAuthSession"] = 
function ($c) {
 
 1019                $c[
'ilLoggerFactory']->getLogger(
'auth')
 
 1021            $auth_session->init();
 
 1022            return $auth_session;
 
 1033        error_reporting(E_ALL & ~E_NOTICE);
 
 1058            "./Services/Init/classes/class.ilErrorHandling.php" 
 1066        include_once 
"Services/Authentication/classes/class.ilSession.php";
 
 1075        define(
'IL_INITIAL_WD', getcwd());
 
 1078        self::initGlobal(
"ilias", 
"ILIAS", 
"./Services/Init/classes/class.ilias.php");
 
 1092        self::bootstrapFilesystems();
 
 1099        $ilias->client_id = CLIENT_ID;
 
 1111        self::initLanguage(
false);
 
 1117            "ilAppEventHandler",
 
 1118            "ilAppEventHandler",
 
 1119            "./Services/EventHandling/classes/class.ilAppEventHandler.php" 
 1131                "./Services/Component/classes/class.ilPluginAdmin.php" 
 1147            self::initGlobal(
"https", 
"ilHTTPS", 
"./Services/Http/classes/class.ilHTTPS.php");
 
 1148            $https->enableSecureCookies();
 
 1157            "ilObjectDataCache",
 
 1158            "./Services/Object/classes/class.ilObjectDataCache.php" 
 1162        require_once 
"./Services/Xml/classes/class.ilSaxParser.php";
 
 1166            "ilObjectDefinition",
 
 1167            "./Services/Object/classes/class.ilObjectDefinition.php" 
 1171        require_once 
"./Services/Tree/classes/class.ilTree.php";
 
 1172        $tree = 
new ilTree(ROOT_FOLDER_ID);
 
 1179            "./Services/UICore/classes/class.ilCtrl.php" 
 1196            "./Services/User/classes/class.ilObjUser.php" 
 1208        include_once 
'./Services/Authentication/classes/class.ilAuthUtils.php';
 
 1214            !
$GLOBALS[
'DIC'][
'ilAuthSession']->isAuthenticated() or
 
 1215            $GLOBALS[
'DIC'][
'ilAuthSession']->isExpired()
 
 1218            $current_script = substr(strrchr(
$_SERVER[
"PHP_SELF"], 
"/"), 1);
 
 1219            if (self::blockedAuthentication($current_script)) {
 
 1224            return self::handleAuthenticationFail();
 
 1227        return self::initUserAccount();
 
 1237        global $ilAuth, $ilias, 
$ilErr;
 
 1239        $current_script = substr(strrchr(
$_SERVER[
"PHP_SELF"], 
"/"), 1);
 
 1241        if (self::blockedAuthentication($current_script)) {
 
 1245        $oldSid = session_id();
 
 1248        $ilias->setAuthError(
$ilErr->getLastError());
 
 1250        if ($ilAuth->getAuth() && $ilAuth->getStatus() == 
'') {
 
 1251            self::initUserAccount();
 
 1253            self::handleAuthenticationSuccess();
 
 1255            if (!self::showingLoginForm($current_script)) {
 
 1257                $mandatory_auth = ($current_script != 
"shib_login.php" 
 1258                        && $current_script != 
"shib_logout.php" 
 1259                        && $current_script != 
"saml.php" 
 1260                        && $current_script != 
"error.php" 
 1261                        && $current_script != 
"chat.php" 
 1262                        && $current_script != 
"wac.php" 
 1263                        && $current_script != 
"index.php"); 
 
 1265                if ($mandatory_auth) {
 
 1266                    self::handleAuthenticationFail();
 
 1275    protected static function handleAuthenticationSuccess()
 
 1282        require_once 
'Services/Tracking/classes/class.ilOnlineTracking.php';
 
 1283        ilOnlineTracking::updateAccess(
$ilUser);
 
 1289    protected static function handleAuthenticationFail()
 
 1303            throw new Exception(
"Authentication failed.");
 
 1305        if (
$GLOBALS[
'DIC'][
'ilAuthSession']->isExpired()) {
 
 1322        $container[
'http.request_factory'] = 
function ($c) {
 
 1323            return new \ILIAS\HTTP\Request\RequestFactoryImpl();
 
 1326        $container[
'http.response_factory'] = 
function ($c) {
 
 1327            return new \ILIAS\HTTP\Response\ResponseFactoryImpl();
 
 1330        $container[
'http.cookie_jar_factory'] = 
function ($c) {
 
 1331            return new \ILIAS\HTTP\Cookies\CookieJarFactoryImpl();
 
 1334        $container[
'http.response_sender_strategy'] = 
function ($c) {
 
 1335            return new \ILIAS\HTTP\Response\Sender\DefaultResponseSenderStrategy();
 
 1339            return new \ILIAS\DI\HTTPServices(
 
 1340                $c[
'http.response_sender_strategy'],
 
 1341                $c[
'http.cookie_jar_factory'],
 
 1342                $c[
'http.request_factory'],
 
 1343                $c[
'http.response_factory']
 
 1353        $c[
"ui.factory"] = 
function ($c) {
 
 1356        $c[
"ui.renderer"] = 
function ($c) {
 
 1358                $c[
"ui.component_renderer_loader"]
 
 1361        $c[
"ui.component_renderer_loader"] = 
function ($c) {
 
 1363                new ILIAS\
UI\Implementation\Render\LoaderResourceRegistryWrapper(
 
 1364                $c[
"ui.resource_registry"],
 
 1365                new ILIAS\
UI\Implementation\Render\FSLoader(
 
 1366                        new ILIAS\
UI\Implementation\Render\DefaultRendererFactory(
 
 1368                        $c[
"ui.template_factory"],
 
 1370                        $c[
"ui.javascript_binding"]
 
 1376        $c[
"ui.template_factory"] = 
function ($c) {
 
 1381        $c[
"ui.resource_registry"] = 
function ($c) {
 
 1384        $c[
"ui.javascript_binding"] = 
function ($c) {
 
 1395        require_once 
"./Services/LTI/classes/class.ilLTIViewGUI.php";
 
 1408        if ($lti->isActive()) {
 
 1409            include_once 
"./Services/LTI/classes/class.ilTemplate.php";
 
 1418            require_once 
'Services/User/classes/class.ilUserRequestTargetAdjustment.php';
 
 1420            $request_adjuster->adjust();
 
 1426        $tpl->setVariable(
"LOCATION_STYLESHEET", $location_stylesheet);
 
 1428        require_once 
"./Services/UICore/classes/class.ilFrameTargetInfo.php";
 
 1431            "ilNavigationHistory",
 
 1432            "ilNavigationHistory",
 
 1433            "Services/Navigation/classes/class.ilNavigationHistory.php" 
 1439            "./Services/Utilities/classes/class.ilBrowser.php" 
 1445            "Services/Help/classes/class.ilHelpGUI.php" 
 1451            "./Services/UIComponent/Toolbar/classes/class.ilToolbarGUI.php" 
 1457            "./Services/Locator/classes/class.ilLocatorGUI.php" 
 1463            "./Services/UIComponent/Tabs/classes/class.ilTabsGUI.php" 
 1468            if ($lti->isActive()) {
 
 1469                include_once 
'./Services/LTI/classes/class.ilMainMenuGUI.php';
 
 1472                include_once 
'./Services/MainMenu/classes/class.ilMainMenuGUI.php';
 
 1482            $_GET[
'limit'] = (int) 
$ilUser->getPref(
'hits_per_page');
 
 1491            if (isset(
$_GET[
'offset']) && 
$_GET[
'offset'] != 
"") {                                                      
 
 1496            include_once 
"Services/User/classes/class.ilObjUser.php";
 
 1507        $cmd = $_REQUEST[
"cmd"];
 
 1508        if (is_array($cmd)) {
 
 1509            return array_shift(array_keys($cmd));
 
 1547            $a_current_script == 
"register.php" ||
 
 1548            $a_current_script == 
"pwassist.php" ||
 
 1549            $a_current_script == 
"confirmReg.php" ||
 
 1550            $a_current_script == 
"il_securimage_play.php" ||
 
 1551            $a_current_script == 
"il_securimage_show.php" ||
 
 1552            $a_current_script == 
'login.php' 
 1558        if ($_REQUEST[
"baseClass"] == 
"ilStartUpGUI") {
 
 1559            $cmd_class = $_REQUEST[
"cmdClass"];
 
 1561            if ($cmd_class == 
"ilaccountregistrationgui" ||
 
 1562                $cmd_class == 
"ilpasswordassistancegui") {
 
 1569                $cmd == 
"showTermsOfService" || $cmd == 
"showClientList" ||
 
 1570                $cmd == 
'showAccountMigration' || $cmd == 
'migrateAccount' ||
 
 1571                $cmd == 
'processCode' || $cmd == 
'showLoginPage' || $cmd == 
'doStandardAuthentication' || $cmd == 
'doCasAuthentication' 
 1579        if (($a_current_script == 
"goto.php" && 
$_GET[
"target"] == 
"impr_0") ||
 
 1580            $_GET[
"baseClass"] == 
"ilImprintGUI") {
 
 1585        if ($a_current_script == 
'goto.php' && in_array(
$_GET[
'target'], array(
 
 1586            'usr_registration', 
'usr_nameassist', 
'usr_pwassist', 
'usr_agreement' 
 1603        if ($a_current_script == 
"login.php") {
 
 1607        if ($_REQUEST[
"baseClass"] == 
"ilStartUpGUI" &&
 
 1608            self::getCurrentCmd() == 
"showLoginPage") {
 
 1631            } elseif ($_REQUEST[
"lang"]) {
 
 1632                $lang = (string) $_REQUEST[
"lang"];
 
 1635            } elseif ($ilClientIniFile) {
 
 1636                $lang = $ilClientIniFile->readVariable(
"language", 
"default");
 
 1643        if (
$ilDB && $a_message_id) {
 
 1645                require_once 
"./Services/Language/classes/class.ilLanguage.php";
 
 1649            $lng->loadLanguageModule(
"init");
 
 1651        } elseif (is_array($a_message_static)) {
 
 1652            if (!isset($a_message_static[
$lang])) {
 
 1668    protected static function redirect($a_target, $a_message_id = 
'', array $a_message_static = 
null)
 
 1671        if (
defined(
"ILIAS_HTTP_PATH") &&
 
 1672            !stristr($a_target, ILIAS_HTTP_PATH)) {
 
 1673            $a_target = ILIAS_HTTP_PATH . 
"/" . $a_target;
 
 1684                    "init_error_redirect_click",
 
 1685                    array(
"en" => 
'Please click to continue.',
 
 1686                        "de" => 
'Bitte klicken um fortzufahren.')
 
 1689                    '<br /><a href="' . $a_target . 
'">' . $link . 
'</a>';
 
 1698                        "init_error_redirect_info",
 
 1699                        array(
"en" => 
'Redirect not supported by context.',
 
 1700                            "de" => 
'Weiterleitungen werden durch Kontext nicht unterstützt.')
 
 1702                    ' (' . $a_target . 
')';
 
 1713    public static function redirectToStartingPage()
 
 1721        if (
$ilUser->getId() == ANONYMOUS_USER_ID) {
 
 1728        if (!
$_GET[
"target"]) {
 
 1731            include_once 
'./Services/User/classes/class.ilUserUtil.php';
 
 1744        $n_of_tasks = 
$ilIliasIniFile->readVariable(
"background_tasks", 
"number_of_concurrent_tasks");
 
 1747        $n_of_tasks = $n_of_tasks ? $n_of_tasks : 5;
 
 1750        $c[
"bt.task_factory"] = 
function ($c) {
 
 1751            return new \ILIAS\BackgroundTasks\Implementation\Tasks\BasicTaskFactory($c[
"di.injector"]);
 
 1754        $c[
"bt.persistence"] = 
function ($c) {
 
 1755            return new \ILIAS\BackgroundTasks\Implementation\Persistence\BasicPersistence();
 
 1758        $c[
"bt.injector"] = 
function ($c) {
 
 1759            return new \ILIAS\BackgroundTasks\Dependencies\Injector($c, 
new BaseDependencyMap());
 
 1762        $c[
"bt.task_manager"] = 
function ($c) use (
$sync) {
 
 1763            if (
$sync == 
'sync') {
 
 1764                return new \ILIAS\BackgroundTasks\Implementation\TaskManager\BasicTaskManager($c[
"bt.persistence"]);
 
 1765            } elseif (
$sync == 
'async') {
 
 1766                return new \ILIAS\BackgroundTasks\Implementation\TaskManager\AsyncTaskManager($c[
"bt.persistence"]);
 
 1768                throw new ilException(
"The supported Background Task Managers are sync and async. $sync given.");
 
 1776        $c[
"di.dependency_map"] = 
function ($c) {
 
 1777            return new \ILIAS\BackgroundTasks\Dependencies\DependencyMap\BaseDependencyMap();
 
 1780        $c[
"di.injector"] = 
function ($c) {
 
 1781            return new \ILIAS\BackgroundTasks\Dependencies\Injector($c, $c[
"di.dependency_map"]);
 
const PEAR_ERROR_CALLBACK
An exception for terminatinating execution or to throw for unit testing.
Renderer that dispatches rendering of UI components to a Renderer found in the same namespace as the ...
Caches renderers loaded by another loader.
Wraps global ilTemplate to provide JavaScriptBinding.
Plumbing for ILIAS, tries to guess.
Factory for wrapped ilTemplates.
Handles display of the main menu for LTI.
special template class to simplify handling of ITX/PEAR
static getInstance(\ilLogger $logger)
Get instance.
static isAuthenticationForced()
Check if authentication is should be forced.
static handleForcedAuthentication()
static usesTemplate()
Uses template engine.
static supportsRedirects()
Are redirects supported?
static hasUser()
Based on user authentication?
static supportsPersistentSessions()
Check if context supports persistent session handling.
static getType()
Get context type.
static hasHTML()
Has HTML output.
static usesHTTP()
Uses HTTP aka browser.
const CONTEXT_LTI_PROVIDER
static initClient()
Init client.
static start()
Start task scheduler for each server instance.
Base class for ILIAS Exception handling.
Class ilGlobalCacheSettings.
static setup(ilGlobalCacheSettings $ilGlobalCacheSettings)
static getInstance()
Get https instance.
ILIAS Initialisation Utility Class perform basic setup: init database handler, load configuration fil...
static blockedAuthentication($a_current_script)
Block authentication based on current request.
static initDatabase()
initialise database object $ilDB
static initHTTPServices(\ILIAS\DI\Container $container)
static goToLogin()
go to login
static initILIAS()
ilias initialisation
static initLocale()
Init Locale.
static removeUnsafeCharacters()
Remove unsafe characters from GET.
static buildHTTPPath()
builds http path
static requireCommonIncludes()
get common include code files
static initClientIniFile()
This method provides a global instance of class ilIniFile for the client.ini.php file in variable $il...
static getCurrentCmd()
Extract current cmd from request.
static initSession()
Init auth session.
static initClient()
Init client-based objects (level 1)
static initCore()
Init core objects (level 0)
static recursivelyRemoveUnsafeCharacters($var)
static initUIFramework(\ILIAS\DI\Container $c)
init the ILIAS UI framework.
static includePhp5Compliance()
This is a hack for authentication.
static handleErrorReporting()
Set error reporting level.
static initFileUploadService(\ILIAS\DI\Container $dic)
Initializes the file upload service.
static determineClient()
This method determines the current client and sets the constant CLIENT_ID.
static authenticate()
Try authentication.
static translateMessage($a_message_id, array $a_message_static=null)
Translate message if possible.
static redirect($a_target, $a_message_id='', array $a_message_static=null)
Redirects to target url if context supports it.
static initHTML()
init HTML output (level 3)
static initLog()
Init log instance.
static initAvatar(\ILIAS\DI\Container $c)
static goToPublicSection()
go to public section
static resumeUserSession()
Resume an existing user session.
static setSessionHandler()
set session handler to db
static handleDevMode()
Prepare developer tools.
static setCookieConstants()
static showingLoginForm($a_current_script)
Is current view the login form?
static initUser()
Init user / authentification (level 2)
static initGlobal($a_name, $a_class, $a_source_file=null)
Initialize global instance.
static initBackgroundTasks(\ILIAS\DI\Container $c)
static abortAndDie($a_message)
Exit.
static initInjector(\ILIAS\DI\Container $c)
static setSessionCookieParams()
set session cookie params
static initSettings()
initialise $ilSettings object and define constants
static initMail(\ILIAS\DI\Container $c)
static $already_initialized
static handleMaintenanceMode()
handle maintenance mode
static initAccessHandling()
$ilAccess and $rbac... initialisation
static initIliasIniFile()
This method provides a global instance of class ilIniFile for the ilias.ini.php file in variable $ilI...
static initStyle()
provide $styleDefinition object
@classDescription class for ILIAS ViewLTI
static getFallbackInstance()
Builds a global default language instance.
static getRootLogger()
The unique root logger has a fixed error level.
static getLogger($a_component_id)
Get component logger.
Class ilMailMimeSenderFactory.
Handles display of the main menu.
Administration class for plugins.
static getPluginObject($a_ctype, $a_cname, $a_slot_id, $a_pname)
Get Plugin Object.
static getInstance()
Get instance.
Database Session Handling.
static _exists($a_session_id)
Check whether session exists.
static set($a_var, $a_val)
Set a value.
static setClosingContext($a_context)
set closing context (for statistics)
const SESSION_CLOSE_LOGIN
static get($a_var)
Get a value.
const SESSION_CLOSE_PUBLIC
const SESSION_CLOSE_EXPIRE
special template class to simplify handling of ITX/PEAR
static initDefaultTimeZone(ilIniFile $ini)
Initialize default timezone from system settings.
Tree class data representation in hierachical trees using the Nested Set Model with Gaps by Joe Celco...
Class ilUserAvatarFactory.
Class ilUserAccountMaintenanceEnforcement.
static getStartingPointAsUrl()
Get current starting point setting as URL.
static setCookie($a_cookie_name, $a_cookie_value='', $a_also_set_super_global=true, $a_set_cookie_invalid=false)
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
static redirect($a_script)
static removeTrailingPathSeparators($path)
static getClientIdByString($clientId)
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
Interface FilesystemFactory.
catch(Exception $e) $message
if($modEnd===false) $module
defined( 'APPLICATION_ENV')||define( 'APPLICATION_ENV'
if((!isset($_SERVER['DOCUMENT_ROOT'])) OR(empty($_SERVER['DOCUMENT_ROOT']))) $_SERVER['DOCUMENT_ROOT']