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 888490c..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())<5001000)     die ('TYPO3 requires PHP 5.1.0 or higher.');
 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,78 +331,15 @@ if (!get_magic_quotes_gpc())      {
 // Check if the install script should be run:
 // ********************************************
 if (defined('TYPO3_enterInstallScript') && TYPO3_enterInstallScript)   {
-       if (!t3lib_extMgm::isLoaded('install') && !t3lib_extMgm::isLoaded('install_old'))       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"].');
-
-
-
-       /* <beta-code TYPO3 4.2-dev> */
-
-       session_start();
-
-       if($setInstallToolVersion = t3lib_div::_GP('installToolVersion')) {
-               if ($setInstallToolVersion === 'new') {
-                       $lcBackupFileName =  PATH_typo3conf.'localconf-'.date('ymd').'.php';
-                       if (!file_exists($lcBackupFileName))    {
-                               if (!copy(PATH_typo3conf.'localconf.php', $lcBackupFileName)) {
-                                       echo 'Backup of localconf.php failed! Will not start the new install tool.';
-                                       exit;
-                               }
-                       }
-               }
-               $_SESSION['installToolVersion'] = $setInstallToolVersion==='new'?'new':'old';
+       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(!$_SESSION['installToolVersion']) {
-
-               $oldInstallToolLoaded = t3lib_extMgm::isLoaded('install_old');
-               $newInstallToolLoaded = t3lib_extMgm::isLoaded('install');
-
-               echo '
-                       <link rel="stylesheet" href="../stylesheet.css" />
-                       <p style="margin: 20px;">Please select the install tool version to use for this browser session:</p>
-                       <ul>
-                               <li>
-                                       '.($oldInstallToolLoaded?'<a href="index.php?installToolVersion=old&'.htmlspecialchars(t3lib_div::getIndpEnv('QUERY_STRING')).'">':'').'
-                                               Traditional Install Tool
-                                       '.($oldInstallToolLoaded?'</a>':' (The extension "install_old" must be installed for this to work.)').'
-                               </li>
-                               <li>
-                                       '.($newInstallToolLoaded?'<a href="index.php?installToolVersion=new&'.htmlspecialchars(t3lib_div::getIndpEnv('QUERY_STRING')).'">':'').'
-                                               New Install Tool for TYPO3 4.2
-                                       '.($newInstallToolLoaded?'</a>':' (The extension "install" must be installed for this to work.)').'<br /><b>If you choose this option, a backup of the localconf file which is named localconf-YYMMDD.php is automatically created.</b>
-                               </li>
-                       </ul>
-               ';
-               exit();
-       }
-
-       if($_SESSION['installToolVersion'] === 'old') {
-               require_once(t3lib_extMgm::extPath('install_old').'mod/class.tx_install.php');
-               $install_check = t3lib_div::makeInstance('tx_install');
-               $install_check->allowUpdateLocalConf = 1;
-               $install_check->init();
-               exit;
-       } else {
-               require_once(t3lib_extMgm::extPath('install').'mod/class.tx_install.php');
-               $install_check = t3lib_div::makeInstance('tx_install');
-               $install_check->allowUpdateLocalConf = 1;
-               $install_check->init();
-               exit;           
-       }
-
-       /* </beta-code> */
-
-       /*
-       <original-code>
-
        require_once(t3lib_extMgm::extPath('install').'mod/class.tx_install.php');
        $install_check = t3lib_div::makeInstance('tx_install');
        $install_check->allowUpdateLocalConf = 1;
        $install_check->init();
        exit;
-
-       </original-code> 
-       */
 }
 
 
@@ -408,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
@@ -427,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');
 }
+
 ?>