X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ftemplate-functions.php;h=b675c6b6dc522617cd22de76010508efe72eed31;hp=66867e69630e46f9f0df4bb19af038ec3e130a3a;hb=e8ca54fe91872ab95a6ffdc4f1268bf18889021d;hpb=27272fdaa3ad8895e6b55ec77658ad5c1f80e89c diff --git a/inc/template-functions.php b/inc/template-functions.php index 66867e6963..b675c6b6dc 100644 --- a/inc/template-functions.php +++ b/inc/template-functions.php @@ -14,8 +14,6 @@ * $Date:: $ * * $Tag:: 0.2.1-FINAL $ * * $Author:: $ * - * Needs to be in all Files and every File needs "svn propset * - * svn:keywords Date Revision" (autoprobset!) at least!!!!!! * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * * Copyright (c) 2009, 2010 by Mailer Developer Team * @@ -185,9 +183,11 @@ function compileFinalOutput () { } // 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'); @@ -198,6 +198,7 @@ function compileFinalOutput () { // Add header sendHeader('Content-Encoding: deflate'); } + */ // Add final length sendHeader('Content-Length: ' . strlen($GLOBALS['output'])); @@ -212,10 +213,10 @@ function doFinalCompilation ($code, $insertComments = true, $enableCodes = true) enableTemplateHtml($insertComments); // Init counter - $cnt = 0; + $count = 0; // Compile all out - while (((strpos($code, '{--') !== false) || (strpos($code, '{DQUOTE}') !== false) || (strpos($code, '{?') !== false) || (strpos($code, '{%') !== false)) && ($cnt < 5)) { + while (((strpos($code, '{--') !== false) || (strpos($code, '{DQUOTE}') !== false) || (strpos($code, '{?') !== false) || (strpos($code, '{%') !== false)) && ($count < 5)) { // Init common variables $content = array(); $newContent = ''; @@ -223,8 +224,9 @@ function doFinalCompilation ($code, $insertComments = true, $enableCodes = true) // Compile it //* DEBUG: */ debugOutput('
'.linenumberCode($code).'
'); $eval = '$newContent = "' . str_replace('{DQUOTE}', '"', compileCode(escapeQuotes($code), false, true, $enableCodes)) . '";'; - //* DEBUG: */ if (!$insertComments) print('
'.linenumberCode($eval).'
'); + //* DEBUG: */ if (!$insertComments) print('EVAL=
'.linenumberCode($eval).'
'); eval($eval); + //* DEBUG: */ if (!$insertComments) print('NEW=
'.linenumberCode($newContent).'
'); //* DEBUG: */ die('
'.encodeEntities($newContent).'
'); // Was that eval okay? @@ -237,7 +239,7 @@ function doFinalCompilation ($code, $insertComments = true, $enableCodes = true) $code = $newContent; // Count round - $cnt++; + $count++; } // END - while // Return the compiled code @@ -274,7 +276,6 @@ function loadTemplate ($template, $return = false, $content = array()) { // Init some data $ret = ''; - if (empty($GLOBALS['refid'])) $GLOBALS['refid'] = '0'; // Base directory $basePath = sprintf("%stemplates/%s/html/", getPath(), getLanguage()); @@ -295,34 +296,34 @@ 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 (isHtmlOutputMode()) { // Add surrounding HTML comments to help finding bugs faster - $ret = '' . $GLOBALS['tpl_content'] . ''; + $ret = '' . $GLOBALS['tpl_content'][$template] . ''; // 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 = '' . $GLOBALS['tpl_content'] . ''; + $ret = '' . $GLOBALS['tpl_content'][$template] . ''; $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileRawCode(escapeQuotes($ret)) . '";'; } // END - if } elseif ((isAdmin()) || ((isInstalling()) && (!isInstalled()))) { // Only admins shall see this warning or when installation mode is active $ret = '
- {--TEMPLATE_404--} + {--TEMPLATE_404--}
(' . $template . ') @@ -414,7 +415,7 @@ function detectExtraTemplatePath ($template) { } // Loads an email template and compiles it -function loadEmailTemplate ($template, $content = array(), $userid = '0') { +function loadEmailTemplate ($template, $content = array(), $userid = '0', $loadUserData = true) { global $DATA; // Make sure all template names are lowercase! @@ -428,7 +429,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') { $content['expiration'] = '{--MAIL_WILL_NEVER_EXPIRE--}'; } elseif (isConfigEntrySet('auto_purge')) { // Create nice date string - $content['expiration'] = createFancyTime(getAutoPurge()); + $content['expiration'] = '{%pipe,getAutoPurge,createFancyTime%}'; } else { // Missing entry $content['expiration'] = '{--MAIL_NO_CONFIG_AUTO_PURGE--}'; @@ -451,7 +452,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') { // Merge data if valid //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "content()=".count($content)." - PRE
"); - if (isUserDataValid()) { + if ((isUserDataValid()) && ($loadUserData === true)) { $content = merge_array($content, getUserDataArray()); } // END - if //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "content()=".count($content)." - AFTER
"); @@ -476,11 +477,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 = '
@@ -494,7 +495,10 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') {
'; // 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--}'; @@ -503,7 +507,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."; @@ -647,7 +651,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 = 'form_select') { $OUT = ''; if ($type == 'yn') { @@ -762,9 +766,9 @@ function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 're // Insert the code in $img_code into jpeg or PNG image function generateImageOrCode ($img_code, $headerSent = true) { // Is the code size oversized or shouldn't we display it? - if ((strlen($img_code) > 6) || (empty($img_code)) || (getConfig('code_length') == '0')) { + if ((strlen($img_code) > 6) || (empty($img_code)) || (getCodeLength() == '0')) { // Stop execution of function here because of over-sized code length - debug_report_bug(__FUNCTION__, __LINE__, 'img_code ' . $img_code .' has invalid length. img_code()=' . strlen($img_code) . ' code_length=' . getConfig('code_length')); + debug_report_bug(__FUNCTION__, __LINE__, 'img_code ' . $img_code .' has invalid length. img_code()=' . strlen($img_code) . ' code_length=' . getCodeLength()); } elseif ($headerSent === false) { // Return an HTML code here return 'Image'; @@ -774,26 +778,24 @@ function generateImageOrCode ($img_code, $headerSent = true) { $img = sprintf("%s/theme/%s/images/code_bg.%s", getPath(), getCurrentTheme(), - getConfig('img_type') + getImgType() ); // Is it readable? if (isFileReadable($img)) { // Switch image type - switch (getConfig('img_type')) { - case 'jpg': - // Okay, load image and hide all errors + switch (getImgType()) { + case 'jpg': // Okay, load image and hide all errors $image = imagecreatefromjpeg($img); break; - case 'png': - // Okay, load image and hide all errors + case 'png': // Okay, load image and hide all errors $image = imagecreatefrompng($img); break; } // END - switch } else { - // Exit function here - logDebugMessage(__FUNCTION__, __LINE__, sprintf("File for image type %s not found.", getConfig('img_type'))); + // Silently log the error + logDebugMessage(__FUNCTION__, __LINE__, sprintf("File for image-type %s in theme %s not found.", getImgType(), getCurrentTheme())); return; } @@ -804,10 +806,10 @@ function generateImageOrCode ($img_code, $headerSent = true) { imagestring($image, 5, 14, 2, $img_code, $text_color); // Return to browser - sendHeader('Content-Type: image/' . getConfig('img_type')); + setContentType('image/' . getImgType()); // Output image with matching image factory - switch (getConfig('img_type')) { + switch (getImgType()) { case 'jpg': imagejpeg($image); break; case 'png': imagepng($image); break; } // END - switch @@ -838,7 +840,7 @@ function createTimeSelections ($timestamp, $prefix = '', $display = '', $align = $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'); + if ((floor($TEST) == $TEST) && ($M1 == '02') && ($M2 > '02')) $SWITCH = getOneDay(); // First of all years... $Y = abs(floor($timestamp / (31536000 + $SWITCH))); @@ -847,19 +849,19 @@ function createTimeSelections ($timestamp, $prefix = '', $display = '', $align = $M = abs(floor($timestamp / 2628000 - $Y * 12)); //* DEBUG: */ debugOutput('M=' . $M); // Next weeks - $W = abs(floor($timestamp / 604800 - $Y * ((365 + $SWITCH / getConfig('ONE_DAY')) / 7) - ($M / 12 * (365 + $SWITCH / getConfig('ONE_DAY')) / 7))); + $W = abs(floor($timestamp / 604800 - $Y * ((365 + $SWITCH / getOneDay()) / 7) - ($M / 12 * (365 + $SWITCH / getOneDay()) / 7))); //* DEBUG: */ debugOutput('W=' . $W); // Next days... - $D = abs(floor($timestamp / 86400 - $Y * (365 + $SWITCH / getConfig('ONE_DAY')) - ($M / 12 * (365 + $SWITCH / getConfig('ONE_DAY'))) - $W * 7)); + $D = abs(floor($timestamp / 86400 - $Y * (365 + $SWITCH / getOneDay()) - ($M / 12 * (365 + $SWITCH / getOneDay())) - $W * 7)); //* DEBUG: */ debugOutput('D=' . $D); // Next hours... - $h = abs(floor($timestamp / 3600 - $Y * (365 + $SWITCH / getConfig('ONE_DAY')) * 24 - ($M / 12 * (365 + $SWITCH / getConfig('ONE_DAY')) * 24) - $W * 7 * 24 - $D * 24)); + $h = abs(floor($timestamp / 3600 - $Y * (365 + $SWITCH / getOneDay()) * 24 - ($M / 12 * (365 + $SWITCH / getOneDay()) * 24) - $W * 7 * 24 - $D * 24)); //* DEBUG: */ debugOutput('h=' . $h); // Next minutes.. - $m = abs(floor($timestamp / 60 - $Y * (365 + $SWITCH / getConfig('ONE_DAY')) * 24 * 60 - ($M / 12 * (365 + $SWITCH / getConfig('ONE_DAY')) * 24 * 60) - $W * 7 * 24 * 60 - $D * 24 * 60 - $h * 60)); + $m = abs(floor($timestamp / 60 - $Y * (365 + $SWITCH / getOneDay()) * 24 * 60 - ($M / 12 * (365 + $SWITCH / getOneDay()) * 24 * 60) - $W * 7 * 24 * 60 - $D * 24 * 60 - $h * 60)); //* DEBUG: */ debugOutput('m=' . $m); // And at last seconds... - $s = abs(floor($timestamp - $Y * (365 + $SWITCH / getConfig('ONE_DAY')) * 24 * 3600 - ($M / 12 * (365 + $SWITCH / getConfig('ONE_DAY')) * 24 * 3600) - $W * 7 * 24 * 3600 - $D * 24 * 3600 - $h * 3600 - $m * 60)); + $s = abs(floor($timestamp - $Y * (365 + $SWITCH / getOneDay()) * 24 * 3600 - ($M / 12 * (365 + $SWITCH / getOneDay()) * 24 * 3600) - $W * 7 * 24 * 3600 - $D * 24 * 3600 - $h * 3600 - $m * 60)); //* DEBUG: */ debugOutput('s=' . $s); // Is seconds zero and time is < 60 seconds? @@ -1033,19 +1035,25 @@ function generateMemberAdminActionLinks ($userid) { $OUT = '['; foreach ($targetArray as $tar) { - $OUT .= '{--ADMIN_'; + $OUT .= '_TITLE--}">{--ADMIN_USER_ACTION_LINK_'; if (($tar == 'lock_user') && ($status == 'LOCKED')) { // Locked accounts shall be unlocked $OUT .= 'UNLOCK_USER'; + } elseif ($tar == 'del_user') { + // @TODO Deprecate this thing + $OUT .= 'DELETE_USER'; } else { // All other status is fine $OUT .= strtoupper($tar); @@ -1071,10 +1079,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? @@ -1087,28 +1095,28 @@ function generateEmailLink ($email, $table = 'admins') { // Output error messages in a fasioned way and die... function app_die ($F, $L, $message) { // Check if Script is already dieing and not let it kill itself another 1000 times - if (!isset($GLOBALS['app_died'])) { - // Make sure, that the script realy realy diese here and now - $GLOBALS['app_died'] = true; + if (isset($GLOBALS['app_died'])) { + // Script tried to kill itself twice + die('[' . __FUNCTION__ . ':' . __LINE__ . ']: Script wanted to kill itself more than once! Raw message=' . $message . ', file/function=' . $F . ', line=' . $L); + } // END - if - // Set content type as text/html - setContentType('text/html'); + // Make sure, that the script realy realy diese here and now + $GLOBALS['app_died'] = true; - // Load header - loadIncludeOnce('inc/header.php'); + // Set content type as text/html + setContentType('text/html'); - // Rewrite message for output - $message = sprintf(getMessage('MAILER_HAS_DIED'), basename($F), $L, $message); + // Load header + loadIncludeOnce('inc/header.php'); - // Load the message template - loadTemplate('app_die_message', false, $message); + // Rewrite message for output + $message = sprintf(getMessage('MAILER_HAS_DIED'), basename($F), $L, $message); - // Load footer - loadIncludeOnce('inc/footer.php'); - } else { - // Script tried to kill itself twice - die('['.__FUNCTION__.':'.__LINE__.']: Script wanted to kill itself more than once! Raw message=' . $message . ', file/function=' . $F . ', line=' . $L); - } + // Load the message template + loadTemplate('app_die_message', false, $message); + + // Load footer + loadIncludeOnce('inc/footer.php'); } // Display parsing time and number of SQL queries in footer @@ -1126,7 +1134,9 @@ 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 @@ -1313,7 +1323,7 @@ function linenumberCode ($code) { // Add code $r .= '' . encodeEntities($c) . '
'; - } + } // END - foreach return '
' . $r . '
'; } @@ -1452,6 +1462,9 @@ function escapeJavaScriptQuotes ($str) { // Send out mails depending on the 'mod/modes' combination // @TODO Lame description for this function function sendModeMails ($mod, $modes) { + // Init user data + $content = array (); + // Load hash if (fetchUserData(getMemberId())) { // Extract salt from cookie @@ -1515,61 +1528,59 @@ function sendModeMails ($mod, $modes) { $sub_mem = '{--MEMBER_CHANGED_DATA--}'; // Output success message - $content = '{--MEMBER_MYDATA_MAIL_SENT--}'; + $content['message'] = '{--MEMBER_MYDATA_MAIL_SENT--}'; break; default: // Unsupported module! logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unsupported module %s detected.", $mod)); - $content = '{--UNKNOWN_MODULE--}'; + $content['message'] = '{--UNKNOWN_MODULE--}'; break; } // END - switch } else { // Passwords mismatch - $content = '{--MEMBER_PASSWORD_ERROR--}'; + $content['message'] = '{--MEMBER_PASSWORD_ERROR--}'; } } else { // Could not load profile - $content = '{--MEMBER_CANNOT_LOAD_PROFILE--}'; + $content['message'] = '{--MEMBER_CANNOT_LOAD_PROFILE--}'; } // Send email to user if required - if ((!empty($sub_mem)) && (!empty($message))) { + if ((!empty($sub_mem)) && (!empty($message)) && (!empty($content['email']))) { // Send member mail sendEmail($content['email'], $sub_mem, $message); } // END - if // Send only if no other error has occured - if (empty($content)) { - if ((!empty($sub_adm)) && (!empty($message_admin))) { - // Send admin mail - sendAdminNotification($sub_adm, $message_admin, $content, getMemberId()); - } elseif (isAdminNotificationEnabled()) { - // Cannot send mails to admin! - $content = '{--CANNOT_SEND_ADMIN_MAILS--}'; - } else { - // No mail to admin - $content = '{--MEMBER_MYDATA_MAIL_SENT--}'; - } - } // END - if + if ((!empty($sub_adm)) && (!empty($message_admin)) && (isAdminNotificationEnabled())) { + // Send admin mail + sendAdminNotification($sub_adm, $message_admin, $content, getMemberId()); + } elseif (isAdminNotificationEnabled()) { + // Cannot send mails to admin! + $content['message'] = '{--CANNOT_SEND_ADMIN_MAILS--}'; + } else { + // No mail to admin + $content['message'] = '{--MEMBER_MYDATA_MAIL_SENT--}'; + } // Load template - loadTemplate('admin_settings_saved', false, $content); + loadTemplate('admin_settings_saved', false, $content['message']); } // Generates a 'selection box' from given array function generateSelectionBoxFromArray ($options, $name, $optionValue, $optionContent = '', $extraName = '') { // Start the output - $OUT = ' '; // Walk through all options foreach ($options as $option) { - // Add the '; } } // END - foreach @@ -1664,8 +1675,14 @@ function fixNullEmptyToDashes ($str, $num) { return $return; } +// Translates the "pool type" into human-readable +function translatePoolType ($type) { + // Return "translation" + return sprintf("{--POOL_TYPE_%s--}", strtoupper($type)); +} + //----------------------------------------------------------------------------- -// Template Helper Functions +// Template helper functions for EL //----------------------------------------------------------------------------- // Color-switch helper function @@ -1678,7 +1695,7 @@ function doTemplateColorSwitch ($template, $clear = false, $return = true) { // 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) { @@ -1695,7 +1712,7 @@ function doTemplateExtensionRegistrationLink ($template, $dummy, $ext_name) { // Is the given extension non-productive? if (!isExtensionProductive($ext_name)) { // Non-productive code - $OUT = '{--ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK--}'; + $OUT = '{--ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK--}'; } // END - if // Return code