Documentation TYPO3 par Ameos |
00001 <?php 00002 /*************************************************************** 00003 * Copyright notice 00004 * 00005 * (c) 1999-2007 Kasper Skaarhoj (kasperYYYY@typo3.com) 00006 * All rights reserved 00007 * 00008 * This script is part of the TYPO3 project. The TYPO3 project is 00009 * free software; you can redistribute it and/or modify 00010 * it under the terms of the GNU General Public License as published by 00011 * the Free Software Foundation; either version 2 of the License, or 00012 * (at your option) any later version. 00013 * 00014 * The GNU General Public License can be found at 00015 * http://www.gnu.org/copyleft/gpl.html. 00016 * A copy is found in the textfile GPL.txt and important notices to the license 00017 * from the author is found in LICENSE.txt distributed with these scripts. 00018 * 00019 * 00020 * This script is distributed in the hope that it will be useful, 00021 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00022 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00023 * GNU General Public License for more details. 00024 * 00025 * This copyright notice MUST APPEAR in all copies of the script! 00026 ***************************************************************/ 00041 // ******************************* 00042 // Set error reporting 00043 // ******************************* 00044 error_reporting (E_ALL ^ E_NOTICE); 00045 00046 00047 // ****************** 00048 // Constants defined 00049 // ****************** 00050 $TYPO3_MISC['microtime_start'] = microtime(); 00051 define('TYPO3_OS', stristr(PHP_OS,'win')&&!stristr(PHP_OS,'darwin')?'WIN':''); 00052 define('TYPO3_MODE','FE'); 00053 00054 if (!defined('PATH_thisScript')) 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'])))); 00055 if (!defined('PATH_site')) define('PATH_site', dirname(PATH_thisScript).'/'); 00056 if (!defined('PATH_t3lib')) define('PATH_t3lib', PATH_site.'t3lib/'); 00057 00058 define('TYPO3_mainDir', 'typo3/'); // This is the directory of the backend administration for the sites of this TYPO3 installation. 00059 define('PATH_typo3', PATH_site.TYPO3_mainDir); 00060 define('PATH_typo3conf', PATH_site.'typo3conf/'); 00061 00062 if (!defined('PATH_tslib')) { 00063 if (@is_dir(PATH_site.TYPO3_mainDir.'sysext/cms/tslib/')) { 00064 define('PATH_tslib', PATH_site.TYPO3_mainDir.'sysext/cms/tslib/'); 00065 } elseif (@is_dir(PATH_site.'tslib/')) { 00066 define('PATH_tslib', PATH_site.'tslib/'); 00067 } 00068 } 00069 00070 if (!@is_dir(PATH_typo3conf)) die('Cannot find configuration. This file is probably executed from the wrong location.'); 00071 00072 // ********************* 00073 // Timetracking started 00074 // ********************* 00075 require_once(PATH_t3lib.'class.t3lib_timetrack.php'); 00076 $TT = new t3lib_timeTrack; 00077 $TT->start(); 00078 $TT->push('','Script start'); 00079 00080 00081 // ********************* 00082 // Mandatory libraries included 00083 // ********************* 00084 $TT->push('Include class t3lib_db, t3lib_div, t3lib_extmgm',''); 00085 require_once(PATH_t3lib.'class.t3lib_div.php'); 00086 require_once(PATH_t3lib.'class.t3lib_extmgm.php'); 00087 $TT->pull(); 00088 00089 00090 00091 // ********************** 00092 // Include configuration 00093 // ********************** 00094 $TT->push('Include config files',''); 00095 require(PATH_t3lib.'config_default.php'); 00096 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. 00097 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.'); 00098 00099 if (!defined('PATH_tslib')) { 00100 define('PATH_tslib', t3lib_extMgm::extPath('cms').'tslib/'); 00101 } 00102 00103 require_once(PATH_t3lib.'class.t3lib_db.php'); 00104 $TYPO3_DB = t3lib_div::makeInstance('t3lib_DB'); 00105 $TYPO3_DB->debugOutput = $TYPO3_CONF_VARS['SYS']['sqlDebug']; 00106 00107 $CLIENT = t3lib_div::clientInfo(); // Set to the browser: net / msie if 4+ browsers 00108 $TT->pull(); 00109 00110 00111 // ******************************* 00112 // Checking environment 00113 // ******************************* 00114 if (t3lib_div::int_from_ver(phpversion())<4003000) die ('TYPO3 requires PHP 4.3.0 or higher.'); 00115 00116 if (isset($_POST['GLOBALS']) || isset($_GET['GLOBALS'])) die('You cannot set the GLOBALS-array from outside the script.'); 00117 if (!get_magic_quotes_gpc()) { 00118 $TT->push('Add slashes to GET/POST arrays',''); 00119 t3lib_div::addSlashesOnArray($_GET); 00120 t3lib_div::addSlashesOnArray($_POST); 00121 $HTTP_GET_VARS = $_GET; 00122 $HTTP_POST_VARS = $_POST; 00123 $TT->pull(); 00124 } 00125 00126 00127 // ********************* 00128 // Look for extension ID which will launch alternative output engine 00129 // ********************* 00130 if ($temp_extId = t3lib_div::_GP('eID')) { 00131 if ($classPath = t3lib_div::getFileAbsFileName($TYPO3_CONF_VARS['FE']['eID_include'][$temp_extId])) { 00132 require_once(PATH_tslib.'class.tslib_eidtools.php'); 00133 require($classPath); 00134 } 00135 exit; 00136 } 00137 00138 // ********************* 00139 // Libraries included 00140 // ********************* 00141 $TT->push('Include Frontend libraries',''); 00142 require_once(PATH_tslib.'class.tslib_fe.php'); 00143 require_once(PATH_t3lib.'class.t3lib_page.php'); 00144 require_once(PATH_t3lib.'class.t3lib_userauth.php'); 00145 require_once(PATH_tslib.'class.tslib_feuserauth.php'); 00146 require_once(PATH_t3lib.'class.t3lib_tstemplate.php'); 00147 require_once(PATH_t3lib.'class.t3lib_cs.php'); 00148 $TT->pull(); 00149 00150 00151 // *********************************** 00152 // Create $TSFE object (TSFE = TypoScript Front End) 00153 // Connecting to database 00154 // *********************************** 00155 $temp_TSFEclassName = t3lib_div::makeInstanceClassName('tslib_fe'); 00156 $TSFE = new $temp_TSFEclassName( 00157 $TYPO3_CONF_VARS, 00158 t3lib_div::_GP('id'), 00159 t3lib_div::_GP('type'), 00160 t3lib_div::_GP('no_cache'), 00161 t3lib_div::_GP('cHash'), 00162 t3lib_div::_GP('jumpurl'), 00163 t3lib_div::_GP('MP'), 00164 t3lib_div::_GP('RDCT') 00165 ); 00166 $TSFE->connectToDB(); 00167 00168 // In case of a keyword-authenticated preview, re-initialize the TSFE object: 00169 if ($temp_previewConfig = $TSFE->ADMCMD_preview()) { 00170 $TSFE = new $temp_TSFEclassName( 00171 $TYPO3_CONF_VARS, 00172 t3lib_div::_GP('id'), 00173 t3lib_div::_GP('type'), 00174 t3lib_div::_GP('no_cache'), 00175 t3lib_div::_GP('cHash'), 00176 t3lib_div::_GP('jumpurl'), 00177 t3lib_div::_GP('MP'), 00178 t3lib_div::_GP('RDCT') 00179 ); 00180 $TSFE->ADMCMD_preview_postInit($temp_previewConfig); 00181 } 00182 00183 if ($TSFE->RDCT) {$TSFE->sendRedirect();} 00184 00185 00186 // ******************* 00187 // output compression 00188 // ******************* 00189 if ($TYPO3_CONF_VARS['FE']['compressionLevel']) { 00190 ob_start(); 00191 require_once(PATH_t3lib.'class.gzip_encode.php'); 00192 } 00193 00194 // ********* 00195 // FE_USER 00196 // ********* 00197 $TT->push('Front End user initialized',''); 00198 $TSFE->initFEuser(); 00199 $TT->pull(); 00200 00201 // **************** 00202 // PRE BE_USER HOOK 00203 // **************** 00204 if (is_array($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/index_ts.php']['preBeUser'])) { 00205 foreach($TYPO3_CONF_VARS['SC_OPTIONS']['tslib/index_ts.php']['preBeUser'] as $_funcRef) { 00206 $_params = array(); 00207 t3lib_div::callUserFunction($_funcRef, $_params , $_params); 00208 } 00209 } 00210 00211 00212 // ********* 00213 // BE_USER 00214 // ********* 00215 $BE_USER=''; 00216 if ($_COOKIE['be_typo_user']) { // If the backend cookie is set, we proceed and checks if a backend user is logged in. 00217 $TYPO3_MISC['microtime_BE_USER_start'] = microtime(); 00218 $TT->push('Back End user initialized',''); 00219 require_once (PATH_t3lib.'class.t3lib_befunc.php'); 00220 require_once (PATH_t3lib.'class.t3lib_userauthgroup.php'); 00221 require_once (PATH_t3lib.'class.t3lib_beuserauth.php'); 00222 require_once (PATH_t3lib.'class.t3lib_tsfebeuserauth.php'); 00223 00224 // the value this->formfield_status is set to empty in order to disable login-attempts to the backend account through this script 00225 $BE_USER = t3lib_div::makeInstance('t3lib_tsfeBeUserAuth'); // New backend user object 00226 $BE_USER->OS = TYPO3_OS; 00227 $BE_USER->lockIP = $TYPO3_CONF_VARS['BE']['lockIP']; 00228 $BE_USER->start(); // Object is initialized 00229 $BE_USER->unpack_uc(''); 00230 if ($BE_USER->user['uid']) { 00231 $BE_USER->fetchGroupData(); 00232 $TSFE->beUserLogin = 1; 00233 } 00234 if ($BE_USER->checkLockToIP() && $BE_USER->checkBackendAccessSettingsFromInitPhp()) { 00235 $BE_USER->extInitFeAdmin(); 00236 if ($BE_USER->extAdmEnabled) { 00237 require_once(t3lib_extMgm::extPath('lang').'lang.php'); 00238 $LANG = t3lib_div::makeInstance('language'); 00239 $LANG->init($BE_USER->uc['lang']); 00240 00241 $BE_USER->extSaveFeAdminConfig(); 00242 // Setting some values based on the admin panel 00243 $TSFE->forceTemplateParsing = $BE_USER->extGetFeAdminValue('tsdebug', 'forceTemplateParsing'); 00244 $TSFE->displayEditIcons = $BE_USER->extGetFeAdminValue('edit', 'displayIcons'); 00245 $TSFE->displayFieldEditIcons = $BE_USER->extGetFeAdminValue('edit', 'displayFieldIcons'); 00246 00247 if (t3lib_div::_GP('ADMCMD_editIcons')) { 00248 $TSFE->displayFieldEditIcons=1; 00249 $BE_USER->uc['TSFE_adminConfig']['edit_editNoPopup']=1; 00250 } 00251 if (t3lib_div::_GP('ADMCMD_simUser')) { 00252 $BE_USER->uc['TSFE_adminConfig']['preview_simulateUserGroup']=intval(t3lib_div::_GP('ADMCMD_simUser')); 00253 $BE_USER->ext_forcePreview=1; 00254 } 00255 if (t3lib_div::_GP('ADMCMD_simTime')) { 00256 $BE_USER->uc['TSFE_adminConfig']['preview_simulateDate']=intval(t3lib_div::_GP('ADMCMD_simTime')); 00257 $BE_USER->ext_forcePreview=1; 00258 } 00259 00260 // Include classes for editing IF editing module in Admin Panel is open 00261 if (($BE_USER->extAdmModuleEnabled('edit') && $BE_USER->extIsAdmMenuOpen('edit')) || $TSFE->displayEditIcons == 1) { 00262 $TSFE->includeTCA(); 00263 if ($BE_USER->extIsEditAction()) { 00264 require_once (PATH_t3lib.'class.t3lib_tcemain.php'); 00265 $BE_USER->extEditAction(); 00266 } 00267 if ($BE_USER->extIsFormShown()) { 00268 require_once(PATH_t3lib.'class.t3lib_tceforms.php'); 00269 require_once(PATH_t3lib.'class.t3lib_iconworks.php'); 00270 require_once(PATH_t3lib.'class.t3lib_loaddbgroup.php'); 00271 require_once(PATH_t3lib.'class.t3lib_transferdata.php'); 00272 } 00273 } 00274 00275 if ($TSFE->forceTemplateParsing || $TSFE->displayEditIcons || $TSFE->displayFieldEditIcons) { $TSFE->set_no_cache(); } 00276 } 00277 00278 // $WEBMOUNTS = (string)($BE_USER->groupData['webmounts'])!='' ? explode(',',$BE_USER->groupData['webmounts']) : Array(); 00279 // $FILEMOUNTS = $BE_USER->groupData['filemounts']; 00280 } else { // Unset the user initialization. 00281 $BE_USER=''; 00282 $TSFE->beUserLogin=0; 00283 } 00284 $TT->pull(); 00285 $TYPO3_MISC['microtime_BE_USER_end'] = microtime(); 00286 } elseif ($TSFE->ADMCMD_preview_BEUSER_uid) { 00287 require_once (PATH_t3lib.'class.t3lib_befunc.php'); 00288 require_once (PATH_t3lib.'class.t3lib_userauthgroup.php'); 00289 require_once (PATH_t3lib.'class.t3lib_beuserauth.php'); 00290 require_once (PATH_t3lib.'class.t3lib_tsfebeuserauth.php'); 00291 00292 // the value this->formfield_status is set to empty in order to disable login-attempts to the backend account through this script 00293 $BE_USER = t3lib_div::makeInstance('t3lib_tsfeBeUserAuth'); // New backend user object 00294 $BE_USER->userTS_dontGetCached = 1; 00295 $BE_USER->OS = TYPO3_OS; 00296 $BE_USER->setBeUserByUid($TSFE->ADMCMD_preview_BEUSER_uid); 00297 $BE_USER->unpack_uc(''); 00298 if ($BE_USER->user['uid']) { 00299 $BE_USER->fetchGroupData(); 00300 $TSFE->beUserLogin = 1; 00301 } else { 00302 $BE_USER = ''; 00303 $TSFE->beUserLogin = 0; 00304 } 00305 } 00306 00307 // ******************** 00308 // Workspace preview: 00309 // ******************** 00310 $TSFE->workspacePreviewInit(); 00311 00312 00313 // ***************************************** 00314 // Proces the ID, type and other parameters 00315 // After this point we have an array, $page in TSFE, which is the page-record of the current page, $id 00316 // ***************************************** 00317 $TT->push('Process ID',''); 00318 $TSFE->checkAlternativeIdMethods(); 00319 $TSFE->clear_preview(); 00320 $TSFE->determineId(); 00321 00322 // Now, if there is a backend user logged in and he has NO access to this page, then re-evaluate the id shown! 00323 if ($TSFE->beUserLogin && (!$BE_USER->extPageReadAccess($TSFE->page) || t3lib_div::_GP('ADMCMD_noBeUser'))) { // t3lib_div::_GP('ADMCMD_noBeUser') is placed here because workspacePreviewInit() might need to know if a backend user is logged in! 00324 00325 // Remove user 00326 unset($BE_USER); 00327 $TSFE->beUserLogin = 0; 00328 00329 // Re-evaluate the page-id. 00330 $TSFE->checkAlternativeIdMethods(); 00331 $TSFE->clear_preview(); 00332 $TSFE->determineId(); 00333 } 00334 $TSFE->makeCacheHash(); 00335 $TT->pull(); 00336 00337 00338 // ******************************************* 00339 // Get compressed $TCA-Array(); 00340 // After this, we should now have a valid $TCA, though minimized 00341 // ******************************************* 00342 $TSFE->getCompressedTCarray(); 00343 00344 00345 // ******************************** 00346 // Starts the template 00347 // ******************************* 00348 $TT->push('Start Template',''); 00349 $TSFE->initTemplate(); 00350 $TT->pull(); 00351 00352 00353 // ******************************** 00354 // Get from cache 00355 // ******************************* 00356 $TT->push('Get Page from cache',''); 00357 $TSFE->getFromCache(); 00358 $TT->pull(); 00359 00360 00361 // ****************************************************** 00362 // Get config if not already gotten 00363 // After this, we should have a valid config-array ready 00364 // ****************************************************** 00365 $TSFE->getConfigArray(); 00366 00367 00368 // ******************************** 00369 // Convert POST data to internal "renderCharset" if different from the metaCharset: 00370 // ******************************* 00371 $TSFE->convPOSTCharset(); 00372 00373 00374 // ******************************************* 00375 // Setting the internal var, sys_language_uid + locale settings 00376 // ******************************************* 00377 $TSFE->settingLanguage(); 00378 $TSFE->settingLocale(); 00379 00380 00381 // ******************************** 00382 // Check JumpUrl 00383 // ******************************* 00384 $TSFE->setExternalJumpUrl(); 00385 $TSFE->checkJumpUrlReferer(); 00386 00387 00388 // ******************************** 00389 // Check Submission of data. 00390 // This is done at this point, because we need the config values 00391 // ******************************* 00392 switch($TSFE->checkDataSubmission()) { 00393 case 'email': 00394 require_once(PATH_t3lib.'class.t3lib_htmlmail.php'); 00395 require_once(PATH_t3lib.'class.t3lib_formmail.php'); 00396 $TSFE->sendFormmail(); 00397 break; 00398 case 'fe_tce': 00399 require_once(PATH_tslib.'class.tslib_fetce.php'); 00400 $TSFE->includeTCA(); 00401 $TT->push('fe_tce',''); 00402 $TSFE->fe_tce(); 00403 $TT->pull(); 00404 break; 00405 } 00406 00407 00408 // ******************************** 00409 // Generate page 00410 // ******************************* 00411 $TSFE->setUrlIdToken(); 00412 00413 $TT->push('Page generation',''); 00414 if ($TSFE->doXHTML_cleaning()) {require_once(PATH_t3lib.'class.t3lib_parsehtml.php');} 00415 if ($TSFE->isGeneratePage()) { 00416 $TSFE->generatePage_preProcessing(); 00417 $temp_theScript=$TSFE->generatePage_whichScript(); 00418 00419 if ($temp_theScript) { 00420 include($temp_theScript); 00421 } else { 00422 require_once(PATH_tslib.'class.tslib_pagegen.php'); 00423 include(PATH_tslib.'pagegen.php'); 00424 } 00425 $TSFE->generatePage_postProcessing(); 00426 } elseif ($TSFE->isINTincScript()) { 00427 require_once(PATH_tslib.'class.tslib_pagegen.php'); 00428 include(PATH_tslib.'pagegen.php'); 00429 } 00430 $TT->pull(); 00431 00432 00433 // ******************************** 00434 // $TSFE->config['INTincScript'] 00435 // ******************************* 00436 if ($TSFE->isINTincScript()) { 00437 $TT->push('Non-cached objects',''); 00438 $INTiS_config = $TSFE->config['INTincScript']; 00439 00440 // Special feature: Include libraries 00441 $TT->push('Include libraries'); 00442 foreach($INTiS_config as $INTiS_cPart) { 00443 if ($INTiS_cPart['conf']['includeLibs']) { 00444 $INTiS_resourceList = t3lib_div::trimExplode(',',$INTiS_cPart['conf']['includeLibs'],1); 00445 $TT->setTSlogMessage('Files for inclusion: "'.implode(', ',$INTiS_resourceList).'"'); 00446 00447 foreach($INTiS_resourceList as $INTiS_theLib) { 00448 $INTiS_incFile = $TSFE->tmpl->getFileName($INTiS_theLib); 00449 if ($INTiS_incFile) { 00450 require_once('./'.$INTiS_incFile); 00451 } else { 00452 $TT->setTSlogMessage('Include file "'.$INTiS_theLib.'" did not exist!',2); 00453 } 00454 } 00455 } 00456 } 00457 $TT->pull(); 00458 $TSFE->INTincScript(); 00459 $TT->pull(); 00460 } 00461 00462 // *************** 00463 // Output content 00464 // *************** 00465 if ($TSFE->isOutputting()) { 00466 $TT->push('Print Content',''); 00467 $TSFE->processOutput(); 00468 00469 // *************************************** 00470 // Outputs content / Includes EXT scripts 00471 // *************************************** 00472 if ($TSFE->isEXTincScript()) { 00473 $TT->push('External PHP-script',''); 00474 // Important global variables here are $EXTiS_*, they must not be overridden in include-scripts!!! 00475 $EXTiS_config = $TSFE->config['EXTincScript']; 00476 $EXTiS_splitC = explode('<!--EXT_SCRIPT.',$TSFE->content); // Splits content with the key. 00477 00478 // Special feature: Include libraries 00479 reset($EXTiS_config); 00480 while(list(,$EXTiS_cPart)=each($EXTiS_config)) { 00481 if ($EXTiS_cPart['conf']['includeLibs']) { 00482 $EXTiS_resourceList = t3lib_div::trimExplode(',',$EXTiS_cPart['conf']['includeLibs'],1); 00483 $TT->setTSlogMessage('Files for inclusion: "'.implode(', ',$EXTiS_resourceList).'"'); 00484 reset($EXTiS_resourceList); 00485 while(list(,$EXTiS_theLib) = each($EXTiS_resourceList)) { 00486 $EXTiS_incFile = $TSFE->tmpl->getFileName($EXTiS_theLib); 00487 if ($EXTiS_incFile) { 00488 require_once($EXTiS_incFile); 00489 } else { 00490 $TT->setTSlogMessage('Include file "'.$EXTiS_theLib.'" did not exist!',2); 00491 } 00492 } 00493 } 00494 } 00495 00496 reset($EXTiS_splitC); 00497 while(list($EXTiS_c,$EXTiS_cPart)=each($EXTiS_splitC)) { 00498 if (substr($EXTiS_cPart,32,3)=='-->') { // If the split had a comment-end after 32 characters it's probably a split-string 00499 $EXTiS_key = 'EXT_SCRIPT.'.substr($EXTiS_cPart,0,32); 00500 if (is_array($EXTiS_config[$EXTiS_key])) { 00501 $REC = $EXTiS_config[$EXTiS_key]['data']; 00502 $CONF = $EXTiS_config[$EXTiS_key]['conf']; 00503 $content=''; 00504 include($EXTiS_config[$EXTiS_key]['file']); 00505 echo $content; // The script MAY return content in $content or the script may just output the result directly! 00506 } 00507 echo substr($EXTiS_cPart,35); 00508 } else { 00509 echo ($c?'<!--EXT_SCRIPT.':'').$EXTiS_cPart; 00510 } 00511 } 00512 00513 $TT->pull(); 00514 } else { 00515 echo $TSFE->content; 00516 } 00517 $TT->pull(); 00518 } 00519 00520 00521 // ******************************** 00522 // Store session data for fe_users 00523 // ******************************** 00524 $TSFE->storeSessionData(); 00525 00526 00527 // *********** 00528 // Statistics 00529 // *********** 00530 $TYPO3_MISC['microtime_end'] = microtime(); 00531 $TSFE->setParseTime(); 00532 if ($TSFE->isOutputting() && ($TSFE->TYPO3_CONF_VARS['FE']['debug'] || $TSFE->config['config']['debug'])) { 00533 echo ' 00534 <!-- Parsetime: '.$TSFE->scriptParseTime.' ms-->'; 00535 } 00536 $TSFE->statistics(); 00537 00538 00539 // *************** 00540 // Check JumpUrl 00541 // *************** 00542 $TSFE->jumpurl(); 00543 00544 00545 // ************* 00546 // Preview info 00547 // ************* 00548 $TSFE->previewInfo(); 00549 00550 00551 // ****************** 00552 // Publishing static 00553 // ****************** 00554 if (is_object($BE_USER)) { 00555 if ($BE_USER->extAdmModuleEnabled('publish') && $BE_USER->extPublishList) { 00556 include_once(PATH_tslib.'publish.php'); 00557 } 00558 } 00559 00560 00561 // ****************** 00562 // Hook for end-of-frontend 00563 // ****************** 00564 $TSFE->hook_eofe(); 00565 00566 00567 // ******************** 00568 // Finish timetracking 00569 // ******************** 00570 $TT->pull(); 00571 00572 00573 // ****************** 00574 // beLoginLinkIPList 00575 // ****************** 00576 echo $TSFE->beLoginLinkIPList(); 00577 00578 00579 // ************* 00580 // Admin panel 00581 // ************* 00582 if (is_object($BE_USER) 00583 && $TSFE->beUserLogin 00584 && $TSFE->config['config']['admPanel'] 00585 && $BE_USER->extAdmEnabled 00586 // && $BE_USER->extPageReadAccess($TSFE->page) // This is already done, if there is a BE_USER object at this point! 00587 && !$BE_USER->extAdminConfig['hide']) { 00588 echo $BE_USER->extPrintFeAdminDialog(); 00589 } 00590 00591 00592 // ************* 00593 // Debugging Output 00594 // ************* 00595 if(@is_callable(array($error,'debugOutput'))) { 00596 $error->debugOutput(); 00597 } 00598 if (TYPO3_DLOG) t3lib_div::devLog('END of FRONTEND session','',0,array('_FLUSH'=>TRUE)); 00599 00600 00601 // ************* 00602 // Compressions 00603 // ************* 00604 if ($TYPO3_CONF_VARS['FE']['compressionLevel']) { 00605 new gzip_encode($TYPO3_CONF_VARS['FE']['compressionLevel'], false, $TYPO3_CONF_VARS['FE']['compressionDebugInfo']); 00606 } 00607 00608 ?>