<?php
/***************************************************************
* Copyright notice
-*
-* (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
+*
+* (c) 1999-2005 Kasper Skaarhoj (kasperYYYY@typo3.com)
* All rights reserved
*
-* This script is part of the TYPO3 project. The TYPO3 project is
+* This script is part of the TYPO3 project. The TYPO3 project is
* free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
-*
+*
* The GNU General Public License can be found at
* http://www.gnu.org/copyleft/gpl.html.
-* A copy is found in the textfile GPL.txt and important notices to the license
+* A copy is found in the textfile GPL.txt and important notices to the license
* from the author is found in LICENSE.txt distributed with these scripts.
*
-*
+*
* This script is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*
* This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/
-/**
+/**
* This is the MAIN DOCUMENT of the TypoScript driven standard front-end (from the "cms" extension)
* Basically put this is the "index.php" script which all requests for TYPO3 delivered pages goes to in the frontend (the website)
* The script configures constants, includes libraries and does a little logic here and there in order to instantiate the right classes to create the webpage.
* $Id$
* Revised for TYPO3 3.6 June/2003 by Kasper Skaarhoj
*
- * @author Kasper Skaarhoj <kasper@typo3.com>
+ * @author Kasper Skaarhoj <kasperYYYY@typo3.com>
* @package TYPO3
* @subpackage tslib
*/
-
+
// *******************************
-// Set error reporting
+// Set error reporting
// *******************************
-error_reporting (E_ALL ^ E_NOTICE);
+error_reporting (E_ALL ^ E_NOTICE);
// ******************
$TYPO3_MISC['microtime_start'] = microtime();
define('TYPO3_OS', stristr(PHP_OS,'win')&&!stristr(PHP_OS,'darwin')?'WIN':'');
define('TYPO3_MODE','FE');
-define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', php_sapi_name()=='cgi'||php_sapi_name()=='isapi'||php_sapi_name()=='cgi-fcgi' ? $HTTP_SERVER_VARS['PATH_TRANSLATED']:$HTTP_SERVER_VARS['SCRIPT_FILENAME'])));
+define('PATH_thisScript',str_replace('//','/', str_replace('\\','/', (php_sapi_name()=='cgi'||php_sapi_name()=='isapi' ||php_sapi_name()=='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']))));
define('PATH_site', dirname(PATH_thisScript).'/');
define('PATH_t3lib', PATH_site.'t3lib/');
define('PATH_tslib', PATH_site.'tslib/');
define('PATH_typo3conf', PATH_site.'typo3conf/');
-define('TYPO3_mainDir', 'typo3/'); // This is the directory of the backend administration for the sites of this TYPO3 installation.
+define('TYPO3_mainDir', 'typo3/'); // This is the directory of the backend administration for the sites of this TYPO3 installation.
if (!@is_dir(PATH_typo3conf)) die('Cannot find configuration. This file is probably executed from the wrong location.');
// *********************
-// DIV Library included
+// Mandatory libraries included
// *********************
$TT->push('Include class t3lib_db, t3lib_div, t3lib_extmgm','');
- require(PATH_t3lib.'class.t3lib_div.php');
- require(PATH_t3lib.'class.t3lib_extmgm.php');
+ require_once(PATH_t3lib.'class.t3lib_div.php');
+ require_once(PATH_t3lib.'class.t3lib_extmgm.php');
$TT->pull();
// Include configuration
// **********************
$TT->push('Include config files','');
-require(PATH_t3lib.'config_default.php');
+require_once(PATH_t3lib.'config_default.php');
if (!defined ('TYPO3_db')) die ('The configuration file was not included.'); // the name of the TYPO3 database is stored in this constant. Here the inclusion of the config-file is verified by checking if this var is set.
if (!t3lib_extMgm::isLoaded('cms')) die('<strong>Error:</strong> The main frontend extension "cms" was not loaded. Enable it in the extension manager in the backend.');
-require(PATH_t3lib.'class.t3lib_db.php');
+require_once(PATH_t3lib.'class.t3lib_db.php');
$TYPO3_DB = t3lib_div::makeInstance('t3lib_DB');
-$CLIENT=t3lib_div::clientInfo(); // Set to the browser: net / msie if 4+ browsers
+$CLIENT = t3lib_div::clientInfo(); // Set to the browser: net / msie if 4+ browsers
$TT->pull();
// *******************************
// Checking environment
// *******************************
-if (t3lib_div::int_from_ver(phpversion())<4000006) die ('TYPO3 runs with PHP4.0.6+ only');
+if (t3lib_div::int_from_ver(phpversion())<4001000) die ('TYPO3 runs with PHP4.1.0+ only');
-if (isset($HTTP_POST_VARS['GLOBALS']) || isset($HTTP_GET_VARS['GLOBALS'])) die('You cannot set the GLOBALS-array from outside the script.');
+if (isset($_POST['GLOBALS']) || isset($_GET['GLOBALS'])) die('You cannot set the GLOBALS-array from outside the script.');
if (!get_magic_quotes_gpc()) {
$TT->push('Add slashes to GET/POST arrays','');
- t3lib_div::addSlashesOnArray($HTTP_GET_VARS);
- t3lib_div::addSlashesOnArray($HTTP_POST_VARS);
- $_GET = $HTTP_GET_VARS;
- $_POST = $HTTP_POST_VARS;
+ t3lib_div::addSlashesOnArray($_GET);
+ t3lib_div::addSlashesOnArray($_POST);
+ $HTTP_GET_VARS = $_GET;
+ $HTTP_POST_VARS = $_POST;
$TT->pull();
}
// Create $TSFE object (TSFE = TypoScript Front End)
// Connecting to database
// ***********************************
-$temp_TSFEclassName=t3lib_div::makeInstanceClassName('tslib_fe');
+$temp_TSFEclassName = t3lib_div::makeInstanceClassName('tslib_fe');
$TSFE = new $temp_TSFEclassName(
- $TYPO3_CONF_VARS,
- t3lib_div::_GP('id'),
- t3lib_div::_GP('type'),
- t3lib_div::_GP('no_cache'),
- t3lib_div::_GP('cHash'),
+ $TYPO3_CONF_VARS,
+ t3lib_div::_GP('id'),
+ t3lib_div::_GP('type'),
+ t3lib_div::_GP('no_cache'),
+ t3lib_div::_GP('cHash'),
t3lib_div::_GP('jumpurl'),
t3lib_div::_GP('MP'),
t3lib_div::_GP('RDCT')
);
-$TSFE->connectToMySQL();
+$TSFE->connectToDB();
if ($TSFE->RDCT) {$TSFE->sendRedirect();}
$TSFE->initFEuser();
$TT->pull();
+// ****************
+// PRE BE_USER HOOK
+// ****************
+if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/index_ts.php']['preBeUser'])) {
+ foreach($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/index_ts.php']['preBeUser'] as $_funcRef) {
+ $_params = array();
+ t3lib_div::callUserFunction($_funcRef, $_params ,$this);
+ }
+}
+
// *********
// BE_USER
// *********
$BE_USER='';
-if ($HTTP_COOKIE_VARS['be_typo_user']) { // If the backend cookie is set, we proceed and checks if a backend user is logged in.
+if ($_COOKIE['be_typo_user']) { // If the backend cookie is set, we proceed and checks if a backend user is logged in.
$TYPO3_MISC['microtime_BE_USER_start'] = microtime();
$TT->push('Back End user initialized','');
require_once (PATH_t3lib.'class.t3lib_befunc.php');
require_once (PATH_t3lib.'class.t3lib_userauthgroup.php');
require_once (PATH_t3lib.'class.t3lib_beuserauth.php');
require_once (PATH_t3lib.'class.t3lib_tsfebeuserauth.php');
-
+
// the value this->formfield_status is set to empty in order to disable login-attempts to the backend account through this script
$BE_USER = t3lib_div::makeInstance('t3lib_tsfeBeUserAuth'); // New backend user object
$BE_USER->OS = TYPO3_OS;
$TSFE->forceTemplateParsing = $BE_USER->extGetFeAdminValue('tsdebug', 'forceTemplateParsing');
$TSFE->displayEditIcons = $BE_USER->extGetFeAdminValue('edit', 'displayIcons');
$TSFE->displayFieldEditIcons = $BE_USER->extGetFeAdminValue('edit', 'displayFieldIcons');
-
+
if (t3lib_div::_GP('ADMCMD_editIcons')) {
$TSFE->displayFieldEditIcons=1;
$BE_USER->uc['TSFE_adminConfig']['edit_editNoPopup']=1;
$BE_USER->uc['TSFE_adminConfig']['preview_simulateDate']=intval(t3lib_div::_GP('ADMCMD_simTime'));
$BE_USER->ext_forcePreview=1;
}
-
- // Include classes for editing IF editing module in Admin Panel is open (it is assumed that $TSFE->displayEditIcons is set only if the Edit module is open in the Admin Panel)
- if ($BE_USER->extAdmModuleEnabled('edit') && $BE_USER->extIsAdmMenuOpen('edit')) {
+
+ // Include classes for editing IF editing module in Admin Panel is open
+ if (($BE_USER->extAdmModuleEnabled('edit') && $BE_USER->extIsAdmMenuOpen('edit')) || $TSFE->displayEditIcons == 1) {
$TSFE->includeTCA();
if ($BE_USER->extIsEditAction()) {
require_once (PATH_t3lib.'class.t3lib_tcemain.php');
require_once(PATH_t3lib.'class.t3lib_transferdata.php');
}
}
-
+
if ($TSFE->forceTemplateParsing || $TSFE->displayEditIcons || $TSFE->displayFieldEditIcons) { $TSFE->set_no_cache(); }
}
-
+
// $WEBMOUNTS = (string)($BE_USER->groupData['webmounts'])!='' ? explode(',',$BE_USER->groupData['webmounts']) : Array();
// $FILEMOUNTS = $BE_USER->groupData['filemounts'];
} else { // Unset the user initialization.
$TT->pull();
+// *******************************************
+// Get compressed $TCA-Array();
+// After this, we should now have a valid $TCA, though minimized
+// *******************************************
+$TSFE->getCompressedTCarray();
+
+
// ********************************
// Starts the template
// *******************************
$TSFE->getConfigArray();
-// *******************************************
-// Get compressed $TCA-Array();
-// After this, we should now have a valid $TCA, though minimized
-// *******************************************
-$TSFE->getCompressedTCarray();
+// ********************************
+// Convert POST data to internal "renderCharset" if different from the metaCharset:
+// *******************************
+$TSFE->convPOSTCharset();
// *******************************************
-// Setting the internal var, sys_language_uid
+// Setting the internal var, sys_language_uid + locale settings
// *******************************************
$TSFE->settingLanguage();
+$TSFE->settingLocale();
// ********************************
-// Check Submission of data.
+// Check Submission of data.
// This is done at this point, because we need the config values
// *******************************
switch($TSFE->checkDataSubmission()) {
require_once(PATH_tslib.'class.tslib_pagegen.php');
include(PATH_tslib.'pagegen.php');
}
- if ($TSFE->isSearchIndexPage()) {
- if ($TSFE->config['config']['index_externals']) {require_once(PATH_t3lib.'class.t3lib_htmlmail.php');}
- require_once(t3lib_extMgm::extPath('indexed_search','class.indexer.php'));
- }
$TSFE->generatePage_postProcessing();
} elseif ($TSFE->isINTincScript()) {
require_once(PATH_tslib.'class.tslib_pagegen.php');
- include(PATH_tslib.'pagegen.php');
+ include(PATH_tslib.'pagegen.php');
}
$TT->pull();
// ********************************
-// $GLOBALS['TSFE']->config['INTincScript']
+// $GLOBALS['TSFE']->config['INTincScript']
// *******************************
if ($TSFE->isINTincScript()) {
$TT->push('Non-cached objects','');
$INTiS_config = $GLOBALS['TSFE']->config['INTincScript'];
-
+
// Special feature: Include libraries
$TT->push('Include libraries');
- reset($INTiS_config);
- while(list(,$INTiS_cPart)=each($INTiS_config)) {
+ foreach($INTiS_config as $INTiS_cPart) {
if ($INTiS_cPart['conf']['includeLibs']) {
$INTiS_resourceList = t3lib_div::trimExplode(',',$INTiS_cPart['conf']['includeLibs'],1);
$GLOBALS['TT']->setTSlogMessage('Files for inclusion: "'.implode(', ',$INTiS_resourceList).'"');
- reset($INTiS_resourceList);
- while(list(,$INTiS_theLib)=each($INTiS_resourceList)) {
- $INTiS_incFile=$GLOBALS['TSFE']->tmpl->getFileName($INTiS_theLib);
+
+ foreach($INTiS_resourceList as $INTiS_theLib) {
+ $INTiS_incFile = $GLOBALS['TSFE']->tmpl->getFileName($INTiS_theLib);
if ($INTiS_incFile) {
require_once('./'.$INTiS_incFile);
} else {
$TT->pull();
$TSFE->INTincScript();
$TT->pull();
-}
+}
// ***************
// Output content
}
+// ******************
+// Hook for end-of-frontend
+// ******************
+$TSFE->hook_eofe();
+
+
// ********************
// Finish timetracking
// ********************
// *************
// Admin panel
// *************
-if (is_object($BE_USER)
- && $GLOBALS['TSFE']->beUserLogin
- && $GLOBALS['TSFE']->config['config']['admPanel']
- && $BE_USER->extAdmEnabled
+if (is_object($BE_USER)
+ && $GLOBALS['TSFE']->beUserLogin
+ && $GLOBALS['TSFE']->config['config']['admPanel']
+ && $BE_USER->extAdmEnabled
// && $BE_USER->extPageReadAccess($GLOBALS['TSFE']->page) // This is already done, if there is a BE_USER object at this point!
&& !$BE_USER->extAdminConfig['hide']) {
echo $BE_USER->extPrintFeAdminDialog();