X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Ftemplate-functions.php;h=34e43eb311b33e5e81f91eed904fa3e87a4050d2;hb=fb885a2e2739d328fd2093576eead18929131d45;hp=29270c1e734e1b8978a0df1d69faff9b6f367feb;hpb=e3934352dffa6eb9da59a137ae1a9414e5b4d80b;p=mailer.git diff --git a/inc/template-functions.php b/inc/template-functions.php index 29270c1e73..34e43eb311 100644 --- a/inc/template-functions.php +++ b/inc/template-functions.php @@ -110,23 +110,32 @@ function outputHtml ($htmlCode, $newLine = true) { 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) { + print("\n"); + } // END - if } else { // Render mode for old or lame servers... $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'] .= "\n"; + } // 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 ((!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) { + print("\n"); + } // END - if break; default: @@ -162,7 +171,7 @@ function outputHtml ($htmlCode, $newLine = true) { outputRawCode($GLOBALS['output']); } else { // And flush all headers - flushHeaders(); + flushHttpHeaders(); } } @@ -187,21 +196,21 @@ function compileFinalOutput () { $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); // 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 @@ -269,14 +278,18 @@ 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 + // $return has to be boolean debug_report_bug(__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) . ')'); } + // Init returned content + $ret = ''; + // Set current template $GLOBALS['current_template'] = $template; @@ -288,9 +301,6 @@ 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); @@ -313,17 +323,16 @@ function loadTemplate ($template, $return = false, $content = array(), $compileC $GLOBALS['tpl_content'][$template] = readFromFile($FQFN); // Do we have to compile the code? - $ret = ''; 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] . ''; // Prepare eval() command $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileCode(escapeQuotes($ret), 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 @@ -452,6 +461,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = NULL, $load } // END - if // Load user's data + // @DEPRECATED Loading the user data by given userid is deprecated because it is not related to template loading //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'UID=' . $userid . ',template=' . $template . ',content[]=' . gettype($content)); if ((isValidUserId($userid)) && (is_array($content))) { // If nickname extension is installed, fetch nickname as well @@ -469,7 +479,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = NULL, $load } // Merge data if valid - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'content()=' . count($content) . ' - PRE!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'content()=' . count($content) . ' - BEFORE!'); if ((isUserDataValid()) && ($loadUserData === true)) { // It is valid $content = merge_array($content, getUserDataArray()); @@ -531,7 +541,10 @@ function loadEmailTemplate ($template, $content = array(), $userid = NULL, $load $newContent = "Compiler error for template " . $template . " !\nUncompiled content:\n" . $GLOBALS['tpl_content'][$template]; // Add last error if the required function exists - if (function_exists('error_get_last')) $newContent .= "\n--------------------------------------\nDebug:\n".print_r(error_get_last(), true)."--------------------------------------\nPlease don't alter these informations!\nThanx."; + if (function_exists('error_get_last')) { + // Add last error and some lines for better overview + $newContent .= "\n--------------------------------------\nDebug:\n".print_r(error_get_last(), true)."--------------------------------------\nPlease don't alter these informations!\nThanx."; + } // END - if } // END - if // Remove content and data @@ -564,7 +577,7 @@ function getMenuCssClasses ($data) { // Generate XHTML code for the CAPTCHA function generateCaptchaCode ($code, $type, $type, $userid) { - return ''; + return ''; } // Compiles the given HTML/mail code @@ -655,7 +668,7 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true if ((is_string($matches[3][$key])) && (!isset($matchesFound[$match])) && (!isset($matchesFound[$key.'_' . $matches[3][$key]]))) { // Replace it in the code //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',match=' . $match); - $newMatch = str_replace('[', "['", str_replace(']', "']", $match)); + $newMatch = str_replace('[', "['", str_replace(']', "']", str_replace('$', '{COMPILE_DOLLAR}', $match))); $code = str_replace($match, '".' . $newMatch . '."', $code); $matchesFound[$key . '_' . $matches[3][$key]] = 1; $matchesFound[$match] = true; @@ -671,7 +684,32 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true } // END - foreach } // END - if - // Return it + // Find $fooBar entries + preg_match_all('/\$([a-z_A-Z\[\]]){0,}/', $code, $matches); + + // Are some matches found? + if ((count($matches) > 0) && (count($matches[0]) > 0)) { + // Scan all matches for not $content + foreach ($matches[0] as $match) { + // Trim match + $match = trim($match); + + // Is the first part not $content and not empty? + if ((!empty($match)) && (substr($match, 0, 8) != '$content') && ($match != '$userid')) { + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'match=' . $match); + // Then replace $ with $ + $matchSecured = str_replace('$', '$', $match); + + // And in $code as well + $code = str_replace($match, $matchSecured, $code); + } // END - if + } // END - if + } // END - if + + // Replace {COMPILE_DOLLAR} back to dollar sign + $code = str_replace('{COMPILE_DOLLAR}', '$', $code); + + // Finally return it return $code; } @@ -900,13 +938,13 @@ function createTimeSelections ($timestamp, $prefix = '', $display = '', $align = if ($asArray === true) { // Just put all data in an array for later use $OUT = array( - 'YEARS' => $Y, - 'MONTHS' => $M, - 'WEEKS' => $W, - 'DAYS' => $D, - 'HOURS' => $h, - 'MINUTES' => $m, - 'SECONDS' => $s + 'Y' => $Y, + 'M' => $M, + 'W' => $W, + 'D' => $D, + 'h' => $h, + 'm' => $m, + 's' => $s ); } else { // Generate table @@ -915,31 +953,31 @@ function createTimeSelections ($timestamp, $prefix = '', $display = '', $align = $OUT .= '