X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Ftemplate-functions.php;h=e2b65de7493b5ff4ce6d1d2a7793549796265bed;hb=570ba443b03266dac3bfcbafbf8043fe1d220c1f;hp=8ec37cc2bdf207d25482bae1fd8df9c175a06ebd;hpb=f2512761b822e756c74d73f4acaafc5b1cf55669;p=mailer.git
diff --git a/inc/template-functions.php b/inc/template-functions.php
index 8ec37cc2bd..e2b65de749 100644
--- a/inc/template-functions.php
+++ b/inc/template-functions.php
@@ -16,7 +16,7 @@
* $Author:: $ *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
- * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -50,7 +50,7 @@ function enableTemplateHtml ($enable = true) {
$GLOBALS['is_template_html'] = (bool) $enable;
}
-// Checks wether the template is HTML or not by previously set flag
+// Checks whether the template is HTML or not by previously set flag
// Default: true
function isTemplateHtml () {
// Is the output_mode other than 0 (HTML), then no comments are enabled
@@ -95,51 +95,62 @@ function getColorSwitchCode ($template) {
// Output HTML code directly or 'render' it. You addionally switch the new-line character off
function outputHtml ($htmlCode, $newLine = true) {
// Init output
- if (!isset($GLOBALS['output'])) {
- $GLOBALS['output'] = '';
+ if (!isset($GLOBALS['__output'])) {
+ $GLOBALS['__output'] = '';
} // END - if
- // Do we have HTML-Code here?
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getOutputMode()=' . getOutputMode() . ',htmlCode(length)=' . strlen($htmlCode) . ',output(length)=' . strlen($GLOBALS['__output']));
+ // Is there HTML-Code here?
if (!empty($htmlCode)) {
// Yes, so we handle it as you have configured
switch (getOutputMode()) {
case 'render':
- // That's why you don't need any \n at the end of your HTML code... :-)
+ // But if PHP is caching, then we don't need to do that
if (getPhpCaching() == 'on') {
// Output into PHP's internal buffer
outputRawCode($htmlCode);
// That's why you don't need any \n at the end of your HTML code... :-)
- if ($newLine === true) print("\n");
+ if ($newLine === true) {
+ outputRawCode(chr(10));
+ } // END - if
} else {
// Render mode for old or lame servers...
- $GLOBALS['output'] .= $htmlCode;
+ $GLOBALS['__output'] .= $htmlCode;
// That's why you don't need any \n at the end of your HTML code... :-)
- if ($newLine === true) $GLOBALS['output'] .= "\n";
+ if ($newLine === true) {
+ $GLOBALS['__output'] .= chr(10);
+ } // END - if
}
break;
case 'direct':
- // If we are switching from render to direct output rendered code
- if ((!empty($GLOBALS['output'])) && (getPhpCaching() != 'on')) { outputRawCode($GLOBALS['output']); $GLOBALS['output'] = ''; }
+ // If we are switching from 'render' to 'direct' mode, all data in '__output' must be flushed and cleared
+ if ((!empty($GLOBALS['__output'])) && (getPhpCaching() != 'on')) {
+ outputRawCode($GLOBALS['__output']);
+ $GLOBALS['__output'] = '';
+ } // END - if
// The same as above... ^
outputRawCode($htmlCode);
- if ($newLine === true) print("\n");
+ if ($newLine === true) {
+ outputRawCode(chr(10));
+ } // END - if
break;
default:
// Huh, something goes wrong or maybe you have edited config.php ???
- debug_report_bug(__FUNCTION__, __LINE__, '{--FATAL_ERROR--}: {--NO_RENDER_DIRECT--}');
+ reportBug(__FUNCTION__, __LINE__, '{--FATAL_ERROR--}: {--NO_RENDER_DIRECT--}');
break;
} // END - switch
- } elseif ((getPhpCaching() == 'on') && ((!isset($GLOBALS['header'])) || (count($GLOBALS['header']) == 0))) {
+ } elseif ((getPhpCaching() == 'on') && ((!isset($GLOBALS['http_header'])) || (count($GLOBALS['http_header']) == 0)) && (!isRawOutputMode())) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'getPhpCaching()=' . getPhpCaching() . ',isset(http_header)=' . intval(isset($GLOBALS['http_header'])) . ',getScriptOutputMode()=' . getScriptOutputMode() . '');
// Output cached HTML code
- $GLOBALS['output'] = ob_get_contents();
+ $GLOBALS['__output'] = ob_get_contents();
// Clear output buffer for later output if output is found
- if (!empty($GLOBALS['output'])) {
+ if (!empty($GLOBALS['__output'])) {
clearOutputBuffer();
} // END - if
@@ -150,8 +161,8 @@ function outputHtml ($htmlCode, $newLine = true) {
compileFinalOutput();
// Output code here, DO NOT REMOVE! ;-)
- outputRawCode($GLOBALS['output']);
- } elseif ((getOutputMode() == 'render') && (!empty($GLOBALS['output']))) {
+ outputRawCode($GLOBALS['__output']);
+ } elseif ((getOutputMode() == 'render') && (!empty($GLOBALS['__output'])) && (!isRawOutputMode())) {
// Send all HTTP headers
sendHttpHeaders();
@@ -159,24 +170,26 @@ function outputHtml ($htmlCode, $newLine = true) {
compileFinalOutput();
// Output code here, DO NOT REMOVE! ;-)
- outputRawCode($GLOBALS['output']);
+ outputRawCode($GLOBALS['__output']);
} else {
// And flush all headers
- flushHeaders();
+ flushHttpHeaders();
}
}
// Compiles the final output
function compileFinalOutput () {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '__output(length)=' . strlen($GLOBALS['__output']) . ',getScriptOutputMode()=' . getScriptOutputMode() . ' - ENTERED!');
// Add page header and footer
addPageHeaderFooter();
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '__output(length)=' . strlen($GLOBALS['__output']) . ' - After addPageHeaderFooter() call.');
// Do the final compilation
- $GLOBALS['output'] = doFinalCompilation($GLOBALS['output']);
+ $GLOBALS['__output'] = compileUriCode(doFinalCompilation($GLOBALS['__output']));
// Extension 'rewrite' installed?
if ((isExtensionActive('rewrite')) && (!isCssOutputMode())) {
- $GLOBALS['output'] = rewriteLinksInCode($GLOBALS['output']);
+ $GLOBALS['__output'] = rewriteLinksInCode($GLOBALS['__output']);
} // END - if
// Compress it?
@@ -184,24 +197,24 @@ function compileFinalOutput () {
* @TODO On some pages this is buggy
if (!empty($_SERVER['HTTP_ACCEPT_ENCODING']) && (isInStringIgnoreCase('gzip', $_SERVER['HTTP_ACCEPT_ENCODING']))) {
// Compress it for HTTP gzip
- $GLOBALS['output'] = gzencode($GLOBALS['output'], 9);
+ $GLOBALS['__output'] = gzencode($GLOBALS['__output'], 9);
// Add header
- sendHeader('Content-Encoding: gzip');
+ addHttpHeader('Content-Encoding: gzip');
} elseif (!empty($_SERVER['HTTP_ACCEPT_ENCODING']) && (isInStringIgnoreCase('deflate', $_SERVER['HTTP_ACCEPT_ENCODING']))) {
// Compress it for HTTP deflate
- $GLOBALS['output'] = gzcompress($GLOBALS['output'], 9);
+ $GLOBALS['__output'] = gzcompress($GLOBALS['__output'], 9);
// Add header
- sendHeader('Content-Encoding: deflate');
+ addHttpHeader('Content-Encoding: deflate');
}
*/
// Add final length
- sendHeader('Content-Length: ' . strlen($GLOBALS['output']));
+ addHttpHeader('Content-Length: ' . strlen($GLOBALS['__output']));
// Flush all headers
- flushHeaders();
+ flushHttpHeaders();
}
// Main compilation loop
@@ -229,7 +242,7 @@ function doFinalCompilation ($code, $insertComments = true, $enableCodes = true)
// Was that eval okay?
if (empty($newContent)) {
// Something went wrong!
- debug_report_bug(__FUNCTION__, __LINE__, 'Evaluation error:
', false);
} // END - if
// Use it again
@@ -246,7 +259,7 @@ function doFinalCompilation ($code, $insertComments = true, $enableCodes = true)
} // END - while
// Add debugging data in HTML code, if mode is enabled
- if ((isDebugModeEnabled()) && ($insertComments === true)) {
+ if ((isDebugModeEnabled()) && ($insertComments === true) && ((isHtmlOutputMode()) || (isCssOutputMode()))) {
// Add loop count
$code .= '';
} // END - if
@@ -258,7 +271,7 @@ function doFinalCompilation ($code, $insertComments = true, $enableCodes = true)
// Output the raw HTML code
function outputRawCode ($htmlCode) {
// Output stripped HTML code to avoid broken JavaScript code, etc.
- print(str_replace('{BACK}', "\\", $htmlCode));
+ print(str_replace('{BACK}', chr(92), $htmlCode));
// Flush the output if only getPhpCaching() is not 'on'
if (getPhpCaching() != 'on') {
@@ -269,18 +282,22 @@ function outputRawCode ($htmlCode) {
// Load a template file and return it's content (only it's name; do not use ' or ")
function loadTemplate ($template, $return = false, $content = array(), $compileCode = true) {
+ // @TODO Remove these sanity checks if all is fine
if (!is_bool($return)) {
- // @TODO Remove this sanity-check if all is fine
- debug_report_bug(__FUNCTION__, __LINE__, 'return[] is not bool (' . gettype($return) . ')');
+ // $return has to be boolean
+ reportBug(__FUNCTION__, __LINE__, 'return[] is not bool (' . gettype($return) . ')');
} elseif (!is_string($template)) {
// $template has to be string
- debug_report_bug(__FUNCTION__, __LINE__, 'template[] is not string (' . gettype($template) . ')');
+ reportBug(__FUNCTION__, __LINE__, 'template[] is not string (' . gettype($template) . ')');
}
+ // Init returned content
+ $ret = '';
+
// Set current template
$GLOBALS['current_template'] = $template;
- // Do we have cache?
+ // Is there cache?
if ((!isDebuggingTemplateCache()) && (isTemplateCached($template))) {
// Evaluate the cache
eval(readTemplateCache($template));
@@ -288,15 +305,13 @@ function loadTemplate ($template, $return = false, $content = array(), $compileC
// Make all template names lowercase
$template = strtolower($template);
- // Init some data
- $ret = '';
-
// Base directory
$basePath = sprintf("%stemplates/%s/html/", getPath(), getLanguage());
$extraPath = detectExtraTemplatePath($template);
// Generate FQFN
$FQFN = $basePath . $extraPath . $template . '.tpl';
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Template ' . $template . ' is solved to FQFN=' . $FQFN);
// Does the special template exists?
if (!isFileReadable($FQFN)) {
@@ -312,18 +327,17 @@ function loadTemplate ($template, $return = false, $content = array(), $compileC
// The local file does exists so we load it. :)
$GLOBALS['tpl_content'][$template] = readFromFile($FQFN);
- // Do we have to compile the code?
- $ret = '';
+ // Is there to compile the code?
if ((isInString('$', $GLOBALS['tpl_content'][$template])) || (isInString('{--', $GLOBALS['tpl_content'][$template])) || (isInString('{?', $GLOBALS['tpl_content'][$template])) || (isInString('{%', $GLOBALS['tpl_content'][$template]))) {
// Normal HTML output?
- if (isHtmlOutputMode()) {
+ if ((isHtmlOutputMode()) && (substr($template, 0, 3) != 'js_')) {
// Add surrounding HTML comments to help finding bugs faster
- $ret = '' . $GLOBALS['tpl_content'][$template] . '';
+ $code = '' . $GLOBALS['tpl_content'][$template] . '';
// Prepare eval() command
- $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileCode(escapeQuotes($ret), false, true, true, $compileCode) . '";';
+ $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileCode(escapeQuotes($code), false, true, true, $compileCode) . '";';
} elseif (substr($template, 0, 3) == 'js_') {
- // JavaScripts don't like entities and timings
+ // JavaScripts don't like entities, dollar signs and timings
$GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['tpl_content'][$template]), false, true, true, $compileCode) . '");';
} else {
// Prepare eval() command, other output doesn't like entities, maybe
@@ -340,7 +354,7 @@ function loadTemplate ($template, $return = false, $content = array(), $compileC
} elseif ((isAdmin()) || ((isInstalling()) && (!isInstalled()))) {
// Only admins shall see this warning or when installation mode is active
$ret = '