CSS classes cleaned up, templates simplified:
[mailer.git] / inc / template-functions.php
index ac4d85671b1790e9729f2be0b4252f16a9b66f1e..b838f086a07cb71373d4b43555cb7fa3ab1ac8b4 100644 (file)
@@ -56,7 +56,7 @@ function enableTemplateHtml ($enable = true) {
 // Default: true
 function isTemplateHtml () {
        // Is the output_mode other than 0 (HTML), then no comments are enabled
-       if (getOutputMode() != 0) {
+       if (!isHtmlOutputMode()) {
                // No HTML
                return false;
        } else {
@@ -82,25 +82,6 @@ function fixEmptyContentToDashes ($str) {
        return $str;
 }
 
-// Color-switch helper function
-function doTemplateColorSwitch ($template, $clear = false, $return = true) {
-       // Is it there?
-       if (!isset($GLOBALS['color_switch'][$template])) {
-               // Initialize it
-               initTemplateColorSwitch($template);
-       } elseif ($clear === false) {
-               // Switch color if called from loadTemplate()
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SWITCH:' . $template);
-               $GLOBALS['color_switch'][$template] = 3 - $GLOBALS['color_switch'][$template];
-       } // END - if
-
-       // Return CSS class name
-       if ($return === true) {
-               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'RETURN:' . $template . '=' . $GLOBALS['color_switch'][$template]);
-               return 'switch_sw' . $GLOBALS['color_switch'][$template];
-       } // END - if
-}
-
 // Init color switch
 function initTemplateColorSwitch ($template) {
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'INIT:' . $template);
@@ -126,7 +107,7 @@ function outputHtml ($htmlCode, $newLine = true) {
        // Do we have HTML-Code here?
        if (!empty($htmlCode)) {
                // Yes, so we handle it as you have configured
-               switch (getConfig('OUTPUT_MODE')) {
+               switch (getOutputMode()) {
                        case 'render':
                                // That's why you don't need any \n at the end of your HTML code... :-)
                                if (getPhpCaching() == 'on') {
@@ -155,7 +136,7 @@ function outputHtml ($htmlCode, $newLine = true) {
 
                        default:
                                // Huh, something goes wrong or maybe you have edited config.php ???
-                               debug_report_bug(__FUNCTION__, __LINE__, '<strong>{--FATAL_ERROR--}:</strong> {--LANG_NO_RENDER_DIRECT--}');
+                               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))) {
@@ -175,7 +156,7 @@ function outputHtml ($htmlCode, $newLine = true) {
 
                // Output code here, DO NOT REMOVE! ;-)
                outputRawCode($GLOBALS['output']);
-       } elseif ((getConfig('OUTPUT_MODE') == 'render') && (!empty($GLOBALS['output']))) {
+       } elseif ((getOutputMode() == 'render') && (!empty($GLOBALS['output']))) {
                // Send all HTTP headers
                sendHttpHeaders();
 
@@ -199,14 +180,16 @@ function compileFinalOutput () {
        $GLOBALS['output'] = doFinalCompilation($GLOBALS['output']);
 
        // Extension 'rewrite' installed?
-       if ((isExtensionActive('rewrite')) && (getOutputMode() != 1)) {
+       if ((isExtensionActive('rewrite')) && (!isCssOutputMode())) {
                $GLOBALS['output'] = rewriteLinksInCode($GLOBALS['output']);
        } // END - if
 
        // Compress it?
+       /**
+        * @TODO On some pages this is buggy
        if (!empty($_SERVER['HTTP_ACCEPT_ENCODING']) && (strpos('gzip', $_SERVER['HTTP_ACCEPT_ENCODING']) !== null)) {
                // Compress it for HTTP gzip
-               $GLOBALS['output'] = gzencode($GLOBALS['output'], 9, true);
+               $GLOBALS['output'] = gzencode($GLOBALS['output'], 9);
 
                // Add header
                sendHeader('Content-Encoding: gzip');
@@ -217,6 +200,7 @@ function compileFinalOutput () {
                // Add header
                sendHeader('Content-Encoding: deflate');
        }
+       */
 
        // Add final length
        sendHeader('Content-Length: ' . strlen($GLOBALS['output']));
@@ -226,7 +210,7 @@ function compileFinalOutput () {
 }
 
 // Main compilation loop
-function doFinalCompilation ($code, $insertComments = true) {
+function doFinalCompilation ($code, $insertComments = true, $enableCodes = true) {
        // Insert comments? (Only valid with HTML templates, of course)
        enableTemplateHtml($insertComments);
 
@@ -234,16 +218,17 @@ function doFinalCompilation ($code, $insertComments = true) {
        $cnt = 0;
 
        // Compile all out
-       while (((strpos($code, '{--') !== false) || (strpos($code, '{DQUOTE}') !== false) || (strpos($code, '{?') !== false) || (strpos($code, '{%') !== false)) && ($cnt < 4)) {
+       while (((strpos($code, '{--') !== false) || (strpos($code, '{DQUOTE}') !== false) || (strpos($code, '{?') !== false) || (strpos($code, '{%') !== false)) && ($cnt < 5)) {
                // Init common variables
                $content = array();
                $newContent = '';
 
                // Compile it
-               //* DEBUG: */ debugOutput('<pre>'.encodeEntities($code).'</pre>');
-               $eval = '$newContent = "' . str_replace('{DQUOTE}', '"', compileCode(escapeQuotes($code))) . '";';
-               //* DEBUG: */ if ($insertComments) die('<pre>'.linenumberCode($eval).'</pre>');
+               //* DEBUG: */ debugOutput('<pre>'.linenumberCode($code).'</pre>');
+               $eval = '$newContent = "' . str_replace('{DQUOTE}', '"', compileCode(escapeQuotes($code), false, true, $enableCodes)) . '";';
+               //* DEBUG: */ if (!$insertComments) print('EVAL=<pre>'.linenumberCode($eval).'</pre>');
                eval($eval);
+               //* DEBUG: */ if (!$insertComments) print('NEW=<pre>'.linenumberCode($newContent).'</pre>');
                //* DEBUG: */ die('<pre>'.encodeEntities($newContent).'</pre>');
 
                // Was that eval okay?
@@ -296,12 +281,10 @@ function loadTemplate ($template, $return = false, $content = array()) {
                if (empty($GLOBALS['refid'])) $GLOBALS['refid'] = '0';
 
                // Base directory
-               $basePath = sprintf("%stemplates/%s/html/", getConfig('PATH'), getLanguage());
+               $basePath = sprintf("%stemplates/%s/html/", getPath(), getLanguage());
                $extraPath = detectExtraTemplatePath($template);;
 
-               ////////////////////////
-               // Generate file name //
-               ////////////////////////
+               // Generate FQFN
                $FQFN = $basePath . $extraPath . $template . '.tpl';
 
                // Does the special template exists?
@@ -316,28 +299,28 @@ function loadTemplate ($template, $return = false, $content = array()) {
                        incrementConfigEntry('num_templates');
 
                        // The local file does exists so we load it. :)
-                       $GLOBALS['tpl_content'] = readFromFile($FQFN);
+                       $GLOBALS['tpl_content'][$template] = readFromFile($FQFN);
 
                        // Do we have to compile the code?
                        $ret = '';
-                       if ((strpos($GLOBALS['tpl_content'], '$') !== false) || (strpos($GLOBALS['tpl_content'], '{--') !== false) || (strpos($GLOBALS['tpl_content'], '{?') !== false) || (strpos($GLOBALS['tpl_content'], '{%') !== false)) {
+                       if ((strpos($GLOBALS['tpl_content'][$template], '$') !== false) || (strpos($GLOBALS['tpl_content'][$template], '{--') !== false) || (strpos($GLOBALS['tpl_content'][$template], '{?') !== false) || (strpos($GLOBALS['tpl_content'][$template], '{%') !== false)) {
                                // Normal HTML output?
-                               if (getOutputMode() == '0') {
+                               if (isHtmlOutputMode()) {
                                        // Add surrounding HTML comments to help finding bugs faster
-                                       $ret = '<!-- Template ' . $template . ' - Start //-->' . $GLOBALS['tpl_content'] . '<!-- Template ' . $template . ' - End //-->';
+                                       $ret = '<!-- Template ' . $template . ' - Start //-->' . $GLOBALS['tpl_content'][$template] . '<!-- Template ' . $template . ' - End //-->';
 
                                        // Prepare eval() command
                                        $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileCode(escapeQuotes($ret)) . '";';
                                } elseif (substr($template, 0, 3) == 'js_') {
                                        // JavaScripts don't like entities and timings
-                                       $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['tpl_content'])) . '");';
+                                       $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['tpl_content'][$template])) . '");';
                                } else {
                                        // Prepare eval() command, other output doesn't like entities, maybe
-                                       $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'])) . '");';
+                                       $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'][$template])) . '");';
                                }
                        } else {
                                // Add surrounding HTML comments to help finding bugs faster
-                               $ret = '<!-- Template ' . $template . ' - Start //-->' . $GLOBALS['tpl_content'] . '<!-- Template ' . $template . ' - End //-->';
+                               $ret = '<!-- Template ' . $template . ' - Start //-->' . $GLOBALS['tpl_content'][$template] . '<!-- Template ' . $template . ' - End //-->';
                                $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileRawCode(escapeQuotes($ret)) . '";';
                        } // END - if
                } elseif ((isAdmin()) || ((isInstalling()) && (!isInstalled()))) {
@@ -351,8 +334,6 @@ function loadTemplate ($template, $return = false, $content = array()) {
 <div class="para">
        {--TEMPLATE_CONTENT--}
        <pre>' . print_r($content, true) . '</pre>
-       {--TEMPLATE_DATA--}
-       <pre>' . print_r($DATA, true) . '</pre>
 </div>';
                } else {
                        // No file!
@@ -446,12 +427,12 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') {
        // Is content an array?
        if (is_array($content)) {
                // Add expiration to array
-               if ((isConfigEntrySet('auto_purge')) && (getConfig('auto_purge') == '0')) {
+               if ((isConfigEntrySet('auto_purge')) && (getAutoPurge() == '0')) {
                        // Will never expire!
                        $content['expiration'] = '{--MAIL_WILL_NEVER_EXPIRE--}';
                } elseif (isConfigEntrySet('auto_purge')) {
                        // Create nice date string
-                       $content['expiration'] = createFancyTime(getConfig('auto_purge'));
+                       $content['expiration'] = createFancyTime(getAutoPurge());
                } else {
                        // Missing entry
                        $content['expiration'] = '{--MAIL_NO_CONFIG_AUTO_PURGE--}';
@@ -460,7 +441,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') {
 
        // Load user's data
        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "UID={$userid},template={$template},content[]=".gettype($content));
-       if (($userid > 0) && (is_array($content))) {
+       if ((isValidUserId($userid)) && (is_array($content))) {
                // If nickname extension is installed, fetch nickname as well
                if ((isExtensionActive('nickname')) && (isNicknameUsed($userid))) {
                        //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "NICKNAME!<br />");
@@ -481,7 +462,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') {
        } // END - if
 
        // Base directory
-       $basePath = sprintf("%stemplates/%s/emails/", getConfig('PATH'), getLanguage());
+       $basePath = sprintf("%stemplates/%s/emails/", getPath(), getLanguage());
 
        // Detect extra path
        $extraPath = detectExtraTemplatePath($template);
@@ -499,11 +480,11 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') {
        $newContent = '';
        if (isFileReadable($FQFN)) {
                // The local file does exists so we load it. :)
-               $GLOBALS['tpl_content'] = readFromFile($FQFN);
+               $GLOBALS['tpl_content'][$template] = readFromFile($FQFN);
 
                // Run code
-               $GLOBALS['tpl_content'] = '$newContent = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'])) . '");';
-               eval($GLOBALS['tpl_content']);
+               $GLOBALS['tpl_content'][$template] = '$newContent = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'][$template])) . '");';
+               eval($GLOBALS['tpl_content'][$template]);
        } elseif (!empty($template)) {
                // Template file not found!
                $newContent = '<div class="para">
@@ -517,7 +498,10 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') {
 </div>';
 
                // Debug mode not active? Then remove the HTML tags
-               if (!isDebugModeEnabled()) $newContent = secureString($newContent);
+               if (!isDebugModeEnabled()) {
+                       // Remove HTML tags
+                       $newContent = secureString($newContent);
+               } // END - if
        } else {
                // No template name supplied!
                $newContent = '{--NO_TEMPLATE_SUPPLIED--}';
@@ -526,7 +510,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') {
        // Is there some content?
        if (empty($newContent)) {
                // Compiling failed
-               $newContent = "Compiler error for template " . $template . " !\nUncompiled content:\n" . $GLOBALS['tpl_content'];
+               $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.";
@@ -670,7 +654,7 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true
 }
 
 //
-function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 'register_select') {
+function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 'guest_select') {
        $OUT = '';
 
        if ($type == 'yn') {
@@ -704,7 +688,7 @@ function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 're
 
                case 'year': // Year
                        // Get current year
-                       $year = date('Y', time());
+                       $year = getYear();
 
                        // Use configured min age or fixed?
                        if (isExtensionInstalledAndNewer('order', '0.2.1')) {
@@ -736,10 +720,10 @@ function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 're
                                // Calculate earliest year depending on extension version
                                if (isExtensionInstalledAndNewer('order', '0.2.1')) {
                                        // Use configured minimum age
-                                       $year = date('Y', time()) - getConfig('min_age');
+                                       $year = getYear() - getConfig('min_age');
                                } else {
                                        // Use fixed 16 years age
-                                       $year = date('Y', time()) - 16;
+                                       $year = getYear() - 16;
                                }
 
                                // Construct year selection list
@@ -795,7 +779,7 @@ function generateImageOrCode ($img_code, $headerSent = true) {
 
        // Load image
        $img = sprintf("%s/theme/%s/images/code_bg.%s",
-               getConfig('PATH'),
+               getPath(),
                getCurrentTheme(),
                getConfig('img_type')
        );
@@ -856,9 +840,9 @@ function createTimeSelections ($timestamp, $prefix = '', $display = '', $align =
 
        // Do we have a leap year?
        $SWITCH = '0';
-       $TEST = date('Y', time()) / 4;
-       $M1 = date('m', time());
-       $M2 = date('m', (time() + $timestamp));
+       $TEST = getYear() / 4;
+       $M1 = getMonth();
+       $M2 = getMonth(time() + $timestamp);
 
        // If so and if current time is before 02/29 and estimated time is after 02/29 then add 86400 seconds (one day)
        if ((floor($TEST) == $TEST) && ($M1 == '02') && ($M2 > '02'))  $SWITCH = getConfig('ONE_DAY');
@@ -1094,10 +1078,10 @@ function generateEmailLink ($email, $table = 'admins') {
                $EMAIL = generateAdminEmailLink($email);
        } elseif ((isExtensionInstalledAndNewer('user', '0.3.3')) && ($table == 'user_data')) {
                // Create email link for contacting a member within admin area (or later in other areas, too?)
-               $EMAIL = generateUserEmailLink($email, 'admin');
+               $EMAIL = generateUserEmailLink($email);
        } elseif ((isExtensionActive('sponsor')) && ($table == 'sponsor_data')) {
                // Create email link to contact sponsor within admin area (or like the link above?)
-               $EMAIL = generateSponsorEmailLink($email, 'sponsor_data');
+               $EMAIL = generateSponsorEmailLink($email);
        }
 
        // Shall I close the link when there is no admin?
@@ -1149,13 +1133,15 @@ function displayParsingTime () {
        $start = explode(' ', $GLOBALS['startTime']);
        $end = explode(' ', $endTime);
        $runTime = $end[0] - $start[0];
-       if ($runTime < 0) $runTime = '0';
+       if ($runTime < 0) {
+               $runTime = '0';
+       } // END - if
 
        // Prepare output
        // @TODO This can be easily moved out after the merge from EL branch to this is complete
        $content = array(
                'run_time' => $runTime,
-               'sql_time' => translateComma(getConfig('sql_time') * 1000),
+               'sql_time' => (getConfig('sql_time') * 1000),
        );
 
        // Load the template
@@ -1167,7 +1153,7 @@ function debug_report_bug ($F, $L, $message = '', $sendEmail = true) {
        // Is this already called?
        if (isset($GLOBALS[__FUNCTION__])) {
                // Other backtrace
-               print 'Message:'.$message.'<br />Backtrace:<pre>';
+               print 'Message:' . $message . '<br />Backtrace:<pre>';
                debug_print_backtrace();
                die('</pre>');
        } // END - if
@@ -1190,11 +1176,11 @@ function debug_report_bug ($F, $L, $message = '', $sendEmail = true) {
        } // END - if
 
        // Add output
-       $debug .= 'Please report this bug at <a title="Direct link to the bug-tracker" href="http://bugs.mxchange.org" rel="external" target="_blank">http://bugs.mxchange.org</a> and include the logfile from <strong>' . str_replace(getConfig('PATH'), '', getConfig('CACHE_PATH')) . 'debug.log</strong> in your report (you can now attach files):<pre>';
+       $debug .= 'Please report this bug at <a title="Direct link to the bug-tracker" href="http://bugs.mxchange.org" rel="external" target="_blank">http://bugs.mxchange.org</a> and include the logfile from <strong>' . str_replace(getPath(), '', getCachePath()) . 'debug.log</strong> in your report (you can now attach files):<pre>';
        $debug .= debug_get_printable_backtrace();
        $debug .= '</pre>';
-       $debug .= '<div>Request-URI: ' . getRequestUri() . '</div>';
-       $debug .= '<div>Thank you for finding bugs.</div>';
+       $debug .= '<div class="para">Request-URI: ' . getRequestUri() . '</div>';
+       $debug .= '<div class="para">Thank you for finding bugs.</div>';
 
        // Send an email? (e.g. not wanted for evaluation errors)
        if (($sendEmail === true) && (!isInstallationPhase())) {
@@ -1260,12 +1246,12 @@ function generateExtensionInactiveMessage ($ext_name) {
        } // END - if
 
        // Default message
-       $message = getMaskedMessage('EXTENSION_PROBLEM_EXT_INACTIVE', $ext_name);
+       $message = getMaskedMessage('EXTENSION_PROBLEM_EXTENSION_INACTIVE', $ext_name);
 
        // Is an admin logged in?
        if (isAdmin()) {
                // Then output admin message
-               $message = getMaskedMessage('ADMIN_EXTENSION_PROBLEM_EXT_INACTIVE', $ext_name);
+               $message = getMaskedMessage('ADMIN_EXTENSION_PROBLEM_EXTENSION_INACTIVE', $ext_name);
        } // END - if
 
        // Return prepared message
@@ -1349,7 +1335,7 @@ function determinePageTitle () {
                $TITLE = '';
 
                // Title decoration enabled?
-               if ((getConfig('enable_title_deco') == 'Y') && (getConfig('title_left') != '')) $TITLE .= trim(getConfig('title_left')) . ' ';
+               if ((isTitleDecorationEnabled()) && (getConfig('title_left') != '')) $TITLE .= trim(getConfig('title_left')) . ' ';
 
                // Do we have some extra title?
                if (isExtraTitleSet()) {
@@ -1358,33 +1344,33 @@ function determinePageTitle () {
                } // END - if
 
                // Add main title
-               $TITLE .= getConfig('MAIN_TITLE');
+               $TITLE .= getMainTitle();
 
                // Add title of module? (middle decoration will also be added!)
-               if ((getConfig('enable_mod_title') == 'Y') || ((!isWhatSet()) && (!isActionSet())) || (getModule() == 'admin')) {
-                       $TITLE .= ' ' . trim(getConfig('title_middle')) . ' ' . getModuleTitle(getModule());
+               if ((isModuleTitleEnabled()) || ((!isWhatSet()) && (!isActionSet())) || (getModule() == 'admin')) {
+                       $TITLE .= ' ' . trim(getConfig('title_middle')) . ' {DQUOTE} . getModuleTitle(getModule()) . {DQUOTE}';
                } // END - if
 
                // Add title from what file
                $mode = '';
                if (getModule() == 'login') $mode = 'member';
                elseif (getModule() == 'index') $mode = 'guest';
-               if ((!empty($mode)) && (getConfig('enable_what_title') == 'Y')) $TITLE .= ' ' . trim(getConfig('title_middle')) . ' ' . getTitleFromMenu($mode, getWhat());
+               if ((!empty($mode)) && (isWhatTitleEnabled())) $TITLE .= ' ' . trim(getConfig('title_middle')) . ' ' . getTitleFromMenu($mode, getWhat());
 
                // Add title decorations? (right)
-               if ((getConfig('enable_title_deco') == 'Y') && (getConfig('title_right') != '')) $TITLE .= ' ' . trim(getConfig('title_right'));
+               if ((isTitleDecorationEnabled()) && (getConfig('title_right') != '')) $TITLE .= ' ' . trim(getConfig('title_right'));
 
                // Remember title in constant for the template
                $pageTitle = $TITLE;
        } elseif ((isInstalled()) && (isAdminRegistered())) {
                // Installed, admin registered but no ext-sql_patches
-               $pageTitle = '[-- ' . getConfig('MAIN_TITLE') . ' - ' . getModuleTitle(getModule()) . ' --]';
+               $pageTitle = '[-- ' . getMainTitle() . ' - ' . getModuleTitle(getModule()) . ' --]';
        } elseif ((isInstalled()) && (!isAdminRegistered())) {
                // Installed but no admin registered
-               $pageTitle = '{--SETUP_OF_MAILER--}';
+               $pageTitle = '{--INSTALLER_OF_MAILER_NO_ADMIN--}';
        } elseif ((!isInstalled()) || (!isAdminRegistered())) {
                // Installation mode
-               $pageTitle = '{--INSTALLATION_OF_MAILER--}';
+               $pageTitle = '{--INSTALLER_OF_MAILER--}';
        } else {
                // Configuration not found!
                $pageTitle = '{--NO_CONFIG_FOUND_TITLE--}';
@@ -1452,6 +1438,9 @@ function escapeQuotes ($str, $single = false) {
                // Escape all (including null)
                $str = addslashes($str);
        } else {
+               // Remove escaping of single quotes
+               $str = str_replace("\'", "'", $str);
+
                // Escape only double-quotes but prevent double-quoting
                $str = str_replace("\\\\", "\\", str_replace('"', "\\\"", $str));
        }
@@ -1499,7 +1488,7 @@ function sendModeMails ($mod, $modes) {
                                                                $content['message'] = '{--MEMBER_CHANGED_EMAIL--}' . ': ' . postRequestParameter('old_email') . "\n";
                                                                break;
 
-                                                       case 'pass': // Password was changed
+                                                       case 'password': // Password was changed
                                                                $content['message'] = '{--MEMBER_CHANGED_PASS--}' . "\n";
                                                                break;
 
@@ -1521,7 +1510,7 @@ function sendModeMails ($mod, $modes) {
                                        // Load template
                                        $message = loadEmailTemplate('member_mydata_notify', $content, getMemberId());
 
-                                       if (getConfig('admin_notify') == 'Y') {
+                                       if (isAdminNotificationEnabled()) {
                                                // The admin needs to be notified about a profile change
                                                $message_admin = 'admin_mydata_notify';
                                                $sub_adm   = '{--ADMIN_CHANGED_DATA--}';
@@ -1535,7 +1524,7 @@ function sendModeMails ($mod, $modes) {
                                        $sub_mem = '{--MEMBER_CHANGED_DATA--}';
 
                                        // Output success message
-                                       $content = '<span class="member_done">{--MYDATA_MAIL_SENT--}</span>';
+                                       $content = '<span class="member_done">{--MEMBER_MYDATA_MAIL_SENT--}</span>';
                                        break;
 
                                default: // Unsupported module!
@@ -1563,12 +1552,12 @@ function sendModeMails ($mod, $modes) {
                if ((!empty($sub_adm)) && (!empty($message_admin))) {
                        // Send admin mail
                        sendAdminNotification($sub_adm, $message_admin, $content, getMemberId());
-               } elseif (getConfig('admin_notify') == 'Y') {
+               } elseif (isAdminNotificationEnabled()) {
                        // Cannot send mails to admin!
                        $content = '{--CANNOT_SEND_ADMIN_MAILS--}';
                } else {
                        // No mail to admin
-                       $content = '<span class="member_done">{--MYDATA_MAIL_SENT--}</span>';
+                       $content = '<span class="member_done">{--MEMBER_MYDATA_MAIL_SENT--}</span>';
                }
        } // END - if
 
@@ -1600,8 +1589,6 @@ function generateSelectionBoxFromArray ($options, $name, $optionValue, $optionCo
        // Prepare output
        $content = array(
                'selection_box' => $OUT,
-               'module'        => getModule(),
-               'what'          => getWhat()
        );
 
        // Load template and return it
@@ -1661,7 +1648,7 @@ function generateCacheFqfn ($template, $mode = 'html') {
                // Generate the FQFN
                $GLOBALS['template_cache_fqfn'][$template] = sprintf(
                        "%s_compiled/%s/%s.tpl.cache",
-                       getConfig('CACHE_PATH'),
+                       getCachePath(),
                        $mode,
                        $template
                );
@@ -1686,5 +1673,43 @@ function fixNullEmptyToDashes ($str, $num) {
        return $return;
 }
 
+//-----------------------------------------------------------------------------
+//                       Template Helper Functions
+//-----------------------------------------------------------------------------
+
+// Color-switch helper function
+function doTemplateColorSwitch ($template, $clear = false, $return = true) {
+       // Is it there?
+       if (!isset($GLOBALS['color_switch'][$template])) {
+               // Initialize it
+               initTemplateColorSwitch($template);
+       } elseif ($clear === false) {
+               // Switch color if called from loadTemplate()
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SWITCH:' . $template);
+               $GLOBALS['color_switch'][$template] = 3 - $GLOBALS['color_switch'][$template];
+       } // END - if
+
+       // Return CSS class name
+       if ($return === true) {
+               //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'RETURN:' . $template . '=' . $GLOBALS['color_switch'][$template]);
+               return 'switch_sw' . $GLOBALS['color_switch'][$template];
+       } // END - if
+}
+
+// Helper function for extension registration link
+function doTemplateExtensionRegistrationLink ($template, $dummy, $ext_name) {
+       // Default is all productive
+       $OUT = '<a title="{--ADMIN_REGISTER_EXTENSION_TITLE--}" href="{%url=modules.php?module=admin&amp;what=extensions&amp;reg_ext=' . $ext_name . '%}">{--ADMIN_REGISTER_EXTENSION--}</a>';
+
+       // Is the given extension non-productive?
+       if (!isExtensionProductive($ext_name)) {
+               // Non-productive code
+               $OUT = '<em style="cursor:help" class="admin_note" title="{%message,ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK_TITLE=' . $ext_name . '%}">{--ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK--}</em>';
+       } // END - if
+
+       // Return code
+       return $OUT;
+}
+
 // [EOF]
 ?>