Fixed bug #10796: Click on (WS 48hour-) preview link in versioning module causes...
[Packages/TYPO3.CMS.git] / typo3 / init.php
old mode 100755 (executable)
new mode 100644 (file)
index 092e5f8..b61a982
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2007 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (c) 1999-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
  * @subpackage core
  */
 
+// *******************************
+// Checking PHP version
+// *******************************
+if (version_compare(phpversion(), '5.2', '<')) die ('TYPO3 requires PHP 5.2.0 or higher.');
+
 
 // *******************************
 // Set error reporting
 // *******************************
 error_reporting (E_ALL ^ E_NOTICE);
 
+// *******************************
+// Prevent any unwanted output that may corrupt AJAX/compression. Note: this does
+// not interfeer with "die()" or "echo"+"exit()" messages!
+// *******************************
+ob_start();
 
 // *******************************
 // Define constants
@@ -159,14 +169,45 @@ require(PATH_t3lib.'config_default.php');
 if (!defined ('TYPO3_db'))     die ('The configuration file was not included.');
 
 require_once(PATH_t3lib.'class.t3lib_db.php');         // The database library
+/** @var TYPO3_DB t3lib_db */
 $TYPO3_DB = t3lib_div::makeInstance('t3lib_DB');
 $TYPO3_DB->debugOutput = $TYPO3_CONF_VARS['SYS']['sqlDebug'];
 
 $CLIENT = t3lib_div::clientInfo();                                     // $CLIENT includes information about the browser/user-agent
 $PARSETIME_START = t3lib_div::milliseconds();          // Is set to the system time in milliseconds. This could be used to output script parsetime in the end of the script
 
+// ***********************************
+// Initializing the Caching System
+// ***********************************
+
+       // TODO implement autoloading so that we only require stuff we really need
+require_once(PATH_t3lib . 'class.t3lib_cache.php');
+
+require_once(PATH_t3lib . 'cache/backend/interfaces/interface.t3lib_cache_backend_backend.php');
+require_once(PATH_t3lib . 'cache/frontend/interfaces/interface.t3lib_cache_frontend_frontend.php');
 
+require_once(PATH_t3lib . 'cache/backend/class.t3lib_cache_backend_abstractbackend.php');
+require_once(PATH_t3lib . 'cache/frontend/class.t3lib_cache_frontend_abstractfrontend.php');
+require_once(PATH_t3lib . 'cache/class.t3lib_cache_exception.php');
+require_once(PATH_t3lib . 'cache/class.t3lib_cache_factory.php');
+require_once(PATH_t3lib . 'cache/class.t3lib_cache_manager.php');
+require_once(PATH_t3lib . 'cache/frontend/class.t3lib_cache_frontend_variablefrontend.php');
 
+require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_classalreadyloaded.php');
+require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_duplicateidentifier.php');
+require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_invalidbackend.php');
+require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_invalidcache.php');
+require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_invaliddata.php');
+require_once(PATH_t3lib . 'cache/exception/class.t3lib_cache_exception_nosuchcache.php');
+
+$typo3CacheManager = t3lib_div::makeInstance('t3lib_cache_Manager');
+$typo3CacheFactory = t3lib_div::makeInstance('t3lib_cache_Factory');
+$typo3CacheFactory->setCacheManager($typo3CacheManager);
+
+t3lib_cache::initPageCache();
+t3lib_cache::initPageSectionCache();
+t3lib_cache::initContentHashCache();
+unset($cacheFactoryClass);
 
 // *************************
 // CLI dispatch processing
@@ -216,6 +257,20 @@ if ($TYPO3_CONF_VARS['BE']['adminOnly'] < 0)       {
        header('Location: http://');    // Just point us away from here...
        exit;   // ... and exit good!
 }
+if (!(defined('TYPO3_cliMode') && TYPO3_cliMode) && @is_file(PATH_typo3conf.'LOCK_BACKEND'))   {
+       if (TYPO3_PROCEED_IF_NO_USER == 2) {
+               // ajax poll for login, let him pass
+       } else {
+               $fContent = t3lib_div::getUrl(PATH_typo3conf.'LOCK_BACKEND');
+               if ($fContent)  {
+                       header('Location: '.$fContent); // Redirect
+               } else {
+                       die('Browser backend is locked for maintenance. Remove lock by removing the file "typo3conf/LOCK_BACKEND" or use CLI-scripts.'.chr(10).chr(10));
+               }
+               exit;
+       }
+
+}
 
 // **********************
 // Check IP
@@ -233,16 +288,24 @@ if (trim($TYPO3_CONF_VARS['BE']['IPmaskList']) && !(defined('TYPO3_cliMode') &&
 // Check SSL (https)
 // **********************
 if (intval($TYPO3_CONF_VARS['BE']['lockSSL']) && !(defined('TYPO3_cliMode') && TYPO3_cliMode)) {
+       if(intval($TYPO3_CONF_VARS['BE']['lockSSLPort'])) {
+               $sslPortSuffix = ':'.intval($TYPO3_CONF_VARS['BE']['lockSSLPort']);
+       } else {
+               $sslPortSuffix = '';
+       }
        if ($TYPO3_CONF_VARS['BE']['lockSSL'] == 3)     {
                $requestStr = substr(t3lib_div::getIndpEnv('TYPO3_REQUEST_SCRIPT'), strlen(t3lib_div::getIndpEnv('TYPO3_SITE_URL').TYPO3_mainDir));
                if($requestStr == 'index.php' && !t3lib_div::getIndpEnv('TYPO3_SSL'))   {
                        list(,$url) = explode('://',t3lib_div::getIndpEnv('TYPO3_REQUEST_URL'),2);
-                       header('Location: https://'.$url);
+                       list($server,$address) = explode('/',$url,2);
+                       header('Location: https://'.$server.$sslPortSuffix.'/'.$address);
+                       exit;
                }
        } elseif (!t3lib_div::getIndpEnv('TYPO3_SSL') ) {
                if ($TYPO3_CONF_VARS['BE']['lockSSL'] == 2)     {
                        list(,$url) = explode('://',t3lib_div::getIndpEnv('TYPO3_SITE_URL').TYPO3_mainDir,2);
-                       header('Location: https://'.$url);      // Just point us away from here...
+                       list($server,$address) = explode('/',$url,2);
+                       header('Location: https://'.$server.$sslPortSuffix.'/'.$address);
                } else {
                        header('Status: 404 Not Found');        // Send Not Found header - if the webserver can make use of it...
                        header('Location: http://');    // Just point us away from here...
@@ -255,7 +318,6 @@ if (intval($TYPO3_CONF_VARS['BE']['lockSSL']) && !(defined('TYPO3_cliMode') && T
 // *******************************
 // Checking environment
 // *******************************
-if (t3lib_div::int_from_ver(phpversion())<4001000)     die ('TYPO3 runs with PHP4.1.0+ only');
 if (isset($_POST['GLOBALS']) || isset($_GET['GLOBALS']))       die('You cannot set the GLOBALS-array from outside the script.');
 if (!get_magic_quotes_gpc())   {
        t3lib_div::addSlashesOnArray($_GET);
@@ -269,7 +331,9 @@ if (!get_magic_quotes_gpc())        {
 // Check if the install script should be run:
 // ********************************************
 if (defined('TYPO3_enterInstallScript') && TYPO3_enterInstallScript)   {
-       if (!t3lib_extMgm::isLoaded('install')) die('Install Tool is not loaded as an extension.<br/>You must add the key "install" to the list of installed extensions in typo3conf/localconf.php, $TYPO3_CONF_VARS["EXT"]["extList"].');
+       if(!t3lib_extMgm::isLoaded('install')) {
+               die('Install Tool is not loaded as an extension.<br/>You must add the key "install" to the list of installed extensions in typo3conf/localconf.php, $TYPO3_CONF_VARS["EXT"]["extList"].');
+       }
 
        require_once(t3lib_extMgm::extPath('install').'mod/class.tx_install.php');
        $install_check = t3lib_div::makeInstance('tx_install');
@@ -343,6 +407,13 @@ $BE_USER->trackBeUser($TYPO3_CONF_VARS['BE']['trackBeUser']);      // Tracking backen
 $WEBMOUNTS = $BE_USER->returnWebmounts();              // ! WILL INCLUDE deleted mount pages as well!
 $FILEMOUNTS = $BE_USER->returnFilemounts();
 
+// *******************************
+// $GLOBALS['LANG'] initialisation
+// *******************************
+require_once(PATH_typo3.'sysext/lang/lang.php');
+$GLOBALS['LANG'] = t3lib_div::makeInstance('language');
+$GLOBALS['LANG']->init($BE_USER->uc['lang']);
+
 
 // ****************
 // CLI processing
@@ -362,8 +433,12 @@ if (defined('TYPO3_cliMode') && TYPO3_cliMode)     {
 // ****************
 // compression
 // ****************
-if ($TYPO3_CONF_VARS['BE']['compressionLevel'])        {
-       ob_start();
-       require_once (PATH_t3lib.'class.gzip_encode.php');
+ob_clean();
+if (extension_loaded('zlib') && $TYPO3_CONF_VARS['BE']['compressionLevel'])    {
+       if (t3lib_div::testInt($TYPO3_CONF_VARS['BE']['compressionLevel'])) {
+               @ini_set('zlib.output_compression_level', $TYPO3_CONF_VARS['BE']['compressionLevel']);
+       }
+       ob_start('ob_gzhandler');
 }
+
 ?>