X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Ftemplate-functions.php;h=caa72894e601397b79899555565c2e7778104e3e;hb=5942a52ee1b26fdf495dc9c0946d616afc649607;hp=7003ffd1eaba9330a1b99823b024df0708ddc249;hpb=ba69a4633825777ad8e257f776ab30c96e3d8ae8;p=mailer.git
diff --git a/inc/template-functions.php b/inc/template-functions.php
index 7003ffd1ea..caa72894e6 100644
--- a/inc/template-functions.php
+++ b/inc/template-functions.php
@@ -10,11 +10,6 @@
* -------------------------------------------------------------------- *
* Kurzbeschreibung : Template-Funktionen *
* -------------------------------------------------------------------- *
- * $Revision:: $ *
- * $Date:: $ *
- * $Tag:: 0.2.1-FINAL $ *
- * $Author:: $ *
- * -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
* Copyright (c) 2009 - 2013 by Mailer Developer Team *
* For more information visit: http://mxchange.org *
@@ -144,7 +139,7 @@ function outputHtml ($htmlCode = NULL, $newLine = TRUE) {
reportBug(__FUNCTION__, __LINE__, '{--FATAL_ERROR--}: {--NO_RENDER_DIRECT--}');
break;
} // END - switch
- } elseif ((getPhpCaching() == 'on') && ((!isset($GLOBALS['http_header'])) || (count($GLOBALS['http_header']) == 0)) && (!isRawOutputMode())) {
+ } elseif ((getPhpCaching() == 'on') && (!isFilledArray($GLOBALS['http_header'])) && (!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();
@@ -305,7 +300,7 @@ function loadTemplate ($template, $return = FALSE, $content = array(), $compileC
}
// Init returned content
- $ret = '';
+ $templateContent = '';
// Set current template
$GLOBALS['current_template'] = $template;
@@ -322,17 +317,17 @@ function loadTemplate ($template, $return = FALSE, $content = array(), $compileC
$template = strtolower($template);
// Base directory
- $basePath = sprintf("%stemplates/%s/html/", getPath(), getLanguage());
+ $basePath = getTemplateBasePath('html');
$extraPath = detectExtraTemplatePath('html', $template);
// Generate FQFN
- $FQFN = $basePath . $extraPath . $template . '.tpl';
+ $FQFN = $basePath . '/' . $extraPath . $template . '.tpl';
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Template ' . $template . ' is solved to FQFN=' . $FQFN);
// Does the special template exists?
if (!isFileReadable($FQFN)) {
// Reset to default template
- $FQFN = $basePath . $template . '.tpl';
+ $FQFN = $basePath . '/' . $template . '.tpl';
} // END - if
// Now does the final template exists?
@@ -356,11 +351,11 @@ function loadTemplate ($template, $return = FALSE, $content = array(), $compileC
} elseif (substr($template, 0, 3) == 'js_') {
// JavaScripts don't like entities, dollar signs and timings
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Reached!');
- $GLOBALS['template_eval']['html'][$template] = '$templateContent = decodeEntities("' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['template_content']['html'][$template]), TRUE, $compileCode) . '");';
+ $GLOBALS['template_eval']['html'][$template] = '$templateContent = decodeEntities("' . escapeJavaScriptQuotes($GLOBALS['template_content']['html'][$template]) . '");';
} elseif (isAjaxOutputMode()) {
// AJAX (JSON content)
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Reached!');
- $GLOBALS['template_eval']['html'][$template] = '$templateContent = "' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['template_content']['html'][$template]), TRUE, $compileCode) . '";';
+ $GLOBALS['template_eval']['html'][$template] = '$templateContent = "' . escapeJavaScriptQuotes($GLOBALS['template_content']['html'][$template]) . '";';
} else {
// Prepare eval() command, other output doesn't like entities, maybe
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Reached!');
@@ -374,11 +369,11 @@ function loadTemplate ($template, $return = FALSE, $content = array(), $compileC
} elseif (isAjaxOutputMode()) {
// AJAX (JSON content)
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Reached!');
- $GLOBALS['template_eval']['html'][$template] = '$templateContent = "' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['template_content']['html'][$template]), TRUE, $compileCode) . '";';
+ $GLOBALS['template_eval']['html'][$template] = '$templateContent = "' . escapeJavaScriptQuotes($GLOBALS['template_content']['html'][$template]) . '";';
} else {
// JavaScript again
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Reached!');
- $GLOBALS['template_eval']['html'][$template] = '$templateContent = decodeEntities("' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['template_content']['html'][$template]), TRUE, $compileCode) . '");';
+ $GLOBALS['template_eval']['html'][$template] = '$templateContent = decodeEntities("' . escapeJavaScriptQuotes($GLOBALS['template_content']['html'][$template]) . '");';
} // END - if
} elseif ((isAdmin()) || ((isInstalling()) && (!isInstalled()))) {
// Only admins shall see this warning or when installation mode is active
@@ -509,18 +504,18 @@ function loadEmailTemplate ($template, $content = array(), $userid = NULL, $load
unset($GLOBALS['template_eval']['email'][$template]);
} elseif (!isset($GLOBALS['template_eval']['email'][$template])) {
// Base directory
- $basePath = sprintf("%stemplates/%s/emails/", getPath(), getLanguage());
+ $basePath = getTemplateBasePath('emails');
// Detect extra path
$extraPath = detectExtraTemplatePath('email', $template);
// Generate full FQFN
- $FQFN = $basePath . $extraPath . $template . '.tpl';
+ $FQFN = $basePath . '/' . $extraPath . $template . '.tpl';
// Does the special template exists?
if (!isFileReadable($FQFN)) {
// Reset to default template
- $FQFN = $basePath . $template . '.tpl';
+ $FQFN = $basePath . '/' . $template . '.tpl';
} // END - if
// Now does the final template exists?
@@ -562,6 +557,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = NULL, $load
// Eval the code
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'template=' . $template . ' - BEFORE EVAL');
//* DEBUG: */ print('
'.htmlentities($GLOBALS['template_eval']['email'][$template]).'
');
+ //* DEBUG: */ die(''.print_r($content, TRUE).'
'.htmlentities($GLOBALS['template_eval']['email'][$template]).'
');
eval($GLOBALS['template_eval']['email'][$template]);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'template=' . $template . ' - AFTER EVAL');
} // END - if
@@ -648,9 +644,13 @@ function compileCode ($code, $full = TRUE, $compileCode = TRUE) {
// Compiles the code
function compileRawCode ($code, $full = TRUE, $compileCode = TRUE) {
+ //* DIE: */ reportBug(__FUNCTION__, __LINE__, 'Called with ' . strlen($code) . ' code length.');
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Called with code()=' . strlen($code) . ',full=' . intval($full) . ',compileCode=' . intval($compileCode));
+
// Is the code a string or shall we not compile?
if ((!is_string($code)) || ($compileCode === FALSE)) {
// Silently return it
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'code[]= ' . gettype($code) . ' is not a string or compileCode(' . intval($compileCode) . ') is FALSE.');
return $code;
} // END - if
@@ -662,32 +662,37 @@ function compileRawCode ($code, $full = TRUE, $compileCode = TRUE) {
$secChars = $GLOBALS['security_chars'];
} // END - if
- // Compile more through a filter
- $code = runFilterChain('compile_code', $code);
-
// First compile these chars
array_unshift($secChars['to'] , '{--' , '--}');
array_unshift($secChars['from'], '{%message,', '%}' );
- // Compile QUOT and other non-HTML codes
+ // Replace QUOT and other non-HTML codes
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'code()=' . strlen($code) . ' - before str_replace() ...');
$code = str_replace($secChars['to'], $secChars['from'], $code);
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'code()=' . strlen($code) . ' - after str_replace() ...');
- // Find $content[bla][blub] entries
+ // Compile the prepared code through a filter chain
+ $code = runFilterChain('compile_code', $code);
+
+ // Find all $content[bla][blub] entries
preg_match_all('/\$content((\[([a-zA-Z0-9-_]+)\])*)/', $code, $matches);
//* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Second regex gave ' . count($matches[0]) . ' matches.');
// Are some matches found?
- if ((count($matches) > 0) && (count($matches[0]) > 0)) {
+ if ((isFilledArray($matches)) && (isFilledArray($matches[0]))) {
// Replace all matches
$matchesFound = array();
foreach ($matches[0] as $key => $match) {
// Fuzzy look has failed by default
$fuzzyFound = FALSE;
+ // "Cache" match length
+ $matchLength = strlen($match);
+
// Fuzzy look on match if already found
foreach ($matchesFound as $found => $set) {
// Get test part
- $test = substr($found, 0, strlen($match));
+ $test = substr($found, 0, $matchLength);
// Does this entry exist?
//* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'found=' . $found . ',match=' . $match . ',set=' . $set);
@@ -734,7 +739,7 @@ function compileRawCode ($code, $full = TRUE, $compileCode = TRUE) {
preg_match_all('/\$([a-z_A-Z\[\]]){0,}/', $code, $matches);
// Are some matches found?
- if ((count($matches) > 0) && (count($matches[0]) > 0)) {
+ if ((isFilledArray($matches)) && (isFilledArray($matches[0]))) {
// Scan all matches for not $content
foreach ($matches[0] as $match) {
// Trim match
@@ -756,10 +761,17 @@ function compileRawCode ($code, $full = TRUE, $compileCode = TRUE) {
} // END - if
} // END - if
- // Replace {COMPILE_DOLLAR} back to dollar sign
- $code = str_replace('{COMPILE_DOLLAR}', '$', $code);
+ // Add 'COMPILE_DOLLAR' again
+ array_push($secChars['to'] , '{COMPILE_DOLLAR}');
+ array_push($secChars['from'], '$');
+
+ // Replace QUOT and other non-HTML codes
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'code()=' . strlen($code) . ' - before str_replace() ...');
+ $code = str_replace($secChars['to'], $secChars['from'], $code);
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'code()=' . strlen($code) . ' - after str_replace() ...');
// Finally return it
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Exiting with code()=' . strlen($code));
return $code;
}
@@ -855,20 +867,20 @@ function addSelectionBox ($type, $default, $prefix = '', $id = NULL, $class = 'f
case 'ho': // Hours
for ($idx = 0; $idx <= 23; $idx++) {
- if (strlen($idx) == 1) $idx = 0 . $idx;
- $OUT .= '