X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ftemplate-functions.php;h=d08805fa50f5e7938fa4758b4af32ad3a3adb03a;hp=73bf31ae009e71fa23b505936d955bfd040e798f;hb=6dcb879ba3abb21843503cacc65d1fe0848eb90f;hpb=63e7748df538521b2fbfc2d7963b07af32abd842 diff --git a/inc/template-functions.php b/inc/template-functions.php index 73bf31ae00..d08805fa50 100644 --- a/inc/template-functions.php +++ b/inc/template-functions.php @@ -10,13 +10,8 @@ * -------------------------------------------------------------------- * * 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 * + * Copyright (c) 2009 - 2016 by Mailer Developer Team * * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -231,6 +226,9 @@ function compileFinalOutput () { // Main compilation loop function doFinalCompilation ($code, $insertComments = TRUE, $enableCodes = TRUE) { + // Code must not be an array (happens in installer) + assert(!is_array($code)); + // Insert comments? (Only valid with HTML templates, of course) enableTemplateHtml($insertComments); @@ -245,6 +243,7 @@ function doFinalCompilation ($code, $insertComments = TRUE, $enableCodes = TRUE) // Compile it //* DEBUG: */ debugOutput('
'.lineNumberCode($code).'
'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'code[]=' . gettype($code) . ',enableCodes[]=' . gettype($enableCodes)); $eval = '$newContent = "' . str_replace('{DQUOTE}', '"', compileCode(escapeQuotes($code), $enableCodes)) . '";'; //* DEBUG: */ if (!$insertComments) print('EVAL=
'.lineNumberCode($eval).'
'); eval($eval); @@ -356,11 +355,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 +373,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 @@ -649,9 +648,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 @@ -663,17 +666,19 @@ 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.'); @@ -760,15 +765,22 @@ 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; } // -function addSelectionBox ($type, $default, $prefix = '', $id = NULL, $class = 'form_select') { +function addSelectionBox ($type, $default, $prefix = '', $id = NULL, $class = 'form_select', $allSteps = FALSE) { $OUT = ''; if ($type == 'yn') { @@ -859,7 +871,7 @@ function addSelectionBox ($type, $default, $prefix = '', $id = NULL, $class = 'f case 'ho': // Hours for ($idx = 0; $idx <= 23; $idx++) { - $padded = padLeftZero($idx); + $padded = padLeftZero($idx, 2); $OUT .= ''; + $OUT .= ''; } // END - if // Walk through all options @@ -1829,7 +1850,7 @@ function generateSelectionBoxFromArray ($options, $name, $optionKey, $optionCont //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'name=' . $name . ',default[' . gettype($default) . ']=' . $default . ',optionKey[' . gettype($optionKey) . ']=' . $optionKey); // Is default value same as given value? - if ((!is_null($default)) && (isset($option[$optionKey])) && ($default == $option[$optionKey])) { + if ((!is_null($default)) && (isset($option[$optionKey])) && ($default === $option[$optionKey])) { // Then set default $option['default'] = ' selected="selected"'; } // END - if @@ -1931,10 +1952,12 @@ function generateCacheFqfn ($prefix, $template) { if (!isset($GLOBALS['template_cache_fqfn'][$prefix][$template])) { // Generate the FQFN $GLOBALS['template_cache_fqfn'][$prefix][$template] = sprintf( - '%s_compiled/%s/%s.tpl.cache', + '%s%s_compiled/%s/%s%s', + getPath(), getCachePath(), $prefix, - $template + $template, + getCacheExtension() ); } // END - if @@ -1982,15 +2005,27 @@ function translateTimeUnit ($unit) { } // Displays given message in admin_settings_saved template -function displayMessage ($message, $return = FALSE) { +function displayMessage ($message) { + // Call inner function + outputHtml(returnMessage($message)); +} + +// Returns given message in admin_settings_saved template +function returnMessage ($message) { // Load the template - return loadTemplate('admin_settings_saved', $return, $message); + return loadTemplate('admin_settings_saved', TRUE, $message); } -// Displays given error message in admin_settings_saved template -function displayErrorMessage ($message, $return = FALSE) { +// Displays given error message in admin_settings_unsaved template +function displayErrorMessage ($message) { // Load the template - return loadTemplate('admin_settings_unsaved', $return, $message); + outputHtml(returnErrorMessage($message)); +} + +// Displays given error message in admin_settings_unsaved template +function returnErrorMessage ($message) { + // Load the template + return loadTemplate('admin_settings_unsaved', TRUE, $message); } // Generates a selection box for (maybe) given gender @@ -2387,6 +2422,21 @@ function doTemplateMetaFavIcon ($templateName, $clear = FALSE) { return $out; } +// Helper function to display referral id or hide it depending on settings +function doTemplateDisplayReferralIdContent ($template, $clear = FALSE) { + // Ddisplay the refid or make it editable? + if (isDisplayRefidEnabled()) { + // Load "hide" form template + $out = loadTemplate('guest_register_refid_hide', TRUE); + } else { + // Load template to enter it + $out = loadTemplate('guest_register_refid', TRUE); + } + + // Return code + return $out; +} + // "Getter" for template base path function getTemplateBasePath ($part) { // Is there cache? @@ -2421,5 +2471,74 @@ function removeDeprecatedComment ($output) { return $return; } +// Generates a selection box suitable for e.g. birthdays: day, month and year +function generateDayMonthYearSelectionBox ($day, $month, $year) { + // This depends on selected language + switch (getLanguage()) { + case 'de': // German date format + $content = addSelectionBox('da', $day) . addSelectionBox('mo', $month) . addSelectionBox('ye', $year); + break; + + default: // Default is the US date format... :) + $content = addSelectionBox('mo', $month) . addSelectionBox('da', $day) . addSelectionBox('ye', $year); + break; + } // END - switch + + // Return content + return $content; +} + +// Loads page header +function loadPageHeader () { + // Init header + $GLOBALS['__page_header'] = ''; + + // Is the header already sent? + if (($GLOBALS['__header_sent'] != 1) && ($GLOBALS['__header_sent'] != 2)) { + // Set default HTTP status to "200 OK" + setHttpStatus('200 OK'); + + // If not in CSS mode generate the header + if ((!isCssOutputMode()) && (!isAjaxOutputMode()) && (!isImageOutputMode())) { + // Prepare the header for HTML output + loadHtmlHeader(); + } // END - if + + // Closing HEAD tag + if ($GLOBALS['__header_sent'] == '0') { + $GLOBALS['__header_sent'] = 1; + } // END - if + } // END - if + + // Add BODY tag or not? + // @TODO Find a way to not use direct module comparison + if ((!isCssOutputMode()) && (!isRawOutputMode()) && ($GLOBALS['__header_sent'] == 1) && (getModule() != 'frametester') && (!isFramesetModeEnabled())) { + loadTemplate('page_body'); + $GLOBALS['__header_sent'] = 2; + } // END - if +} + +// Loads page footer and calls doShutdown() +function loadPageFooter () { + // Init page footer + $GLOBALS['__page_footer'] = ''; + + // Footer disabled (e.g. CSS/AJAX/image output) or already sent? + // 1234 5 54 45 5 5 543 3 443 3 443 3 44321 + if ((((!isset($GLOBALS['__footer_sent'])) || (($GLOBALS['__footer_sent'] != 1) && ($GLOBALS['__footer_sent'] != 2))) && (!isCssOutputMode()) && (!isAjaxOutputMode()) && (!isImageOutputMode()))) { + // Run the filter, sweet huh? + runFilterChain('page_footer'); + + // Load page footer + $GLOBALS['__page_footer'] .= loadTemplate('page_footer', TRUE); + } // END - if + + // Footer has been reached + $GLOBALS['__footer_sent'] = 1; + + // Shutdown + doShutdown(); +} + // [EOF] ?>