[BUGFIX] Show correct record title
[Packages/TYPO3.CMS.git] / typo3 / install / index.php
index a3e3985..32a81de 100755 (executable)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 1999-2009 Kasper Skaarhoj (kasperYYYY@typo3.com)
+*  (c) 1999-2011 Kasper Skårhøj (kasperYYYY@typo3.com)
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
@@ -27,9 +27,7 @@
 /**
  * Starter-script for install screen
  *
- * $Id$
- *
- * @author     Kasper Skaarhoj <kasperYYYY@typo3.com>
+ * @author     Kasper Skårhøj <kasperYYYY@typo3.com>
  * @package TYPO3
  * @subpackage core
  */
 // Insert some security here, if you don't trust the Install Tool Password:
 // **************************************************************************
 
-error_reporting (E_ALL ^ E_NOTICE);
-$PATH_thisScript = str_replace('//','/', str_replace('\\','/', (PHP_SAPI=='cgi'||PHP_SAPI=='isapi' ||PHP_SAPI=='cgi-fcgi')&&($_SERVER['ORIG_PATH_TRANSLATED']?$_SERVER['ORIG_PATH_TRANSLATED']:$_SERVER['PATH_TRANSLATED'])? ($_SERVER['ORIG_PATH_TRANSLATED']?$_SERVER['ORIG_PATH_TRANSLATED']:$_SERVER['PATH_TRANSLATED']):($_SERVER['ORIG_SCRIPT_FILENAME']?$_SERVER['ORIG_SCRIPT_FILENAME']:$_SERVER['SCRIPT_FILENAME'])));
+error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED);
+
+$PATH_thisScript = str_replace('//', '/', str_replace('\\', '/',
+       (PHP_SAPI == 'fpm-fcgi' || PHP_SAPI == 'cgi' || PHP_SAPI == 'isapi' || PHP_SAPI == 'cgi-fcgi') &&
+       ($_SERVER['ORIG_PATH_TRANSLATED'] ? $_SERVER['ORIG_PATH_TRANSLATED'] : $_SERVER['PATH_TRANSLATED']) ?
+       ($_SERVER['ORIG_PATH_TRANSLATED'] ? $_SERVER['ORIG_PATH_TRANSLATED'] : $_SERVER['PATH_TRANSLATED']) :
+       ($_SERVER['ORIG_SCRIPT_FILENAME'] ? $_SERVER['ORIG_SCRIPT_FILENAME'] : $_SERVER['SCRIPT_FILENAME'])));
+
+$PATH_site = dirname(dirname(dirname($PATH_thisScript)));
+
+$quickstartFile = $PATH_site . '/typo3conf/FIRST_INSTALL';
+$enableInstallToolFile = $PATH_site . '/typo3conf/ENABLE_INSTALL_TOOL';
+
+       // If typo3conf/FIRST_INSTALL is present and can be deleted, automatically create typo3conf/ENABLE_INSTALL_TOOL
+if (is_file($quickstartFile) && is_writeable($quickstartFile) && unlink($quickstartFile)) {
+       touch($enableInstallToolFile);
+}
 
        // Only allow Install Tool access if the file "typo3conf/ENABLE_INSTALL_TOOL" is found
-$enableInstallToolFile = dirname(dirname(dirname($PATH_thisScript))).'/typo3conf/ENABLE_INSTALL_TOOL';
+if (is_file($enableInstallToolFile) && (time() - filemtime($enableInstallToolFile) > 3600)) {
+       $content = file_get_contents($enableInstallToolFile);
+       $verifyString = 'KEEP_FILE';
+
+       if (trim($content) !== $verifyString) {
+                       // Delete the file if it is older than 3600s (1 hour)
+               unlink($enableInstallToolFile);
+       }
+}
 
        // Change 1==2 to 1==1 if you want to lock the Install Tool regardless of the file ENABLE_INSTALL_TOOL
-if (1==2 || ($_SERVER['REMOTE_ADDR']!='127.0.0.1' && !@is_file($enableInstallToolFile)))       {
-       die('The Install Tool is locked.<br /><br /><strong>Fix:</strong> Create a file typo3conf/ENABLE_INSTALL_TOOL<br />This file may simply be empty.<br /><br />For security reasons, it is highly recommended to rename<br />or delete the file after the operation is finished.');
+if (1==2 || !is_file($enableInstallToolFile)) {
+               // Include t3lib_div and t3lib_parsehtml for templating
+       require_once($PATH_site . '/t3lib/class.t3lib_div.php');
+       require_once($PATH_site . '/t3lib/class.t3lib_parsehtml.php');
+
+               // Define the stylesheet
+       $stylesheet = '<link rel="stylesheet" type="text/css" href="' .
+               '../stylesheets/install/install.css" />';
+       $javascript = '<script type="text/javascript" src="' .
+               '../contrib/prototype/prototype.js"></script>' . LF;
+       $javascript .= '<script type="text/javascript" src="' .
+               '../sysext/install/Resources/Public/Javascript/install.js"></script>';
+
+               // Get the template file
+       $template = @file_get_contents($PATH_site . '/typo3/templates/install.html');
+               // Define the markers content
+       $markers = array(
+               'styleSheet' => $stylesheet,
+               'javascript' => $javascript,
+               'title' => 'The Install Tool is locked',
+               'content' => '
+                       <p>
+                               To enable the Install Tool, the file ENABLE_INSTALL_TOOL must be created.
+                       </p>
+                       <ul>
+                               <li>
+                                       In the typo3conf/ folder, create a file named ENABLE_INSTALL_TOOL. The file name is
+                                       case sensitive, but the file itself can simply be an empty file.
+                               </li>
+                               <li class="t3-install-locked-user-settings">
+                                       Alternatively, in the Backend, go to <a href="javascript:top.goToModule(\'user_setup\',1);">User tools &gt; User settings</a>
+                                       and let TYPO3 create this file for you. When you\'re finished, you can also visit
+                                       <a href="javascript:top.goToModule(\'user_setup\',1);">User tools &gt; User settings</a> and delete the file from there.
+                               </li>
+                       </ul>
+                       <p>
+                               For security reasons, it is highly recommended that you either rename or delete the file after the operation is finished.
+                       </p>
+                       <p>
+                               As an additional security measure, if the file is older than one hour, TYPO3 will automatically delete it.
+                       </p>
+               '
+       );
+               // Fill the markers
+       $content = t3lib_parsehtml::substituteMarkerArray(
+               $template,
+               $markers,
+               '###|###',
+               1,
+               1
+       );
+               // Output the warning message and exit
+       header('Content-Type: text/html; charset=utf-8');
+       header('Cache-Control: no-cache, must-revalidate');
+       header('Pragma: no-cache');
+       echo $content;
+       exit();
 }