X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=inline;f=inc%2Ffunctions.php;h=99ff9804f5ebc9e3fea65fc32852eb39ed54374f;hb=62d8f6d89c35bebe15b8f716a5629f14d95f3078;hp=0bff2a6abc57dfe89a0ba14a8ff8e2e1ee1162d0;hpb=076c5d09d4271fb489a3bdb9f44fdd8ca2cabc6c;p=mailer.git diff --git a/inc/functions.php b/inc/functions.php index 0bff2a6abc..99ff9804f5 100644 --- a/inc/functions.php +++ b/inc/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 * @@ -106,9 +104,6 @@ function getTotalFatalErrors () { function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = '') { //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'toEmail=' . $toEmail . ',subject=' . $subject . ',isHtml=' . $isHtml); - // Compile subject line (for POINTS constant etc.) - eval('$subject = decodeEntities("' . compileRawCode(escapeQuotes($subject)) . '");'); - // Set from header if ((!isInStringIgnoreCase('@', $toEmail)) && ($toEmail > 0)) { // Value detected, is the message extension installed? @@ -134,13 +129,22 @@ function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = ' // Check for PHPMailer or debug-mode if ((!checkPhpMailerUsage()) || (isDebugModeEnabled())) { + // Prefix is '' for text mails + $prefix = ''; + + // Is HTML? + if ($isHtml == 'Y') { + // Set prefix + $prefix = 'html_'; + } // END - if + // Not in PHPMailer-Mode if (empty($mailHeader)) { // Load email header template - $mailHeader = loadEmailTemplate('header'); + $mailHeader = loadEmailTemplate($prefix . 'header'); } else { // Append header - $mailHeader .= loadEmailTemplate('header'); + $mailHeader .= loadEmailTemplate($prefix . 'header'); } } // END - if @@ -151,17 +155,14 @@ function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = ' if (isDebugModeEnabled()) { // In debug mode we want to display the mail instead of sending it away so we can debug this part outputHtml('
-Headers : ' . encodeEntities(utf8_decode(trim($mailHeader))) . ' -To : ' . encodeEntities(utf8_decode($toEmail)) . ' -Subject : ' . encodeEntities(utf8_decode($subject)) . ' -Message : ' . encodeEntities(utf8_decode($message)) . ' +Headers : ' . htmlentities(utf8_decode(trim($mailHeader))) . ' +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); } elseif (!empty($toEmail)) { // Send Mail away return sendRawEmail($toEmail, $subject, $message, $mailHeader); @@ -182,12 +183,17 @@ 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("' . 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) . '");'); +function sendRawEmail ($toEmail, $subject, $message, $headers) { + // Just compile all to put out all configs, etc. + $eval = '$toEmail = decodeEntities("' . escapeQuotes(doFinalCompilation(compileRawCode($toEmail), false)) . '"); '; + $eval .= '$subject = decodeEntities("' . escapeQuotes(doFinalCompilation(compileRawCode($subject), false)) . '"); '; + $eval .= '$headers = decodeEntities("' . escapeQuotes(doFinalCompilation(compileRawCode($headers), false)) . '"); '; + + // Do not decode entities in the message because we also send HTML mails through this function + $eval .= '$message = "' . escapeQuotes(doFinalCompilation(compileRawCode($message), false)) . '";'; + + // Run the final eval() command + eval($eval); // Shall we use PHPMailer class or legacy mode? if (checkPhpMailerUsage()) { @@ -210,10 +216,10 @@ function sendRawEmail ($toEmail, $subject, $message, $from) { $mail->Port = 25; $mail->Username = getConfig('SMTP_USER'); $mail->Password = getConfig('SMTP_PASSWORD'); - if (empty($from)) { + if (empty($headers)) { $mail->From = getConfig('WEBMASTER'); } else { - $mail->From = $from; + $mail->From = $headers; } $mail->FromName = getMainTitle(); $mail->Subject = $subject; @@ -225,10 +231,12 @@ function sendRawEmail ($toEmail, $subject, $message, $from) { } else { $mail->Body = decodeEntities($message); } + $mail->AddAddress($toEmail, ''); $mail->AddReplyTo(getConfig('WEBMASTER'), getMainTitle()); $mail->AddCustomHeader('Errors-To:' . getConfig('WEBMASTER')); $mail->AddCustomHeader('X-Loop:' . getConfig('WEBMASTER')); + $mail->AddCustomHeader('Bounces-To:' . getConfig('WEBMASTER')); $mail->Send(); // Has an error occured? @@ -244,7 +252,7 @@ function sendRawEmail ($toEmail, $subject, $message, $from) { } } else { // Use legacy mail() command - return mail($toEmail, $subject, decodeEntities($message), $from); + return mail($toEmail, $subject, decodeEntities($message), $headers); } } @@ -349,12 +357,6 @@ function translateYesNo ($yn) { return $GLOBALS[__FUNCTION__][$yn]; } -// Translates the "pool type" into human-readable -function translatePoolType ($type) { - // Return "translation" - return sprintf("{--POOL_TYPE_%s--}", $type); -} - // Translates the american decimal dot into a german comma function translateComma ($dotted, $cut = true, $max = '0') { // First, cast all to double, due to PHP changes @@ -448,6 +450,9 @@ function translateUserStatus ($status) { // "Translates" 'visible' and 'locked' to a CSS class function translateMenuVisibleLocked ($content, $prefix = '') { + // Default is 'menu_unknown' + $content['visible_css'] = $prefix . 'menu_unknown'; + // Translate 'visible' and keep an eye on the prefix switch ($content['visible']) { // Should be visible @@ -554,7 +559,7 @@ function redirectToUrl ($URL, $allowSpider = true) { } // END - if // Three different ways to debug... - //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, sprintf("%s[%s:] URL=%s", __FUNCTION__, __LINE__, $URL)); + //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, 'URL=' . $URL); //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'URL=' . $URL); //* DEBUG: */ die($URL); @@ -575,9 +580,6 @@ function redirectToUrl ($URL, $allowSpider = true) { // Clear own output buffer $GLOBALS['output'] = ''; - // Set header - setHttpStatus('302 Found'); - // Load URL when headers are not sent sendRawRedirect(doFinalCompilation(str_replace('&', '&', $URL), false)); } else { @@ -644,7 +646,7 @@ function array_pk_sort (&$array, $a_sort, $primary_key = '0', $order = -1, $nums // -// Deprecated : $length +// Deprecated : $length (still has one reference in this function) // Optional : $DATA // function generateRandomCode ($length, $code, $userid, $DATA = '') { @@ -653,16 +655,24 @@ function generateRandomCode ($length, $code, $userid, $DATA = '') { // Build key string $keys = getConfig('SITE_KEY') . getEncryptSeperator() . getConfig('DATE_KEY'); - if (isConfigEntrySet('secret_key')) $keys .= getEncryptSeperator().getSecretKey(); - if (isConfigEntrySet('file_hash')) $keys .= getEncryptSeperator().getFileHash(); + if (isConfigEntrySet('secret_key')) { + $keys .= getEncryptSeperator().getSecretKey(); + } // END - if + if (isConfigEntrySet('file_hash')) { + $keys .= getEncryptSeperator().getFileHash(); + } // END - if $keys .= getEncryptSeperator() . getDateFromPatchTime(); - if (isConfigEntrySet('master_salt')) $keys .= getEncryptSeperator().getMasterSalt(); + if (isConfigEntrySet('master_salt')) { + $keys .= getEncryptSeperator().getMasterSalt(); + } // END - if // Build string from misc data $data = $code . getEncryptSeperator() . $userid . getEncryptSeperator() . $DATA; // Add more additional data - if (isSessionVariableSet('u_hash')) $data .= getEncryptSeperator() . getSession('u_hash'); + if (isSessionVariableSet('u_hash')) { + $data .= getEncryptSeperator() . getSession('u_hash'); + } // END - if // Add referal id, language, theme and userid $data .= getEncryptSeperator() . determineReferalId(); @@ -688,7 +698,7 @@ function generateRandomCode ($length, $code, $userid, $DATA = '') { } // At least 10 numbers shall be secure enought! - $len = getConfig('code_length'); + $len = getCodeLength(); if ($len == '0') $len = $length; if ($len == '0') $len = 10; @@ -705,12 +715,15 @@ function bigintval ($num, $castValue = true, $abortOnMismatch = true) { $ret = preg_replace('/[^0123456789]/', '', $num); // Shall we cast? - if ($castValue === true) $ret = (double)$ret; + if ($castValue === true) { + // Cast to biggest numeric type + $ret = (double) $ret; + } // END - if // Has the whole value changed? - if (('' . $ret . '' != '' . $num . '') && ($abortOnMismatch === true)) { + if (('' . $ret . '' != '' . $num . '') && ($abortOnMismatch === true) && (!is_null($num))) { // Log the values - debug_report_bug(__FUNCTION__, __LINE__, 'Problem with number found. ret=' . $ret . ', num='. $num); + debug_report_bug(__FUNCTION__, __LINE__, 'Problem with number found. ret[' . gettype($ret) . ']=' . $ret . ', num[' . gettype($num) . ']='. $num); } // END - if // Return result @@ -728,7 +741,7 @@ function createTimestampFromSelections ($prefix, $postData) { $M1 = getMonth(); // 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') && ($postData[$prefix . '_mo'] > '02')) $SWITCH = getConfig('ONE_DAY'); + if ((floor($TEST) == $TEST) && ($M1 == '02') && ($postData[$prefix . '_mo'] > '02')) $SWITCH = getOneDay(); // First add years... $ret += $postData[$prefix . '_ye'] * (31536000 + $SWITCH); @@ -763,7 +776,7 @@ function createFancyTime ($stamp) { foreach($data as $k => $v) { if ($v > 0) { // Value is greater than 0 "eval" data to return string - eval('$ret .= ", ".$v." {--_' . strtoupper($k) . '--}";'); + $ret .= ', ' . $v . ' {--_' . strtoupper($k) . '--}'; break; } // END - if } // END - foreach @@ -824,20 +837,23 @@ function sendGetRequest ($script, $data = array()) { // Add data $body = http_build_query($data, '', '&'); - // Do we have a question-mark in the script? - if (strpos($script, '?') === false) { - // No, so first char must be question mark - $body = '?' . $body; - } else { - // Ok, add & - $body = '&' . $body; - } + // There should be data, else we don't need to extend $script with $body + if (empty($body)) { + // Do we have a question-mark in the script? + if (strpos($script, '?') === false) { + // No, so first char must be question mark + $body = '?' . $body; + } else { + // Ok, add & + $body = '&' . $body; + } - // Add script data - $script .= $body; + // Add script data + $script .= $body; - // Remove trailed & to make it more conform - if (substr($script, -1, 1) == '&') $script = substr($script, 0, -1); + // Remove trailed & to make it more conform + if (substr($script, -1, 1) == '&') $script = substr($script, 0, -1); + } // END - if // Generate GET request header $request = 'GET /' . trim($script) . ' HTTP/1.1' . getConfig('HTTP_EOL'); @@ -1264,11 +1280,11 @@ function genScrambleString ($len) { // First we need to setup randomized numbers from 0 to 31 for ($idx = 0; $idx < $len; $idx++) { // Generate number - $rand = mt_rand(0, ($len -1)); + $rand = mt_rand(0, ($len - 1)); // Check for it by creating more numbers while (array_key_exists($rand, $scrambleNumbers)) { - $rand = mt_rand(0, ($len -1)); + $rand = mt_rand(0, ($len - 1)); } // END - while // Add number @@ -1398,7 +1414,7 @@ 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 .= '