X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=7838ec88620947b87d2cc7c6bb17e64386358bf7;hp=6e3cda3de9dad272524e41e5964431122e6f1cbe;hb=f57261751b221bd64a7dfe96d7a90404e6974d23;hpb=9642d17a028f3e7fdc57fa12e5dbd7129f166816 diff --git a/inc/functions.php b/inc/functions.php index 6e3cda3de9..7838ec8862 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -49,10 +49,6 @@ function outputHtml ($htmlCode, $newLine = true) { $GLOBALS['output'] = ''; } // END - if - // Transfer username - $username = getMessage('USERNAME_UNKNOWN'); - if (isset($GLOBALS['username'])) $username = getUsername(); - // Do we have HTML-Code here? if (!empty($htmlCode)) { // Yes, so we handle it as you have configured @@ -85,7 +81,7 @@ function outputHtml ($htmlCode, $newLine = true) { default: // Huh, something goes wrong or maybe you have edited config.php ??? - app_die(__FUNCTION__, __LINE__, '{--FATAL_ERROR--}: {--LANG_NO_RENDER_DIRECT--}'); + debug_report_bug(__FUNCTION__, __LINE__, '{--FATAL_ERROR--}: {--LANG_NO_RENDER_DIRECT--}'); break; } // END - switch } elseif ((getPhpCaching() == 'on') && ((!isset($GLOBALS['header'])) || (count($GLOBALS['header']) == 0))) { @@ -126,7 +122,7 @@ function sendHttpHeaders () { $now = gmdate('D, d M Y H:i:s') . ' GMT'; // Send HTTP header - sendHeader('HTTP/1.1 200 OK'); + sendHeader('HTTP/1.1 ' . getHttpStatus()); // General headers for no caching sendHeader('Expires: ' . $now); // RFC2616 - Section 14.21 @@ -140,37 +136,11 @@ function sendHttpHeaders () { // Compiles the final output function compileFinalOutput () { - // Init counter - $cnt = 0; - // Add page header and footer addPageHeaderFooter(); - // Compile all out - while (((strpos($GLOBALS['output'], '{--') !== false) || (strpos($GLOBALS['output'], '{DQUOTE}') !== false) || (strpos($GLOBALS['output'], '{!') !== false) || (strpos($GLOBALS['output'], '{?') !== false) || (strpos($GLOBALS['output'], '{%') !== false)) && ($cnt < 3)) { - // Init common variables - $content = array(); - $newContent = ''; - - // Compile it - //* DEBUG: */ print '
'.htmlentities($GLOBALS['output']).'
'; - $eval = '$newContent = "' . str_replace('{DQUOTE}', '"', compileCode(escapeQuotes($GLOBALS['output']))) . '";'; - //* DEBUG: */ die('
'.htmlentities($eval).'
'); - eval($eval); - //* DEBUG: */ die('
'.htmlentities($newContent).'
'); - - // Was that eval okay? - if (empty($newContent)) { - // Something went wrong! - debug_report_bug('Evaluation error:
' . linenumberCode($eval) . '
', false); - } // END - if - - // Use it again - $GLOBALS['output'] = $newContent; - - // Count round - $cnt++; - } // END - while + // Do the final compilation + $GLOBALS['output'] = doFinalCompilation($GLOBALS['output']); // Extension 'rewrite' installed? if ((isExtensionActive('rewrite')) && (getOutputMode() != 1)) { @@ -199,6 +169,44 @@ function compileFinalOutput () { flushHeaders(); } +// Main compilation loop +function doFinalCompilation ($code, $insertComments = true) { + // Insert comments? (Only valid with HTML templates, of course) + enableTemplateHtml($insertComments); + + // Init counter + $cnt = 0; + + // Compile all out + while (((strpos($code, '{--') !== false) || (strpos($code, '{DQUOTE}') !== false) || (strpos($code, '{?') !== false) || (strpos($code, '{%') !== false)) && ($cnt < 3)) { + // Init common variables + $content = array(); + $newContent = ''; + + // Compile it + //* DEBUG: */ debugOutput('
'.htmlentities($code).'
'); + $eval = '$newContent = "' . str_replace('{DQUOTE}', '"', compileCode(escapeQuotes($code))) . '";'; + //* DEBUG: */ if ($insertComments) die('
'.linenumberCode($eval).'
'); + eval($eval); + //* DEBUG: */ die('
'.htmlentities($newContent).'
'); + + // Was that eval okay? + if (empty($newContent)) { + // Something went wrong! + debug_report_bug(__FUNCTION__, __LINE__, 'Evaluation error:
' . linenumberCode($eval) . '
', false); + } // END - if + + // Use it again + $code = $newContent; + + // Count round + $cnt++; + } // END - while + + // Return the compiled code + return $code; +} + // Output the raw HTML code function outputRawCode ($htmlCode) { // Output stripped HTML code to avoid broken JavaScript code, etc. @@ -256,7 +264,7 @@ function getTotalFatalErrors () { // 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('return is not bool (' . gettype($return) . ')'); + if (!is_bool($return)) debug_report_bug(__FUNCTION__, __LINE__, 'return is not bool (' . gettype($return) . ')'); // @TODO Try to rewrite all $DATA to $content global $DATA; @@ -266,9 +274,6 @@ function loadTemplate ($template, $return = false, $content = array()) { // Evaluate the cache eval(readTemplateCache($template)); } elseif (!isset($GLOBALS['template_eval'][$template])) { - // Add more variables which you want to use in your template files - $username = getUsername(); - // Make all template names lowercase $template = strtolower($template); @@ -301,7 +306,7 @@ function loadTemplate ($template, $return = false, $content = array()) { // 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) || (strpos($GLOBALS['tpl_content'], '{%') !== false)) { + if ((strpos($GLOBALS['tpl_content'], '$') !== false) || (strpos($GLOBALS['tpl_content'], '{--') !== false) || (strpos($GLOBALS['tpl_content'], '{?') !== false) || (strpos($GLOBALS['tpl_content'], '{%') !== false)) { // Normal HTML output? if (getOutputMode() == '0') { // Add surrounding HTML comments to help finding bugs faster @@ -324,27 +329,31 @@ function loadTemplate ($template, $return = false, $content = array()) { // Cache the eval() command here $GLOBALS['template_eval'][$template] = $eval; - - // Eval the code - eval($GLOBALS['template_eval'][$template]); } elseif ((isAdmin()) || ((isInstalling()) && (!isInstalled()))) { // Only admins shall see this warning or when installation mode is active - $ret = '
{--TEMPLATE_404--}
-(' . $template . ')
-
-{--TEMPLATE_CONTENT--} -
' . print_r($content, true) . '
-{--TEMPLATE_DATA--} -
' . print_r($DATA, true) . '
-

'; + $ret = '
+ {--TEMPLATE_404--} +
+
+ (' . $template . ') +
+
+ {--TEMPLATE_CONTENT--} +
' . print_r($content, true) . '
+ {--TEMPLATE_DATA--} +
' . print_r($DATA, true) . '
+
'; } else { // No file! $GLOBALS['template_eval'][$template] = '404'; } - } else { + } + + // Code set? + if ((isset($GLOBALS['template_eval'][$template])) && ($GLOBALS['template_eval'][$template] != '404')) { // Eval the code eval($GLOBALS['template_eval'][$template]); - } + } // END - if // Do we have some content to output or return? if (!empty($ret)) { @@ -445,7 +454,7 @@ 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 (($userid > 0) && (is_array($content))) { // If nickname extension is installed, fetch nickname as well if ((isExtensionActive('nickname')) && (isNicknameUsed($userid))) { @@ -466,9 +475,6 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') { //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "content()=".count($content)." - AFTER
"); } // END - if - // Translate M to male or F to female if present - if (isset($content['gender'])) $content['gender'] = translateGender($content['gender']); - // Overwrite email from data if present if (isset($content['email'])) $email = $content['email']; @@ -502,12 +508,15 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') { eval($GLOBALS['tpl_content']); } elseif (!empty($template)) { // Template file not found! - $newContent = '{--TEMPLATE_404--}: ' . $template . '
-{--TEMPLATE_CONTENT--} -
' . print_r($content, true) . '
-{--TEMPLATE_DATA--} -
' . print_r($DATA, true) . '
-

'; + $newContent = '
+ {--TEMPLATE_404--}: ' . $template . ' +
+
+ {--TEMPLATE_CONTENT--} +
' . print_r($content, true) . '
+ {--TEMPLATE_DATA--} +
' . print_r($DATA, true) . '
+
'; // Debug mode not active? Then remove the HTML tags if (!isDebugModeEnabled()) $newContent = secureString($newContent); @@ -564,7 +573,7 @@ function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = ' //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "TO={$toEmail}
"); // Check for PHPMailer or debug-mode - if (!checkPhpMailerUsage()) { + if ((!checkPhpMailerUsage()) || (isDebugModeEnabled())) { // Not in PHPMailer-Mode if (empty($mailHeader)) { // Load email header template @@ -573,24 +582,12 @@ function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = ' // Append header $mailHeader .= loadEmailTemplate('header'); } - } elseif (isDebugModeEnabled()) { - if (empty($mailHeader)) { - // Load email header template - $mailHeader = loadEmailTemplate('header'); - } else { - // Append header - $mailHeader .= loadEmailTemplate('header'); - } - } - - // Compile "TO" - eval('$toEmail = "' . compileRawCode(escapeQuotes($toEmail)) . '";'); - - // Compile "MSG" - eval('$message = "' . str_replace('$', '$', compileRawCode(escapeQuotes($message))) . '";'); + } // END - if // Fix HTML parameter (default is no!) if (empty($isHtml)) $isHtml = 'N'; + + // Debug mode enabled? if (isDebugModeEnabled()) { // In debug mode we want to display the mail instead of sending it away so we can debug this part outputHtml('
@@ -599,6 +596,9 @@ To      : ' . htmlentities(utf8_decode($toEmail)) . '
 Subject : ' . htmlentities(utf8_decode($subject)) . '
 Message : ' . htmlentities(utf8_decode($message)) . '
 
'); + + // This is always fine + return true; } elseif (($isHtml == 'Y') && (isExtensionActive('html_mail'))) { // Send mail as HTML away return sendHtmlEmail($toEmail, $subject, $message, $mailHeader); @@ -609,6 +609,9 @@ Message : ' . htmlentities(utf8_decode($message)) . ' // Problem found! return sendRawEmail(getConfig('WEBMASTER'), '[PROBLEM:]' . $subject, $message, $mailHeader); } + + // Why did we end up here? This should not happen + debug_report_bug(__FUNCTION__, __LINE__, 'Ending up: template=' . $template); } // Check to use wether legacy mail() command or PHPMailer class @@ -621,10 +624,10 @@ function checkPhpMailerUsage() { // Send out a raw email with PHPMailer class or legacy mail() command function sendRawEmail ($toEmail, $subject, $message, $from) { // Just compile all again, to put out all configs, etc. - eval('$toEmail = decodeEntities("' . compileRawCode(escapeQuotes($toEmail)) . '");'); - eval('$subject = decodeEntities("' . compileRawCode(escapeQuotes($subject)) . '");'); - eval('$message = decodeEntities("' . compileRawCode(escapeQuotes($message)) . '");'); - eval('$from = decodeEntities("' . compileRawCode(escapeQuotes($from)) . '");'); + eval('$toEmail = decodeEntities("' . doFinalCompilation(compileRawCode(escapeQuotes($toEmail)), false) . '");'); + eval('$subject = decodeEntities("' . doFinalCompilation(compileRawCode(escapeQuotes($subject)), false) . '");'); + eval('$message = decodeEntities("' . doFinalCompilation(compileRawCode(escapeQuotes($message)), false) . '");'); + eval('$from = decodeEntities("' . doFinalCompilation(compileRawCode(escapeQuotes($from)) , false) . '");'); // Shall we use PHPMailer class or legacy mode? if (checkPhpMailerUsage()) { @@ -761,7 +764,7 @@ function translateYesNo ($yn) { // Log unknown value logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unknown value %s. Expected Y/N!", $yn)); break; - } + } // END - switch // Return it return $translated; @@ -821,7 +824,7 @@ function translateComma ($dotted, $cut = true, $max = '0') { default: // All others $dotted = number_format($dotted, $maxComma, '.', ','); break; - } + } // END - switch // Return translated value return $dotted; @@ -839,7 +842,7 @@ function translateGender ($gender) { case 'C': $ret = getMessage('GENDER_C'); break; default: // Please report bugs on unknown genders - debug_report_bug(sprintf("Unknown gender %s detected.", $gender)); + debug_report_bug(__FUNCTION__, __LINE__, sprintf("Unknown gender %s detected.", $gender)); break; } // END - switch @@ -864,7 +867,7 @@ function translateUserStatus ($status) { default: // Please report all unknown status - debug_report_bug(sprintf("Unknown status %s detected.", $status)); + debug_report_bug(__FUNCTION__, __LINE__, sprintf("Unknown status %s detected.", $status)); break; } // END - switch @@ -872,6 +875,53 @@ function translateUserStatus ($status) { return $ret; } +// "Translates" 'visible' and 'locked' to a CSS class +function translateMenuVisibleLocked ($content, $prefix = '') { + // Translate 'visible' and keep an eye on the prefix + switch ($content['visible']) { + // Should be visible + case 'Y': $content['visible_css'] = $prefix . 'menu_visible' ; break; + case 'N': $content['visible_css'] = $prefix . 'menu_invisible'; break; + default: + // Please report this + debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported visible value detected. content=
' . print_r($content, true) . '
'); + break; + } // END - switch + + // Translate 'locked' and keep an eye on the prefix + switch ($content['locked']) { + // Should be locked + case 'Y': $content['locked_css'] = $prefix . 'menu_locked' ; break; + case 'N': $content['locked_css'] = $prefix . 'menu_unlocked'; break; + default: + // Please report this + debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported locked value detected. content=
' . print_r($content, true) . '
'); + break; + } // END - switch + + // Return the resulting array + return $content; +} + +// "Getter" for menu CSS classes, mainly used in templates +function getMenuCssClasses ($data) { + // $data needs to be converted into an array + $content = explode('|', $data); + + // Non-existent index 2 will happen in menu blocks + if (!isset($content[2])) $content[2] = ''; + + // Re-construct the array: 0=visible,1=locked,2=prefix + $content['visible'] = $content[0]; + $content['locked'] = $content[1]; + + // Call our "translator" function + $content = translateMenuVisibleLocked($content, $content[2]); + + // Return CSS classes + return ($content['visible_css'] . ' ' . $content['locked_css']); +} + // Generates an URL for the dereferer function generateDerefererUrl ($URL) { // Don't de-refer our own links! @@ -954,26 +1004,32 @@ function redirectToUrl ($URL, $allowSpider = true) { } // END - if // Three different ways to debug... - //* DEBUG: */ debug_report_bug(sprintf("%s[%s:] URL=%s", __FUNCTION__, __LINE__, $URL)); + //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, sprintf("%s[%s:] URL=%s", __FUNCTION__, __LINE__, $URL)); //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'URL=' . $URL); //* DEBUG: */ die($URL); // Simple probe for bots/spiders from search engines if ((isSpider()) && ($allowSpider === true)) { - // Secure the URL against bad things such als HTML insertions and so on... - $URL = secureString($URL); + // Set HTTP-Status + setHttpStatus('200 OK'); // Set content-type here to fix a missing array element setContentType('text/html'); // Output new location link as anchor - outputHtml('' . $URL . ''); + outputHtml('' . secureString($URL) . ''); } elseif (!headers_sent()) { + // Clear output buffer + clearOutputBuffer(); + // Clear own output buffer $GLOBALS['output'] = ''; + // Set header + setHttpStatus('302 Found'); + // Load URL when headers are not sent - sendHeader('Location: '.str_replace('&', '&', $URL)); + sendRawRedirect(doFinalCompilation(str_replace('&', '&', $URL), false)); } else { // Output error message loadInclude('inc/header.php'); @@ -987,17 +1043,8 @@ function redirectToUrl ($URL, $allowSpider = true) { // Wrapper for redirectToUrl but URL comes from a configuration entry function redirectToConfiguredUrl ($configEntry) { - // Get the URL - $URL = getConfig($configEntry); - - // Is this URL set? - if (is_null($URL)) { - // Then abort here - debug_report_bug(sprintf("Configuration entry %s is not set!", $configEntry)); - } // END - if - // Load the URL - redirectToUrl($URL); + redirectToUrl(getConfig($configEntry)); } // Compiles the given HTML/mail code @@ -1017,15 +1064,18 @@ function compileCode ($code, $simple = false, $constants = true, $full = true) { // Get timing $compiled = microtime(true); - // Add timing - $code .= ''; + // Add timing if enabled + if (isTemplateHtml()) { + // Add timing, this should be disabled in + $code .= ''; + } // END - if // Return compiled code return $code; } // Compiles the code (use compileCode() only for HTML because of the comments) -// @TODO $simple is deprecated +// @TODO $simple/$constants are deprecated function compileRawCode ($code, $simple = false, $constants = true, $full = true) { // Is the code a string? if (!is_string($code)) { @@ -1042,16 +1092,8 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true // Compile more through a filter $code = runFilterChain('compile_code', $code); - // Compile constants - if ($constants === true) { - // BEFORE 0.2.1 : Language and data constants - // WITH 0.2.1+ : Only language constants - $code = str_replace('{--', "\" . getMessage('", str_replace('--}', "') . \"", $code)); - - // BEFORE 0.2.1 : Not used - // WITH 0.2.1+ : Data constants - $code = str_replace('{!', "\" . constant('", str_replace('!}', "') . \"", $code)); - } // END - if + // Compile message strings + $code = str_replace('{--', '{%message,', str_replace('--}', '%}', $code)); // Compile QUOT and other non-HTML codes foreach ($secChars['to'] as $k => $to) { @@ -1090,7 +1132,7 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true if ($fuzzyFound === true) continue; // Take all string elements - if ((is_string($matches[4][$key])) && (!isset($matchesFound[$match])) && (!isset($matchesFound[$key."_" . $matches[4][$key]]))) { + 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}
"); $newMatch = str_replace('[', "['", str_replace(']', "']", $match)); @@ -1171,7 +1213,7 @@ function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 're $OUT .= ''; @@ -1341,7 +1383,7 @@ function bigintval ($num, $castValue = true, $abortOnMismatch = true) { // Has the whole value changed? if (('' . $ret . '' != '' . $num . '') && ($abortOnMismatch === true)) { // Log the values - debug_report_bug('Problem with number found. ret=' . $ret . ', num='. $num); + debug_report_bug(__FUNCTION__, __LINE__, 'Problem with number found. ret=' . $ret . ', num='. $num); } // END - if // Return result @@ -1353,7 +1395,7 @@ 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')) { // Stop execution of function here because of over-sized code length - debug_report_bug('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=' . getConfig('code_length')); } elseif ($headerSent === false) { // Return an HTML code here return 'Image'; @@ -1418,7 +1460,7 @@ function createTimeSelections ($timestamp, $prefix = '', $display = '', $align = // Calculate 2-seconds timestamp $stamp = round($timestamp); - //* DEBUG: */ print("*" . $stamp.'/' . $timestamp."*
"); + //* DEBUG: */ debugOutput('*' . $stamp .'/' . $timestamp . '*'); // Do we have a leap year? $SWITCH = '0'; @@ -1427,29 +1469,29 @@ function createTimeSelections ($timestamp, $prefix = '', $display = '', $align = $M2 = date('m', (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 = getConfig('ONE_DAY'); // First of all years... $Y = abs(floor($timestamp / (31536000 + $SWITCH))); - //* DEBUG: */ print("Y={$Y}
"); + //* DEBUG: */ debugOutput('Y=' . $Y); // Next months... $M = abs(floor($timestamp / 2628000 - $Y * 12)); - //* DEBUG: */ print("M={$M}
"); + //* 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))); - //* DEBUG: */ print("W={$W}
"); + //* 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)); - //* DEBUG: */ print("D={$D}
"); + //* 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)); - //* DEBUG: */ print("h={$h}
"); + //* 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)); - //* DEBUG: */ print("m={$m}
"); + //* 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)); - //* DEBUG: */ print("s={$s}
"); + //* DEBUG: */ debugOutput('s=' . $s); // Is seconds zero and time is < 60 seconds? if (($s == '0') && ($timestamp < 60)) { @@ -1671,62 +1713,6 @@ function createFancyTime ($stamp) { return $ret; } -// Generates a navigation row for listing emails -function addEmailNavigation ($PAGES, $offset, $show_form, $colspan, $return=false) { - $TOP = ''; - if ($show_form === false) { - $TOP = ' top'; - } // END - if - - $NAV = ''; - for ($page = 1; $page <= $PAGES; $page++) { - // Is the page currently selected or shall we generate a link to it? - if (($page == getRequestParameter('page')) || ((!isGetRequestParameterSet('page')) && ($page == 1))) { - // Is currently selected, so only highlight it - $NAV .= '-'; - } else { - // Open anchor tag and add base URL - $NAV .= ''; - } - $NAV .= $page; - if (($page == getRequestParameter('page')) || ((!isGetRequestParameterSet('page')) && ($page == 1))) { - // Is currently selected, so only highlight it - $NAV .= '-'; - } else { - // Close anchor tag - $NAV .= ''; - } - - // Add seperator if we have not yet reached total pages - if ($page < $PAGES) { - // Add it - $NAV .= '|'; - } // END - if - } // END - for - - // Define constants only once - $content['nav'] = $NAV; - $content['span'] = $colspan; - $content['top'] = $TOP; - - // Load navigation template - $OUT = loadTemplate('admin_email_nav_row', true, $content); - - if ($return === true) { - // Return generated HTML-Code - return $OUT; - } else { - // Output HTML-Code - outputHtml($OUT); - } -} - // Extract host from script name function extractHostnameFromUrl (&$script) { // Use default SERVER_URL by default... ;) So? @@ -1746,7 +1732,7 @@ function extractHostnameFromUrl (&$script) { if (isInString('/', $host)) $host = substr($host, 0, strpos($host, '/')); // Generate relative URL - //* DEBUG: */ print('SCRIPT=' . $script.'
'); + //* DEBUG: */ debugOutput('SCRIPT=' . $script); if (substr(strtolower($script), 0, 7) == 'http://') { // But only if http:// is in front! $script = substr($script, (strlen($url) + 7)); @@ -1755,7 +1741,7 @@ function extractHostnameFromUrl (&$script) { $script = substr($script, (strlen($url) + 8)); } - //* DEBUG: */ print('SCRIPT=' . $script.'
'); + //* DEBUG: */ debugOutput('SCRIPT=' . $script); if (substr($script, 0, 1) == '/') $script = substr($script, 1); // Return host name @@ -1869,7 +1855,7 @@ function sendRawRequest ($host, $request) { $resolver = new HostnameResolver(); // Open connection - //* DEBUG: */ die('SCRIPT=' . $script.'
'); + //* DEBUG: */ die('SCRIPT=' . $script); if ($useProxy === true) { // Resolve hostname into IP address $ip = $resolver->resolveHostname(compileRawCode(getConfig('proxy_host'))); @@ -1969,8 +1955,8 @@ function sendRawRequest ($host, $request) { } } // END - foreach - //* DEBUG: */ print('Request:
'.print_r($request, true).'
'); - //* DEBUG: */ print('Response:
'.print_r($response, true).'
'); + //* DEBUG: */ debugOutput('Request:
'.print_r($request, true).'
'); + //* DEBUG: */ debugOutput('Response:
'.print_r($response, true).'
'); // Proxy agent found or something went wrong? if (!isset($response[0])) { @@ -2012,7 +1998,7 @@ function setupProxyTunnel ($host, $resource) { // Add last new-line $proxyTunnel .= getConfig('HTTP_EOL'); - //* DEBUG: */ print('proxyTunnel=
' . $proxyTunnel.'
'); + //* DEBUG: */ debugOutput('proxyTunnel=
' . $proxyTunnel.'
'); // Write request fwrite($fp, $proxyTunnel); @@ -2054,11 +2040,11 @@ function isEmailValid ($email) { function isUrlValid ($URL, $compile=true) { // Trim URL a little $URL = trim(urldecode($URL)); - //* DEBUG: */ outputHtml($URL.'
'); + //* DEBUG: */ debugOutput($URL); // Compile some chars out... if ($compile === true) $URL = compileUriCode($URL, false, false, false); - //* DEBUG: */ outputHtml($URL.'
'); + //* DEBUG: */ debugOutput($URL); // Check for the extension filter if (isExtensionActive('filter')) { @@ -2074,7 +2060,7 @@ function isUrlValid ($URL, $compile=true) { // Generate a list of administrative links to a given userid function generateMemberAdminActionLinks ($userid, $status = '') { // Make sure userid is a number - if ($userid != bigintval($userid)) debug_report_bug('userid is not a number!'); + if ($userid != bigintval($userid)) debug_report_bug(__FUNCTION__, __LINE__, 'userid is not a number!'); // Define all main targets $targetArray = array('del_user', 'edit_user', 'lock_user', 'add_points', 'sub_points'); @@ -2084,7 +2070,7 @@ function generateMemberAdminActionLinks ($userid, $status = '') { foreach ($targetArray as $tar) { $OUT .= '' . __LINE__ . '): ' . $constName."-CACHE!
"); + //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '): ' . $constName."-CACHE!
"); $res = ($GLOBALS['cache_array']['const'][$constName] === true); } else { // Check constant - //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__ . '): ' . $constName."-RESOLVE!
"); + //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '): ' . $constName."-RESOLVE!
"); if (defined($constName)) { // Found! - //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__ . '): ' . $constName."-FOUND!
"); + //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '): ' . $constName."-FOUND!
"); $res = (constant($constName) === true); } // END - if @@ -2486,7 +2469,7 @@ function generateErrorCodeFromUserStatus ($status='') { // Back-ported from the new ship-simu engine. :-) function debug_get_printable_backtrace () { // Init variable - $backtrace = "
    \n"; + $backtrace = '
      '; // Get and prepare backtrace for output $backtraceArray = debug_backtrace(); @@ -2494,11 +2477,11 @@ function debug_get_printable_backtrace () { if (!isset($trace['file'])) $trace['file'] = __FUNCTION__; if (!isset($trace['line'])) $trace['line'] = __LINE__; if (!isset($trace['args'])) $trace['args'] = array(); - $backtrace .= "
    1. ".basename($trace['file']).":" . $trace['line'].", " . $trace['function'].'('.count($trace['args']).")
    2. \n"; + $backtrace .= '
    3. ' . basename($trace['file']) . ':' . $trace['line'].", " . $trace['function'] . '(' . count($trace['args']) . ')
    4. '; } // END - foreach // Close it - $backtrace .= "
    \n"; + $backtrace .= '
'; // Return the backtrace return $backtrace; @@ -2523,7 +2506,7 @@ function debug_get_mailable_backtrace () { } // Output a debug backtrace to the user -function debug_report_bug ($message = '', $sendEmail = true) { +function debug_report_bug ($F, $L, $message = '', $sendEmail = true) { // Is this already called? if (isset($GLOBALS[__FUNCTION__])) { // Other backtrace @@ -2546,21 +2529,22 @@ function debug_report_bug ($message = '', $sendEmail = true) { ); // @TODO Add a little more infos here - logDebugMessage(__FUNCTION__, __LINE__, strip_tags($message)); + logDebugMessage($F, $L, strip_tags($message)); } // END - if // Add output - $debug .= "Please report this bug at
http://bugs.mxchange.org and include the logfile from " . str_replace(getConfig('PATH'), '', getConfig('CACHE_PATH')) . "debug.log in your report (you can now attach files):
";
+	$debug .= 'Please report this bug at http://bugs.mxchange.org and include the logfile from ' . str_replace(getConfig('PATH'), '', getConfig('CACHE_PATH')) . 'debug.log in your report (you can now attach files):
';
 	$debug .= debug_get_printable_backtrace();
-	$debug .= "
\nRequest-URI: " . getRequestUri()."
\n"; - $debug .= "Thank you for finding bugs."; + $debug .= '
'; + $debug .= '
Request-URI: ' . getRequestUri() . '
'; + $debug .= '
Thank you for finding bugs.
'; // Send an email? (e.g. not wanted for evaluation errors) if (($sendEmail === true) && (!isInstallationPhase())) { // Prepare content $content = array( - 'message' => trim($message), - 'backtrace' => trim(debug_get_mailable_backtrace()) + 'message' => trim($message), + 'backtrace' => trim(debug_get_mailable_backtrace()) ); // Send email to webmaster @@ -2568,7 +2552,7 @@ function debug_report_bug ($message = '', $sendEmail = true) { } // END - if // And abort here - app_die(__FUNCTION__, __LINE__, $debug); + app_die($F, $L, $debug); } // Generates a ***weak*** seed @@ -2595,11 +2579,11 @@ function getMessageFromErrorCode ($code) { case getCode('COOKIES_DISABLED') : $message = getMessage('LOGIN_COOKIES_DISABLED'); break; case getCode('BEG_SAME_AS_OWN') : $message = getMessage('BEG_SAME_UID_AS_OWN'); break; case getCode('LOGIN_FAILED') : $message = getMessage('LOGIN_FAILED_GENERAL'); break; - case getCode('MODULE_MEM_ONLY') : $message = getMaskedMessage('MODULE_MEM_ONLY', getRequestParameter('mod')); break; + case getCode('MODULE_MEMBER_ONLY') : $message = getMaskedMessage('MODULE_MEMBER_ONLY', getRequestParameter('mod')); break; case getCode('OVERLENGTH') : $message = getMessage('MEMBER_TEXT_OVERLENGTH'); break; case getCode('URL_FOUND') : $message = getMessage('MEMBER_TEXT_CONTAINS_URL'); break; case getCode('SUBJ_URL') : $message = getMessage('MEMBER_SUBJ_CONTAINS_URL'); break; - case getCode('BLIST_URL') : $message = "{--MEMBER_URL_BLACK_LISTED--}
\n{--MEMBER_BLIST_TIME--}: ".generateDateTime(getRequestParameter('blist'), 0); break; + case getCode('BLIST_URL') : $message = '{--MEMBER_URL_BLACK_LISTED--}
{--MEMBER_BLIST_TIME--}: ' . generateDateTime(getRequestParameter('blist'), 0); break; case getCode('NO_RECS_LEFT') : $message = getMessage('MEMBER_SELECTED_MORE_RECS'); break; case getCode('INVALID_TAGS') : $message = getMessage('MEMBER_HTML_INVALID_TAGS'); break; case getCode('MORE_POINTS') : $message = getMessage('MEMBER_MORE_POINTS_NEEDED'); break; @@ -2615,7 +2599,7 @@ function getMessageFromErrorCode ($code) { if (isExtensionActive('mailid', true)) { $message = getMessage('ERROR_CONFIRMING_MAIL'); } else { - $message = getMaskedMessage('EXTENSION_PROBLEM_NOT_INSTALLED', 'mailid'); + $message = getMaskedMessage('EXTENSION_PROBLEM_EXTENSION_NOT_INSTALLED', 'mailid'); } break; @@ -2630,7 +2614,7 @@ function getMessageFromErrorCode ($code) { case getCode('URL_TLOCK'): // @TODO Move this SQL code into a function, let's say 'getTimestampFromPoolId($id) ? $result = SQL_QUERY_ESC("SELECT `timestamp` FROM `{?_MYSQL_PREFIX?}_pool` WHERE `id`=%s LIMIT 1", - array(bigintval(getRequestParameter('id'))), __FILE__, __LINE__); + array(bigintval(getRequestParameter('id'))), __FUNCTION__, __LINE__); // Load timestamp from last order list($timestamp) = SQL_FETCHROW($result); @@ -2744,7 +2728,7 @@ function isUrlValidSimple ($url) { // @TODO Are these convertions still required? $pat = str_replace('.', "\.", $pat); $pat = str_replace('@', "\@", $pat); - //* DEBUG: */ outputHtml($key."= " . $pat . '
'); + //* DEBUG: */ debugOutput($key."= " . $pat); } // END - if // Check if expression matches @@ -2773,12 +2757,12 @@ function changeDataInFile ($FQFN, $comment, $prefix, $suffix, $DATA, $seek=0) { $tmp = $FQFN . '.tmp'; // Open the source file - $fp = fopen($FQFN, 'r') or outputHtml('READ: ' . $FQFN . '
'); + $fp = fopen($FQFN, 'r') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot read. file=' . basename($FQFN)); // Is the resource valid? if (is_resource($fp)) { // Open temporary file - $fp_tmp = fopen($tmp, 'w') or outputHtml('WRITE: ' . $tmp . '
'); + $fp_tmp = fopen($tmp, 'w') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write. tmp=' . basename($tmp) . ',file=' . $FQFN); // Is the resource again valid? if (is_resource($fp_tmp)) { @@ -2827,7 +2811,7 @@ function changeDataInFile ($FQFN, $comment, $prefix, $suffix, $DATA, $seek=0) { } } else { // File not found, not readable or writeable - outputHtml('404: ' . $FQFN . '
'); + debug_report_bug(__FUNCTION__, __LINE__, 'File not readable/writeable. file=' . basename($FQFN)); } // An error was detected! @@ -2852,8 +2836,8 @@ function logDebugMessage ($funcFile, $line, $message, $force=true) { // Remove CRLF $message = str_replace("\r", '', str_replace("\n", '', $message)); - // Log this message away, we better don't call app_die() here to prevent an endless loop - $fp = fopen(getConfig('CACHE_PATH') . 'debug.log', 'a') or die(__FUNCTION__.'['.__LINE__.']: Cannot write logfile debug.log!'); + // Log this message away + $fp = fopen(getConfig('CACHE_PATH') . 'debug.log', 'a') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write logfile debug.log!'); fwrite($fp, date('d.m.Y|H:i:s', time()) . '|' . getModule(false) . '|' . basename($funcFile) . '|' . $line . '|' . $message . "\n"); fclose($fp); } // END - if @@ -3147,10 +3131,10 @@ function shutdown () { // Check if not in installation phase and the link is up if ((!isInstallationPhase()) && (SQL_IS_LINK_UP())) { // Close link - SQL_CLOSE(__FILE__, __LINE__); + SQL_CLOSE(__FUNCTION__, __LINE__); } elseif (!isInstallationPhase()) { // No database link - addFatalMessage(__FILE__, __LINE__, getMessage('NO_DB_LINK_SHUTDOWN')); + addFatalMessage(__FUNCTION__, __LINE__, getMessage('NO_DB_LINK_SHUTDOWN')); } // Stop executing here @@ -3165,7 +3149,7 @@ function initMemberId () { // Setter for member id function setMemberId ($memberid) { // We should not set member id to zero - if ($memberid == '0') debug_report_bug('Userid should not be set zero.'); + if ($memberid == '0') debug_report_bug(__FUNCTION__, __LINE__, 'Userid should not be set zero.'); // Set it secured $GLOBALS['member_id'] = bigintval($memberid); @@ -3218,7 +3202,7 @@ function getExtraTitle () { // Is the extra title set? if (!isExtraTitleSet()) { // No, then abort here - debug_report_bug('extra_title is not set!'); + debug_report_bug(__FUNCTION__, __LINE__, 'extra_title is not set!'); } // END - if // Return it @@ -3235,7 +3219,7 @@ function generateExtensionInactiveMessage ($ext_name) { // Is the extension empty? if (empty($ext_name)) { // This should not happen - debug_report_bug(__FUNCTION__ . ': Parameter ext is empty. This should not happen.'); + debug_report_bug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.'); } // END - if // Default message @@ -3256,7 +3240,7 @@ function generateExtensionNotInstalledMessage ($ext_name) { // Is the extension empty? if (empty($ext_name)) { // This should not happen - debug_report_bug(__FUNCTION__ . ': Parameter ext is empty. This should not happen.'); + debug_report_bug(__FUNCTION__, __LINE__, 'Parameter ext is empty. This should not happen.'); } // END - if // Default message @@ -3313,14 +3297,14 @@ function getArrayFromDirectory ($baseDir, $prefix, $fileIncludeDirs = false, $ad $files = array(); // Open directory - $dirPointer = opendir(getConfig('PATH') . $baseDir) or app_die(__FUNCTION__, __LINE__, 'Cannot read directory ' . basename($baseDir) . '.'); + $dirPointer = opendir(getConfig('PATH') . $baseDir) or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot read directory ' . basename($baseDir) . '.'); // Read all entries while ($baseFile = readdir($dirPointer)) { // Exclude '.', '..' and entries in $excludeArray automatically if (in_array($baseFile, $excludeArray, true)) { // Exclude them - //* DEBUG: */ outputHtml('excluded=' . $baseFile . '
'); + //* DEBUG: */ debugOutput('excluded=' . $baseFile); continue; } // END - if @@ -3334,9 +3318,9 @@ function getArrayFromDirectory ($baseDir, $prefix, $fileIncludeDirs = false, $ad // Check if the base filenname matches an exclusion pattern and if the pattern is not empty if ((!empty($excludePattern)) && (preg_match($excludePattern, $baseFile, $match))) { // These Lines are only for debugging!! - //* DEBUG: */ outputHtml('baseDir:' . $baseDir . '
'); - //* DEBUG: */ outputHtml('baseFile:' . $baseFile . '
'); - //* DEBUG: */ outputHtml('FQFN:' . $FQFN . '
'); + //* DEBUG: */ debugOutput('baseDir:' . $baseDir); + //* DEBUG: */ debugOutput('baseFile:' . $baseFile); + //* DEBUG: */ debugOutput('FQFN:' . $FQFN); // Exclude this one continue; @@ -3387,7 +3371,7 @@ function getArrayFromDirectory ($baseDir, $prefix, $fileIncludeDirs = false, $ad } } else { // We found .php file but should not search for them, why? - debug_report_bug('We should find files with extension=' . $extension . ', but we found a PHP script.'); + debug_report_bug(__FUNCTION__, __LINE__, 'We should find files with extension=' . $extension . ', but we found a PHP script.'); } } elseif (substr($baseFile, -4, 4) == $extension) { // Other, generic file found @@ -3466,7 +3450,7 @@ function initCacheInstance () { $GLOBALS['cache_instance'] = new CacheSystem(); if ($GLOBALS['cache_instance']->getStatus() != 'done') { // Failed to initialize cache sustem - addFatalMessage(__FILE__, __LINE__, '(' . __LINE__ . '): ' . getMessage('CACHE_CANNOT_INITIALIZE')); + addFatalMessage(__FUNCTION__, __LINE__, '(' . __LINE__ . '): {--CACHE_CANNOT_INITIALIZE--}'); } // END - if } @@ -3552,16 +3536,16 @@ function determinePageTitle () { $pageTitle = '[-- ' . getConfig('MAIN_TITLE') . ' - ' . getModuleTitle(getModule()) . ' --]'; } elseif ((isInstalled()) && (!isAdminRegistered())) { // Installed but no admin registered - $pageTitle = getMessage('SETUP_OF_MXCHANGE'); + $pageTitle = getMessage('SETUP_OF_MAILER'); } elseif ((!isInstalled()) || (!isAdminRegistered())) { // Installation mode - $pageTitle = getMessage('INSTALLATION_OF_MXCHANGE'); + $pageTitle = getMessage('INSTALLATION_OF_MAILER'); } else { // Configuration not found! $pageTitle = getMessage('NO_CONFIG_FOUND_TITLE'); // Do not add the fatal message in installation mode - if ((!isInstalling()) && (!isConfigurationLoaded())) addFatalMessage(__FILE__, __LINE__, getMessage('NO_CONFIG_FOUND')); + if ((!isInstalling()) && (!isConfigurationLoaded())) addFatalMessage(__FUNCTION__, __LINE__, getMessage('NO_CONFIG_FOUND')); } // Return title @@ -3590,9 +3574,6 @@ function flushTemplateCache ($template, $eval) { // Generate FQFN $FQFN = generateCacheFqfn($template); - // Replace username with a call - $eval = str_replace('$username', '".getUsername()."', $eval); - // And flush it writeToFile($FQFN, $eval, true); } // END - if @@ -3653,9 +3634,6 @@ function sendModeMails ($mod, $modes) { // Load the data $content = getUserDataArray(); - // Translate gender - $content['gender'] = translateGender($content['gender']); - // Clear/init the content variable $content['message'] = ''; @@ -3797,7 +3775,7 @@ function getModuleFromFileName ($file, $accessLevel) { break; default: // Unsupported file name / access level - debug_report_bug('Unsupported file name=' . basename($file) . '/access level=' . $accessLevel); + debug_report_bug(__FUNCTION__, __LINE__, 'Unsupported file name=' . basename($file) . '/access level=' . $accessLevel); break; }