X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ftemplate-functions.php;h=6e2e4730660d0f0e803575ab0fc29e97f4435cb1;hp=37b557fb741e2579b534345888789b4deabab528;hb=ed3a88c0334600c7d7246480008c79716aa3f80b;hpb=61f8fd5807163143e88d19c5fc4208ccffb6e774 diff --git a/inc/template-functions.php b/inc/template-functions.php index 37b557fb74..6e2e473066 100644 --- a/inc/template-functions.php +++ b/inc/template-functions.php @@ -14,11 +14,9 @@ * $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 * + * Copyright (c) 2009 - 2011 by Mailer Developer Team * * For more information visit: http://www.mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -76,7 +74,9 @@ function fixEmptyContentToDashes ($str) { $str = trim($str); // Is the string empty? - if (empty($str)) $str = '---'; + if (empty($str)) { + $str = '---'; + } // END - if // Return string return $str; @@ -215,10 +215,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 < 7)) { // Init common variables $content = array(); $newContent = ''; @@ -240,10 +240,22 @@ function doFinalCompilation ($code, $insertComments = true, $enableCodes = true) // Use it again $code = $newContent; + // Compile the final code if insertComments is true + if ($insertComments == true) { + // ... because SQL queries shall keep OPEN_CONFIG and such in + $code = compileRawCode($code); + } // END - if + // Count round - $cnt++; + $count++; } // END - while + // Add debugging data in HTML code, if mode is enabled + if ((isDebugModeEnabled()) && ($insertComments === true)) { + // Add loop count + $code .= ''; + } // END - if + // Return the compiled code return $code; } @@ -261,15 +273,20 @@ 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()) { - // @TODO Remove this sanity-check if all is fine - if (!is_bool($return)) debug_report_bug(__FUNCTION__, __LINE__, 'return is not bool (' . gettype($return) . ')'); +function loadTemplate ($template, $return = false, $content = array(), $compileCode = true) { + if (!is_bool($return)) { + // @TODO Remove this sanity-check if all is fine + 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) . ')'); + } // Set current template $GLOBALS['current_template'] = $template; // Do we have cache? - if ((isDebuggingTemplateCache() === false) && (isTemplateCached($template))) { + if ((!isDebuggingTemplateCache()) && (isTemplateCached($template))) { // Evaluate the cache eval(readTemplateCache($template)); } elseif (!isset($GLOBALS['template_eval'][$template])) { @@ -278,11 +295,10 @@ 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()); - $extraPath = detectExtraTemplatePath($template);; + $extraPath = detectExtraTemplatePath($template); // Generate FQFN $FQFN = $basePath . $extraPath . $template . '.tpl'; @@ -310,29 +326,32 @@ function loadTemplate ($template, $return = false, $content = array()) { $ret = '' . $GLOBALS['tpl_content'][$template] . ''; // Prepare eval() command - $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileCode(escapeQuotes($ret)) . '";'; + $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 - $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['tpl_content'][$template])) . '");'; + $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 - $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'][$template])) . '");'; + $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'][$template]), false, true, true, $compileCode) . '");'; } - } else { + } elseif (isHtmlOutputMode()) { // Add surrounding HTML comments to help finding bugs faster $ret = '' . $GLOBALS['tpl_content'][$template] . ''; - $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileRawCode(escapeQuotes($ret)) . '";'; + $GLOBALS['template_eval'][$template] = '$ret = "' . getColorSwitchCode($template) . compileRawCode(escapeQuotes($ret), false, true, true, $compileCode) . '";'; + } else { + // JavaScript again + $GLOBALS['template_eval'][$template] = '$ret = decodeEntities("' . compileRawCode(escapeJavaScriptQuotes($GLOBALS['tpl_content'][$template]), false, true, true, $compileCode) . '");'; } // END - if } elseif ((isAdmin()) || ((isInstalling()) && (!isInstalled()))) { // Only admins shall see this warning or when installation mode is active $ret = '
- {--TEMPLATE_404--} + {--TEMPLATE_404--}
(' . $template . ')
- {--TEMPLATE_CONTENT--} + {--TEMPLATE_CONTENT--}:
' . print_r($content, true) . '
'; } else { @@ -418,7 +437,8 @@ function detectExtraTemplatePath ($template) { } // Loads an email template and compiles it -function loadEmailTemplate ($template, $content = array(), $userid = '0') { +function loadEmailTemplate ($template, $content = array(), $userid = NULL, $loadUserData = true) { + // @TODO $DATA is deprecated and should be avoided and replaced with $content global $DATA; // Make sure all template names are lowercase! @@ -432,7 +452,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'] = '{%config,createFancyTime=auto_purge%}'; } else { // Missing entry $content['expiration'] = '{--MAIL_NO_CONFIG_AUTO_PURGE--}'; @@ -440,25 +460,33 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') { } // END - if // Load user's data - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "UID={$userid},template={$template},content[]=".gettype($content)); + //* 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 if ((isExtensionActive('nickname')) && (isNicknameUsed($userid))) { - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "NICKNAME!
"); // Load by nickname + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - NICKNAME!'); fetchUserData($userid, 'nickname'); + } elseif (isNicknameUsed($userid)) { + // Non-number characters entered but no ext-nickname found + debug_report_bug(__FUNCTION__, __LINE__, 'userid=' . $userid . ': is no id number and ext-nickname is gone.'); } else { - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "NO-NICK!
"); - /// Load by userid + // Load by userid + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - USERID!'); fetchUserData($userid); } // Merge data if valid - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "content()=".count($content)." - PRE
"); - if (isUserDataValid()) { + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'content()=' . count($content) . ' - PRE!'); + if ((isUserDataValid()) && ($loadUserData === true)) { + // It is valid $content = merge_array($content, getUserDataArray()); + + // But we don't like hashed passwords be mailed + unset($content['password']); } // END - if - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "content()=".count($content)." - AFTER
"); + + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'content()=' . count($content) . ' - AFTER!'); } // END - if // Base directory @@ -486,14 +514,14 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') { $GLOBALS['tpl_content'][$template] = '$newContent = decodeEntities("' . compileRawCode(escapeQuotes($GLOBALS['tpl_content'][$template])) . '");'; eval($GLOBALS['tpl_content'][$template]); } elseif (!empty($template)) { - // Template file not found! + // Template file not found $newContent = '
{--TEMPLATE_404--}: ' . $template . '
- {--TEMPLATE_CONTENT--} + {--TEMPLATE_CONTENT--}:
' . print_r($content, true) . '
- {--TEMPLATE_DATA--} + {--TEMPLATE_DATA--}:
' . print_r($DATA, true) . '
'; @@ -544,14 +572,14 @@ function getMenuCssClasses ($data) { } // Generate XHTML code for the CAPTCHA -function generateCaptchaCode ($code, $type, $DATA, $userid) { - return 'Code ' . $code . ''; +function generateCaptchaCode ($code, $type, $type, $userid) { + return 'Code ' . $code . ''; } // Compiles the given HTML/mail code -function compileCode ($code, $simple = false, $constants = true, $full = true) { - // Is the code a string? - if (!is_string($code)) { +function compileCode ($code, $simple = false, $constants = true, $full = true, $compileCode = true) { + // Is the code a string or should we not compile? + if ((!is_string($code)) || ($compileCode === false)) { // Silently return it return $code; } // END - if @@ -577,9 +605,9 @@ function compileCode ($code, $simple = false, $constants = true, $full = true) { // Compiles the code (use compileCode() only for HTML because of the comments) // @TODO $simple/$constants are deprecated -function compileRawCode ($code, $simple = false, $constants = true, $full = true) { - // Is the code a string? - if (!is_string($code)) { +function compileRawCode ($code, $simple = false, $constants = true, $full = true, $compileCode = true) { + // Is the code a string or shall we not compile? + if ((!is_string($code)) || ($compileCode === false)) { // Silently return it return $code; } // END - if @@ -588,7 +616,9 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true $secChars = $GLOBALS['url_chars']; // Select full set of chars to replace when we e.g. want to compile URLs - if ($full === true) $secChars = $GLOBALS['security_chars']; + if ($full === true) { + $secChars = $GLOBALS['security_chars']; + } // END - if // Compile more through a filter $code = runFilterChain('compile_code', $code); @@ -597,14 +627,11 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true $code = str_replace('{--', '{%message,', str_replace('--}', '%}', $code)); // Compile QUOT and other non-HTML codes - foreach ($secChars['to'] as $k => $to) { - // Do the reversed thing as in inc/libs/security_functions.php - $code = str_replace($to, $secChars['from'][$k], $code); - } // END - foreach + $code = str_replace($secChars['to'], $secChars['from'], $code); // Find $content[bla][blub] entries - // @TODO Do only use $content and deprecate $GLOBALS and $DATA in templates - preg_match_all('/\$(content|GLOBALS|DATA)((\[([a-zA-Z0-9-_]+)\])*)/', $code, $matches); + // @TODO Do only use $content and deprecate $DATA in templates + preg_match_all('/\$(content|DATA)((\[([a-zA-Z0-9-_]+)\])*)/', $code, $matches); // Are some matches found? if ((count($matches) > 0) && (count($matches[0]) > 0)) { @@ -620,31 +647,36 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true $test = substr($found, 0, strlen($match)); // Does this entry exist? - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "found={$found},match={$match},set={$set}
"); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'found=' . $found . ',match=' . $match . ',set=' . $set); if ($test == $match) { - // Match found! - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "fuzzyFound!
"); + // Match found + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'fuzzyFound!'); $fuzzyFound = true; break; } // END - if } // END - foreach // Skip this entry? - if ($fuzzyFound === true) continue; + if ($fuzzyFound === true) { + continue; + } // END - if // Take all string elements if ((is_string($matches[4][$key])) && (!isset($matchesFound[$match])) && (!isset($matchesFound[$key.'_' . $matches[4][$key]]))) { // Replace it in the code - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "key={$key},match={$match}
"); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',match=' . $match); $newMatch = str_replace('[', "['", str_replace(']', "']", $match)); $code = str_replace($match, '".' . $newMatch . '."', $code); $matchesFound[$key . '_' . $matches[4][$key]] = 1; - $matchesFound[$match] = 1; + $matchesFound[$match] = true; } elseif (!isset($matchesFound[$match])) { // Not yet replaced! - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "match={$match}
"); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'match=' . $match); $code = str_replace($match, '".' . $match . '."', $code); $matchesFound[$match] = 1; + } else { + // Everthing else should be a least logged + logDebugMessage(__FUNCTION__, __LINE__, 'match=' . $match . ',key=' . $key); } } // END - foreach } // END - if @@ -654,7 +686,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') { @@ -691,7 +723,7 @@ function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 're $year = getYear(); // Use configured min age or fixed? - if (isExtensionInstalledAndNewer('order', '0.2.1')) { + if (isExtensionInstalledAndNewer('other', '0.2.1')) { // Configured $startYear = $year - getConfig('min_age'); } else { @@ -718,7 +750,7 @@ function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 're // Get current year and subtract the configured minimum age $OUT .= ''; // Calculate earliest year depending on extension version - if (isExtensionInstalledAndNewer('order', '0.2.1')) { + if (isExtensionInstalledAndNewer('other', '0.2.1')) { // Use configured minimum age $year = getYear() - getConfig('min_age'); } else { @@ -769,9 +801,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'; @@ -781,26 +813,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; } @@ -811,10 +841,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 @@ -822,6 +852,7 @@ function generateImageOrCode ($img_code, $headerSent = true) { // Remove image from memory imagedestroy($image); } + // Create selection box or array of splitted timestamp function createTimeSelections ($timestamp, $prefix = '', $display = '', $align = 'center', $return_array=false) { // Do not continue if ONE_DAY is absend @@ -845,7 +876,9 @@ 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(); + } // END - switch // First of all years... $Y = abs(floor($timestamp / (31536000 + $SWITCH))); @@ -854,19 +887,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? @@ -1028,7 +1061,9 @@ function createTimeSelections ($timestamp, $prefix = '', $display = '', $align = // Generate a list of administrative links to a given userid function generateMemberAdminActionLinks ($userid) { // Make sure userid is a number - if ($userid != bigintval($userid)) debug_report_bug(__FUNCTION__, __LINE__, 'userid is not a number!'); + if ($userid != bigintval($userid)) { + debug_report_bug(__FUNCTION__, __LINE__, 'userid is not a number!'); + } // END - if // Define all main targets $targetArray = array('del_user', 'edit_user', 'lock_user', 'add_points', 'sub_points'); @@ -1040,19 +1075,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); @@ -1060,6 +1101,12 @@ function generateMemberAdminActionLinks ($userid) { $OUT .= '--}|'; } // END - foreach + // Add special link, in case of the account is unconfirmed + if ($status == 'UNCONFIRMED') { + // Add it + $OUT .= '{--ADMIN_USER_ACTION_LINK_CONFIRM_ACCOUNT--}|'; + } // END - if + // Finish navigation link $OUT = substr($OUT, 0, -1) . ']'; @@ -1084,9 +1131,6 @@ function generateEmailLink ($email, $table = 'admins') { $EMAIL = generateSponsorEmailLink($email); } - // Shall I close the link when there is no admin? - if ((!isAdmin()) && ($EMAIL == $email)) $EMAIL = '#'; // Closed! - // Return email link return $EMAIL; } @@ -1094,28 +1138,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 @@ -1227,7 +1271,9 @@ function handleCodeMessage () { $ext = 'unknown'; // Is extension given? - if (isGetRequestParameterSet('ext')) $ext = getRequestParameter('ext'); + if (isGetRequestParameterSet('ext')) { + $ext = getRequestParameter('ext'); + } // END - if // Convert the 'code' parameter from URL to a human-readable message $message = getMessageFromErrorCode(getRequestParameter('code')); @@ -1237,6 +1283,27 @@ function handleCodeMessage () { } // END - if } +// Generates a 'extension foo out-dated' message +function generateExtensionOutdatedMessage ($ext_name, $ext_ver) { + // Is the extension empty? + if (empty($ext_name)) { + // This should not happen + debug_report_bug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.'); + } // END - if + + // Default message + $message = '{%message,EXTENSION_PROBLEM_EXTENSION_OUTDATED=' . $ext_name . '%}'; + + // Is an admin logged in? + if (isAdmin()) { + // Then output admin message + $message = sprintf(getMessage('ADMIN_EXTENSION_PROBLEM_EXTENSION_INACTIVE'), $ext_name, $ext_name, $ext_ver); + } // END - if + + // Return prepared message + return $message; +} + // Generates a 'extension foo inactive' message function generateExtensionInactiveMessage ($ext_name) { // Is the extension empty? @@ -1246,12 +1313,12 @@ function generateExtensionInactiveMessage ($ext_name) { } // END - if // Default message - $message = getMaskedMessage('EXTENSION_PROBLEM_EXTENSION_INACTIVE', $ext_name); + $message = '{%message,EXTENSION_PROBLEM_EXTENSION_INACTIVE=' . $ext_name . '%}'; // Is an admin logged in? if (isAdmin()) { // Then output admin message - $message = getMaskedMessage('ADMIN_EXTENSION_PROBLEM_EXTENSION_INACTIVE', $ext_name); + $message = '{%message,ADMIN_EXTENSION_PROBLEM_EXTENSION_INACTIVE=' . $ext_name . '%}'; } // END - if // Return prepared message @@ -1267,12 +1334,12 @@ function generateExtensionNotInstalledMessage ($ext_name) { } // END - if // Default message - $message = getMaskedMessage('EXTENSION_PROBLEM_EXTENSION_NOT_INSTALLED', $ext_name); + $message = '{%message,EXTENSION_PROBLEM_EXTENSION_NOT_INSTALLED=' . $ext_name . '%}'; // Is an admin logged in? if (isAdmin()) { // Then output admin message - $message = getMaskedMessage('ADMIN_EXTENSION_PROBLEM_EXTENSION_NOT_INSTALLED', $ext_name); + $message = '{%message,ADMIN_EXTENSION_PROBLEM_EXTENSION_NOT_INSTALLED=' . $ext_name . '%}'; } // END - if // Return prepared message @@ -1311,18 +1378,18 @@ function linenumberCode ($code) { $count_lines = count($codeE); $r = 'Line | Code:
'; - foreach($codeE as $line => $c) { + foreach ($codeE as $line => $c) { $r .= '
'; if ($count_lines == 1) { $r .= 1; } else { - $r .= ($line == ($count_lines - 1)) ? '' : ($line+1); + $r .= ($line == ($count_lines - 1)) ? '' : ($line+1); } $r .= '|'; // Add code $r .= '' . encodeEntities($c) . '
'; - } + } // END - foreach return '
' . $r . '
'; } @@ -1372,11 +1439,14 @@ function determinePageTitle () { // Installation mode $pageTitle = '{--INSTALLER_OF_MAILER--}'; } else { - // Configuration not found! + // Configuration not found $pageTitle = '{--NO_CONFIG_FOUND_TITLE--}'; // Do not add the fatal message in installation mode - if ((!isInstalling()) && (!isConfigurationLoaded())) addFatalMessage(__FUNCTION__, __LINE__, '{--NO_CONFIG_FOUND--}'); + if ((!isInstalling()) && (!isConfigurationLoaded())) { + // Please report this + debug_report_bug(__FUNCTION__, __LINE__, 'No configuration data found!'); + } // END - if } // Return title @@ -1439,7 +1509,7 @@ function escapeQuotes ($str, $single = false) { $str = addslashes($str); } else { // Remove escaping of single quotes - $str = str_replace("\'", "'", $str); + $str = str_replace("\\'", "'", $str); // Escape only double-quotes but prevent double-quoting $str = str_replace("\\\\", "\\", str_replace('"', "\\\"", $str)); @@ -1461,6 +1531,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 @@ -1524,61 +1597,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['userid']))) { // Send member mail - sendEmail($content['email'], $sub_mem, $message); + sendEmail($content['userid'], $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); + displayMessage($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 @@ -1637,8 +1708,8 @@ function generateMetaDescriptionCode () { $GLOBALS['page_header'] .= ''; } // END - if - // Remove depth - unset($GLOBALS['ref_level']); + // Initialize referal system + initReferalSystem(); } // Generates an FQFN for template cache from the given template name @@ -1673,8 +1744,35 @@ 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)); +} + +// Displays given message in admin_settings_saved template +function displayMessage ($message, $return = false) { + // Load the template + return loadTemplate('admin_settings_saved', $return, $message); +} + +// Generates a selection box for (maybe) given gender +function generateGenderSelectionBox ($selectedGender = '') { + // Start the HTML code + $out = ''; + + // Return the code + return $out; +} + //----------------------------------------------------------------------------- -// Template Helper Functions +// Template helper functions for EL //----------------------------------------------------------------------------- // Color-switch helper function @@ -1687,7 +1785,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) { @@ -1698,18 +1796,30 @@ function doTemplateColorSwitch ($template, $clear = false, $return = true) { // Helper function for extension registration link function doTemplateExtensionRegistrationLink ($template, $dummy, $ext_name) { - // Default is all productive - $OUT = '{--ADMIN_REGISTER_EXTENSION--}'; + // Default is all non-productive + $OUT = '{--ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK--}'; // Is the given extension non-productive? - if (!isExtensionProductive($ext_name)) { - // Non-productive code - $OUT = '{--ADMIN_EXTENSION_IS_NON_PRODUCTIVE_LINK--}'; + if (isExtensionProductive($ext_name)) { + // Productive code + $OUT = '{--ADMIN_REGISTER_EXTENSION--}'; } // END - if // Return code return $OUT; } +// Helper function to create bonus mail admin links +function doTemplateAdminBonusMailLinks ($template, $dummy, $bonusId) { + // Call the inner function + return generateAdminMailLinks('bid', $bonusId); +} + +// Helper function to create member mail admin links +function doTemplateAdminMemberMailLinks ($template, $dummy, $mailId) { + // Call the inner function + return generateAdminMailLinks('mid', $mailId); +} + // [EOF] ?>