Bug #22543 » patch_14243_for_trunk.diff
typo3/sysext/cms/tslib/class.tslib_fe.php (working copy) | ||
---|---|---|
* @return string Keyword: "all", "cached" or "output"
|
||
*/
|
||
function doLocalAnchorFix() {
|
||
return $this->config['config']['prefixLocalAnchors'];
|
||
return isset($this->config['config']['prefixLocalAnchors']) ? $this->config['config']['prefixLocalAnchors'] : null;
|
||
}
|
||
... | ... | |
function processOutput() {
|
||
// Set header for charset-encoding unless disabled
|
||
if (!$this->config['config']['disableCharsetHeader']) {
|
||
if (empty($this->config['config']['disableCharsetHeader'])) {
|
||
$headLine = 'Content-Type: text/html; charset='.trim($this->metaCharset);
|
||
header($headLine);
|
||
}
|
||
// Set cache related headers to client (used to enable proxy / client caching!)
|
||
if ($this->config['config']['sendCacheHeaders']) {
|
||
if (!empty($this->config['config']['sendCacheHeaders'])) {
|
||
$this->sendCacheHeaders();
|
||
}
|
||
// Set headers, if any
|
||
if ($this->config['config']['additionalHeaders']) {
|
||
if (!empty($this->config['config']['additionalHeaders'])) {
|
||
$headerArray = explode('|', $this->config['config']['additionalHeaders']);
|
||
while(list(,$headLine)=each($headerArray)) {
|
||
$headLine = trim($headLine);
|
||
... | ... | |
}
|
||
// Hook for post-processing of page content before output:
|
||
if (is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-output'])) {
|
||
if (isset($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-output']) && is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-output'])) {
|
||
$_params = array('pObj' => &$this);
|
||
foreach($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-output'] as $_funcRef) {
|
||
t3lib_div::callUserFunction($_funcRef,$_params,$this);
|
||
... | ... | |
// Send content-lenght header.
|
||
// Notice that all HTML content outside the length of the content-length header will be cut off! Therefore content of unknown length from included PHP-scripts and if admin users are logged in (admin panel might show...) or if debug mode is turned on, we disable it!
|
||
if ($this->config['config']['enableContentLengthHeader'] &&
|
||
if (!empty($this->config['config']['enableContentLengthHeader']) &&
|
||
!$this->isEXTincScript() &&
|
||
!$this->beUserLogin &&
|
||
!$this->TYPO3_CONF_VARS['FE']['debug'] &&
|
||
... | ... | |
$doCache = $this->isStaticCacheble();
|
||
// This variable will be TRUE unless cache headers are configured to be sent ONLY if a branch does not allow logins and logins turns out to be allowed anyway...
|
||
$loginsDeniedCfg = !$this->config['config']['sendCacheHeaders_onlyWhenLoginDeniedInBranch'] || !$this->loginAllowedInBranch;
|
||
$loginsDeniedCfg = empty($this->config['config']['sendCacheHeaders_onlyWhenLoginDeniedInBranch']) || empty($this->loginAllowedInBranch);
|
||
// Finally, when backend users are logged in, do not send cache headers at all (Admin Panel might be displayed for instance).
|
||
if ($doCache
|
||
... | ... | |
if ($this->fe_user->user['uid']) {
|
||
// User name:
|
||
$token = trim($this->config['config']['USERNAME_substToken']);
|
||
$token = isset($this->config['config']['USERNAME_substToken']) ? trim($this->config['config']['USERNAME_substToken']) : '';
|
||
$search[] = ($token ? $token : '<!--###USERNAME###-->');
|
||
$replace[] = $this->fe_user->user['username'];
|
||
// User uid (if configured):
|
||
$token = trim($this->config['config']['USERUID_substToken']);
|
||
$token = isset($this->config['config']['USERUID_substToken']) ? trim($this->config['config']['USERUID_substToken']) : '';
|
||
if ($token) {
|
||
$search[] = $token;
|
||
$replace[] = $this->fe_user->user['uid'];
|
||
... | ... | |
* @see tslib_cObj::PHP_SCRIPT
|
||
*/
|
||
function isEXTincScript() {
|
||
return is_array($this->config['EXTincScript']);
|
||
return (isset($this->config['EXTincScript']) && is_array($this->config['EXTincScript']));
|
||
}
|
||
/**
|
||
... | ... | |
*/
|
||
function setParseTime() {
|
||
// Compensates for the time consumed with Back end user initialization.
|
||
$this->scriptParseTime = $GLOBALS['TT']->getMilliseconds($GLOBALS['TYPO3_MISC']['microtime_end'])
|
||
- $GLOBALS['TT']->getMilliseconds($GLOBALS['TYPO3_MISC']['microtime_start'])
|
||
- ($GLOBALS['TT']->getMilliseconds($GLOBALS['TYPO3_MISC']['microtime_BE_USER_end']) - $GLOBALS['TT']->getMilliseconds($GLOBALS['TYPO3_MISC']['microtime_BE_USER_start']));
|
||
}
|
||
$microtime_start = isset($GLOBALS['TYPO3_MISC']['microtime_start']) ? $GLOBALS['TYPO3_MISC']['microtime_start'] : null;
|
||
$microtime_end = isset($GLOBALS['TYPO3_MISC']['microtime_end']) ? $GLOBALS['TYPO3_MISC']['microtime_end'] : null;
|
||
$microtime_BE_USER_start = isset($GLOBALS['TYPO3_MISC']['microtime_BE_USER_start']) ? $GLOBALS['TYPO3_MISC']['microtime_BE_USER_start'] : null;
|
||
$microtime_BE_USER_end = isset($GLOBALS['TYPO3_MISC']['microtime_BE_USER_end']) ? $GLOBALS['TYPO3_MISC']['microtime_BE_USER_end'] : null;
|
||
|
||
$this->scriptParseTime = $GLOBALS['TT']->getMilliseconds($microtime_end) - $GLOBALS['TT']->getMilliseconds($microtime_start)
|
||
- ($GLOBALS['TT']->getMilliseconds($microtime_BE_USER_end) - $GLOBALS['TT']->getMilliseconds($microtime_BE_USER_start));
|
||
}
|
||
/**
|
||
* Initialize file-based statistics handling: Check filename and permissions, and create the logfile if it does not exist yet.
|
||
... | ... | |
* @return void
|
||
*/
|
||
function statistics() {
|
||
if ($this->config['config']['stat'] &&
|
||
if (!empty($this->config['config']['stat']) &&
|
||
(!strcmp('',$this->config['config']['stat_typeNumList']) || t3lib_div::inList(str_replace(' ','',$this->config['config']['stat_typeNumList']), $this->type)) &&
|
||
(!$this->config['config']['stat_excludeBEuserHits'] || !$this->beUserLogin) &&
|
||
(!$this->config['config']['stat_excludeIPList'] || !t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'),str_replace(' ','',$this->config['config']['stat_excludeIPList'])))) {
|
||
(empty($this->config['config']['stat_excludeBEuserHits']) || !$this->beUserLogin) &&
|
||
(empty($this->config['config']['stat_excludeIPList']) || !t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'),str_replace(' ','',$this->config['config']['stat_excludeIPList'])))) {
|
||
$GLOBALS['TT']->push('Stat');
|
||
if (t3lib_extMgm::isLoaded('sys_stat') && $this->config['config']['stat_mysql']) {
|
||
if (t3lib_extMgm::isLoaded('sys_stat') && !empty($this->config['config']['stat_mysql'])) {
|
||
// Jumpurl:
|
||
$sword = t3lib_div::_GP('sword');
|
||
... | ... | |
);
|
||
// Hook for preprocessing the list of fields to insert into sys_stat:
|
||
if (is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['sys_stat-PreProcClass'])) {
|
||
if (isset($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['sys_stat-PreProcClass']) && is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['sys_stat-PreProcClass'])) {
|
||
foreach($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['sys_stat-PreProcClass'] as $_classRef) {
|
||
$_procObj = t3lib_div::getUserObj($_classRef);
|
||
$insertFields = $_procObj->sysstat_preProcessFields($insertFields,$this);
|
||
... | ... | |
}
|
||
// Apache:
|
||
if ($this->config['config']['stat_apache'] && $this->config['stat_vars']['pageName']) {
|
||
if (!empty($this->config['config']['stat_apache']) && !empty($this->config['stat_vars']['pageName'])) {
|
||
if (@is_file($this->config['stat_vars']['logFile'])) {
|
||
// Build a log line (format is derived from the NCSA extended/combined log format)
|
||
// Log part 1: Remote hostname / address
|
||
$LogLine = (t3lib_div::getIndpEnv('REMOTE_HOST') && !$this->config['config']['stat_apache_noHost']) ? t3lib_div::getIndpEnv('REMOTE_HOST') : t3lib_div::getIndpEnv('REMOTE_ADDR');
|
||
$LogLine = (t3lib_div::getIndpEnv('REMOTE_HOST') && empty($this->config['config']['stat_apache_noHost'])) ? t3lib_div::getIndpEnv('REMOTE_HOST') : t3lib_div::getIndpEnv('REMOTE_ADDR');
|
||
// Log part 2: Fake the remote logname
|
||
$LogLine.= ' -';
|
||
// Log part 3: Remote username
|
||
... | ... | |
// Log part 6: Status and content length (ignores special content like admin panel!)
|
||
$LogLine.= ' 200 '.strlen($this->content);
|
||
if (!$this->config['config']['stat_apache_notExtended']) {
|
||
if (empty($this->config['config']['stat_apache_notExtended'])) {
|
||
$referer = t3lib_div::getIndpEnv('HTTP_REFERER');
|
||
$LogLine.= ' "'.($referer ? $referer : '-').'" "'.t3lib_div::getIndpEnv('HTTP_USER_AGENT').'"';
|
||
}
|
||
... | ... | |
function hook_eofe() {
|
||
// Call hook for end-of-frontend processing:
|
||
if (is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['hook_eofe'])) {
|
||
if (isset($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['hook_eofe']) && is_array($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['hook_eofe'])) {
|
||
$_params = array('pObj' => &$this);
|
||
foreach($this->TYPO3_CONF_VARS['SC_OPTIONS']['tslib/class.tslib_fe.php']['hook_eofe'] as $_funcRef) {
|
||
t3lib_div::callUserFunction($_funcRef,$_params,$this);
|
||
... | ... | |
* @return string HTML, a tag for a link to the backend.
|
||
*/
|
||
function beLoginLinkIPList() {
|
||
if ($this->config['config']['beLoginLinkIPList']) {
|
||
if (!empty($this->config['config']['beLoginLinkIPList'])) {
|
||
if (t3lib_div::cmpIP(t3lib_div::getIndpEnv('REMOTE_ADDR'), $this->config['config']['beLoginLinkIPList'])) {
|
||
$label = !$this->beUserLogin ? $this->config['config']['beLoginLinkIPList_login'] : $this->config['config']['beLoginLinkIPList_logout'];
|
||
if ($label) {
|
- « Previous
- 1
- 2
- Next »