ff1080d3dc8e28df1db9060e5036641b33dc3bc5
[Packages/TYPO3.CMS.git] / typo3 / install / index.php
1 <?php
2 /***************************************************************
3 * Copyright notice
4 *
5 * (c) 1999-2011 Kasper Skårhøj (kasperYYYY@typo3.com)
6 * All rights reserved
7 *
8 * This script is part of the TYPO3 project. The TYPO3 project is
9 * free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * The GNU General Public License can be found at
15 * http://www.gnu.org/copyleft/gpl.html.
16 * A copy is found in the textfile GPL.txt and important notices to the license
17 * from the author is found in LICENSE.txt distributed with these scripts.
18 *
19 *
20 * This script is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 *
25 * This copyright notice MUST APPEAR in all copies of the script!
26 ***************************************************************/
27 /**
28 * Starter-script for install screen
29 *
30 * $Id$
31 *
32 * @author Kasper Skårhøj <kasperYYYY@typo3.com>
33 * @package TYPO3
34 * @subpackage core
35 */
36
37
38
39 // **************************************************************************
40 // Insert some security here, if you don't trust the Install Tool Password:
41 // **************************************************************************
42
43 error_reporting(E_ALL & ~(E_STRICT | E_NOTICE | E_DEPRECATED));
44
45 $PATH_thisScript = str_replace('//', '/', str_replace('\\', '/',
46 (PHP_SAPI == 'fpm-fcgi' || PHP_SAPI == 'cgi' || PHP_SAPI == 'isapi' || PHP_SAPI == 'cgi-fcgi') &&
47 ($_SERVER['ORIG_PATH_TRANSLATED'] ? $_SERVER['ORIG_PATH_TRANSLATED'] : $_SERVER['PATH_TRANSLATED']) ?
48 ($_SERVER['ORIG_PATH_TRANSLATED'] ? $_SERVER['ORIG_PATH_TRANSLATED'] : $_SERVER['PATH_TRANSLATED']) :
49 ($_SERVER['ORIG_SCRIPT_FILENAME'] ? $_SERVER['ORIG_SCRIPT_FILENAME'] : $_SERVER['SCRIPT_FILENAME'])));
50
51 $PATH_site = dirname(dirname(dirname($PATH_thisScript)));
52
53 $quickstartFile = $PATH_site . '/typo3conf/FIRST_INSTALL';
54 $enableInstallToolFile = $PATH_site . '/typo3conf/ENABLE_INSTALL_TOOL';
55
56 // If typo3conf/FIRST_INSTALL is present and can be deleted, automatically create typo3conf/ENABLE_INSTALL_TOOL
57 if (is_file($quickstartFile) && is_writeable($quickstartFile) && unlink($quickstartFile)) {
58 touch($enableInstallToolFile);
59 }
60
61 // Additional security measure if ENABLE_INSTALL_TOOL file cannot, but
62 // should be deleted (in case it is write-protected, for example).
63 $removeInstallToolFileFailed = FALSE;
64
65 // Only allow Install Tool access if the file "typo3conf/ENABLE_INSTALL_TOOL" is found
66 if (is_file($enableInstallToolFile) && (time() - filemtime($enableInstallToolFile) > 3600)) {
67 $content = file_get_contents($enableInstallToolFile);
68 $verifyString = 'KEEP_FILE';
69
70 if (trim($content) !== $verifyString) {
71 // Delete the file if it is older than 3600s (1 hour)
72 if (!@unlink($enableInstallToolFile)) {
73 $removeInstallToolFileFailed = TRUE;
74 }
75 }
76 }
77
78 // Change 1==2 to 1==1 if you want to lock the Install Tool regardless of the file ENABLE_INSTALL_TOOL
79 if (1==2 || !is_file($enableInstallToolFile) || $removeInstallToolFileFailed) {
80 // Include t3lib_div and t3lib_parsehtml for templating
81 require_once($PATH_site . '/t3lib/class.t3lib_div.php');
82 require_once($PATH_site . '/t3lib/class.t3lib_parsehtml.php');
83
84 // Define the stylesheet
85 $stylesheet = '<link rel="stylesheet" type="text/css" href="' .
86 '../stylesheets/install/install.css" />';
87 $javascript = '<script type="text/javascript" src="' .
88 '../contrib/prototype/prototype.js"></script>' . LF;
89 $javascript .= '<script type="text/javascript" src="' .
90 '../sysext/install/Resources/Public/Javascript/install.js"></script>';
91
92 // Get the template file
93 $template = @file_get_contents($PATH_site . '/typo3/templates/install.html');
94 // Define the markers content
95 $markers = array(
96 'styleSheet' => $stylesheet,
97 'javascript' => $javascript,
98 'title' => 'The Install Tool is locked',
99 'content' => '
100 <p>
101 To enable the Install Tool, the file ENABLE_INSTALL_TOOL must be created.
102 </p>
103 <ul>
104 <li>
105 In the typo3conf/ folder, create a file named ENABLE_INSTALL_TOOL. The file name is
106 case sensitive, but the file itself can simply be an empty file.
107 </li>
108 <li class="t3-install-locked-user-settings">
109 Alternatively, in the Backend, go to <a href="javascript:top.goToModule(\'user_setup\',1);">User tools &gt; User settings</a>
110 and let TYPO3 create this file for you. When you\'re finished, you can also visit
111 <a href="javascript:top.goToModule(\'user_setup\',1);">User tools &gt; User settings</a> and delete the file from there.
112 </li>
113 </ul>
114 <p>
115 For security reasons, it is highly recommended that you either rename or delete the file after the operation is finished.
116 </p>
117 <p>
118 As an additional security measure, if the file is older than one hour, TYPO3 will automatically delete it. The file must be writable by the web server user.
119 </p>
120 '
121 );
122 // Fill the markers
123 $content = t3lib_parsehtml::substituteMarkerArray(
124 $template,
125 $markers,
126 '###|###',
127 1,
128 1
129 );
130 // Output the warning message and exit
131 header('Content-Type: text/html; charset=utf-8');
132 header('Cache-Control: no-cache, must-revalidate');
133 header('Pragma: no-cache');
134 echo $content;
135 exit();
136 }
137
138
139
140 // *****************************************************************************
141 // Defining constants necessary for the install-script to invoke the installer
142 // *****************************************************************************
143 define('TYPO3_MOD_PATH', 'install/');
144 $BACK_PATH='../';
145
146 // Defining this variable and setting it non-false will invoke the install-screen called from init.php
147 define('TYPO3_enterInstallScript', '1');
148 require ('../init.php');
149
150 ?>