]> git.mxchange.org Git - mailer.git/blobdiff - inc/template-functions.php
getArrayFromDirectory() does now exclude files with size below 50 Bytes which always...
[mailer.git] / inc / template-functions.php
index c301e9fd403dc54eb4c817c287be33d4cd500b91..205c96de97f3eda28bb30b57ae7bc91455085e7e 100644 (file)
@@ -143,7 +143,7 @@ function outputHtml ($htmlCode, $newLine = true) {
                                debug_report_bug(__FUNCTION__, __LINE__, '<strong>{--FATAL_ERROR--}:</strong> {--NO_RENDER_DIRECT--}');
                                break;
                } // END - switch
-       } elseif ((getPhpCaching() == 'on') && ((!isset($GLOBALS['header'])) || (count($GLOBALS['header']) == 0))) {
+       } elseif ((getPhpCaching() == 'on') && ((!isset($GLOBALS['header'])) || (count($GLOBALS['header']) == 0)) && (!isRawOutputMode())) {
                // Output cached HTML code
                $GLOBALS['output'] = ob_get_contents();
 
@@ -160,7 +160,7 @@ function outputHtml ($htmlCode, $newLine = true) {
 
                // Output code here, DO NOT REMOVE! ;-)
                outputRawCode($GLOBALS['output']);
-       } elseif ((getOutputMode() == 'render') && (!empty($GLOBALS['output']))) {
+       } elseif ((getOutputMode() == 'render') && (!empty($GLOBALS['output'])) && (!isRawOutputMode())) {
                // Send all HTTP headers
                sendHttpHeaders();
 
@@ -171,7 +171,7 @@ function outputHtml ($htmlCode, $newLine = true) {
                outputRawCode($GLOBALS['output']);
        } else {
                // And flush all headers
-               flushHeaders();
+               flushHttpHeaders();
        }
 }
 
@@ -196,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
@@ -278,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;
 
@@ -297,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);
@@ -322,7 +323,6 @@ 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()) && (substr($template, 0, 3) != 'js_')) {
@@ -461,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
@@ -478,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());
@@ -540,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
@@ -664,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;
@@ -680,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 &#36;
+                               $matchSecured = str_replace('$', '&#36;', $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;
 }
 
@@ -1197,6 +1226,9 @@ function debug_report_bug ($F, $L, $message = '', $sendEmail = true) {
                die('</pre>');
        } // END - if
 
+       // Set HTTP status to 500 (e.g. for AJAX requests)
+       setHttpStatus('500 Internal Server Error');
+
        // Set this function as called
        $GLOBALS[__FUNCTION__] = true;
 
@@ -1886,16 +1918,11 @@ function addJavaScriptMenuContent ($menuMode, $mainAction, $action, $what) {
                return '';
        } // END - if
 
-       // Prepare content
-       $content = array(
-               'menu_mode'   => $menuMode,
-               'main_action' => $mainAction,
-               'action'      => $action,
-               'what'        => $what
-       );
+       // Prepare output
+       $OUT = ' onclick="return changeMenuFoldState(' . $menuMode . ', ' . $mainAction . ', ' . $action . ', ' . $what . ')';
 
-       // Return template
-       return loadTemplate('js_' . $menuMode . '_menu_onclick', true, $content);
+       // Return output
+       return $OUT;
 }
 
 //-----------------------------------------------------------------------------