X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=c1293681cef302da6f78545014bd5c7152985f6e;hp=ee75b3a0d2c0e3c098b30175aad2cc8e380061b6;hb=9b8d0c1de007c1149af813c07773c3536c71ddd5;hpb=0366eb054abf51874a4272fc9b89673af1fb793b
diff --git a/inc/functions.php b/inc/functions.php
index ee75b3a0d2..c1293681ce 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -18,6 +18,7 @@
* svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009, 2010 by Mailer Developer Team *
* For more information visit: http://www.mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -442,25 +443,25 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') {
} // END - if
// Load user's data
- //* DEBUG: */ outputHtml(__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))) {
- //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__."):NICKNAME!
");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "NICKNAME!
");
// Load by nickname
fetchUserData($userid, 'nickname');
} else {
- //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__."):NO-NICK!
");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "NO-NICK!
");
/// Load by userid
fetchUserData($userid);
}
// Merge data if valid
- //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__."):content()=".count($content)." - PRE
");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "content()=".count($content)." - PRE
");
if (isUserDataValid()) {
$content = merge_array($content, getUserDataArray());
} // END - if
- //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__."):content()=".count($content)." - AFTER
");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "content()=".count($content)." - AFTER
");
} // END - if
// Translate M to male or F to female if present
@@ -469,7 +470,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') {
// Overwrite email from data if present
if (isset($content['email'])) $email = $content['email'];
- // Store email for some functions in global data array
+ // Store email for some functions in global $DATA array
// @TODO Do only use $content, not $DATA or raw variables
$DATA['email'] = $email;
@@ -532,7 +533,7 @@ function loadEmailTemplate ($template, $content = array(), $userid = '0') {
// Send mail out to an email address
function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = '') {
- //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__."):TO={$toEmail},SUBJECT={$subject}
");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "TO={$toEmail},SUBJECT={$subject}
");
// Compile subject line (for POINTS constant etc.)
eval("\$subject = decodeEntities(\"".compileRawCode(escapeQuotes($subject))."\");");
@@ -558,7 +559,7 @@ function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = '
// Is the webmaster!
$toEmail = getConfig('WEBMASTER');
}
- //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__."):TO={$toEmail}
");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "TO={$toEmail}
");
// Check for PHPMailer or debug-mode
if (!checkPhpMailerUsage()) {
@@ -1059,10 +1060,10 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true
$test = substr($found, 0, strlen($match));
// Does this entry exist?
- //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__."):found={$found},match={$match},set={$set}
");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "found={$found},match={$match},set={$set}
");
if ($test == $match) {
// Match found!
- //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__."):fuzzyFound!
");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "fuzzyFound!
");
$fuzzyFound = true;
break;
} // END - if
@@ -1074,14 +1075,14 @@ function compileRawCode ($code, $simple = false, $constants = true, $full = true
// 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: */ outputHtml(__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;
} elseif (!isset($matchesFound[$match])) {
// Not yet replaced!
- //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__."):match={$match}
");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "match={$match}
");
$code = str_replace($match, '".' . $match . '."', $code);
$matchesFound[$match] = 1;
}
@@ -1263,7 +1264,7 @@ function addSelectionBox ($type, $default, $prefix = '', $id = '0', $class = 're
//
function generateRandomCode ($length, $code, $userid, $DATA = '') {
// Build server string
- $server = $_SERVER['PHP_SELF'] . getConfig('ENCRYPT_SEPERATOR') . detectUserAgent() . getConfig('ENCRYPT_SEPERATOR') . getenv('SERVER_SOFTWARE') . getConfig('ENCRYPT_SEPERATOR') . detectRemoteAddr().":'.':".filemtime(getConfig('PATH').'inc/databases.php');
+ $server = $_SERVER['PHP_SELF'] . getConfig('ENCRYPT_SEPERATOR') . detectUserAgent() . getConfig('ENCRYPT_SEPERATOR') . getenv('SERVER_SOFTWARE') . getConfig('ENCRYPT_SEPERATOR') . detectRemoteAddr();
// Build key string
$keys = getConfig('SITE_KEY') . getConfig('ENCRYPT_SEPERATOR') . getConfig('DATE_KEY');
@@ -1314,7 +1315,7 @@ function generateRandomCode ($length, $code, $userid, $DATA = '') {
}
// Does only allow numbers
-function bigintval ($num, $castValue = true) {
+function bigintval ($num, $castValue = true, $abortOnMismatch = true) {
// Filter all numbers out
$ret = preg_replace('/[^0123456789]/', '', $num);
@@ -1322,7 +1323,7 @@ function bigintval ($num, $castValue = true) {
if ($castValue === true) $ret = (double)$ret;
// Has the whole value changed?
- if ('' . $ret . '' != '' . $num . '') {
+ if (('' . $ret . '' != '' . $num . '') && ($abortOnMismatch === true)) {
// Log the values
debug_report_bug('Problem with number found. ret=' . $ret . ', num='. $num);
} // END - if
@@ -1793,7 +1794,7 @@ function sendPostRequest ($script, $postData) {
// Extract host name from script
$host = extractHostnameFromUrl($script);
- // Construct request
+ // Construct request body
$body = http_build_query($postData, '', '&');
// Generate POST request header
@@ -1801,8 +1802,11 @@ function sendPostRequest ($script, $postData) {
$request .= 'Host: ' . $host . getConfig('HTTP_EOL');
$request .= 'Referer: ' . getConfig('URL') . '/admin.php' . getConfig('HTTP_EOL');
$request .= 'User-Agent: ' . getConfig('TITLE') . '/' . getConfig('FULL_VERSION') . getConfig('HTTP_EOL');
+ $request .= 'Accept: text/plain;q=0.8' . getConfig('HTTP_EOL');
+ $request .= 'Accept-Charset: UTF-8,*' . getConfig('HTTP_EOL');
$request .= 'Cache-Control: no-cache' . getConfig('HTTP_EOL');
$request .= 'Content-Type: application/x-www-form-urlencoded' . getConfig('HTTP_EOL');
+ $request .= 'Content-Length: ' . strlen($body) . getConfig('HTTP_EOL');
$request .= 'Connection: close' . getConfig('HTTP_EOL');
$request .= getConfig('HTTP_EOL');
@@ -1950,6 +1954,7 @@ function sendRawRequest ($host, $request) {
}
} // END - foreach
+ //* DEBUG: */ print('Request:
'.print_r($request, true).''); //* DEBUG: */ print('Response:
'.print_r($response, true).''); // Proxy agent found or something went wrong? @@ -2073,8 +2078,12 @@ function generateEmailLink ($email, $table = 'admins') { // Generate a hash for extra-security for all passwords function generateHash ($plainText, $salt = '', $hash = true) { + // Debug output + //* DEBUG: */ outputHtml('plainText=' . $plainText . ',salt=' . $salt . ',hash='.intval($hash).'
mapper='.print_r($mapper, true).'ins_vers=
'.print_r($ins_vers, true).''); - - // Is the content valid? - if ((!is_array($ins_vers)) || (count($ins_vers) <= 0) || (!isset($ins_vers[$mapper[$type]])) || (trim($ins_vers[$mapper[$type]]) == '') || ($ins_vers[0]) == 'new') { - // File needs update! - $new = true; - } else { - // Generate fake cache entry - foreach ($mapper as $map => $idx) { - $GLOBALS['cache_array']['revision'][$map][0] = $ins_vers[$idx]; - } // END - foreach - - // Return found value - return getActualVersion($type); - } - } - } - - // Has it been updated? - if ($new === true) { - // Write it - writeToFile($FQFN, implode("\n", getArrayFromActualVersion())); - - // ... and call recursive - return getActualVersion($type); - } // END - if - } -} - -// Repares an array we are looking for -// The returned Array is needed twice (in getArrayFromActualVersion() and in getActualVersion() in the old .revision-fallback) so I puted it in an extra function to not polute the global namespace -function getSearchFor () { - // Add Revision, Date, Tag and Author - $searchFor = array('File', 'Revision', 'Date', 'Tag', 'Author'); - - // Return the created array - return $searchFor; -} - -// @TODO Please describe this function -function getArrayFromActualVersion () { - // Init variables - $next_dir = ''; - - // Directory to start with search - $last_changed = array( - 'path_name' => '', - 'time' => 0 - ); - - // Init return array - $akt_vers = array(); - - // Init value for counting the founded keywords - $res = '0'; - - // Searches all Files and there date of the last modifikation and puts the newest File in $last_changed. - searchDirsRecursive($next_dir, $last_changed); // @TODO small change to API to $last_changed = searchDirsRecursive($next_dir, $time); - - // Get file - $last_file = readFromFile($last_changed['path_name']); - - // Get all the keywords to search for - $searchFor = getSearchFor(); - - // Save the last-changed filename for debugging - $GLOBALS['cache_array']['revision']['File'] = $last_changed['path_name']; - - // This foreach loops the $searchFor-Tags (array('Revision', 'Date', 'Tag', 'Author') --> could easaly extended in the future) - foreach ($searchFor as $search) { - // Searches for "$search-tag:VALUE$" or "$search-tag::VALUE$"(the stylish keywordversion ;-)) in the lates modified file - $res += preg_match('@\$' . $search.'(:|::) (.*) \$@U', $last_file, $t); - - // This trimms the search-result and puts it in the $GLOBALS['cache_array']['revision']-return array - if (isset($t[2])) { - $GLOBALS['cache_array']['revision'][$search] = trim($t[2]); - } // END - if - } // END - foreach - - // at least 3 keyword-Tags are needed for propper values - if ($res && $res >= 3 - && isset($GLOBALS['cache_array']['revision']['Revision']) && $GLOBALS['cache_array']['revision']['Revision'] != '' - && isset($GLOBALS['cache_array']['revision']['Date']) && $GLOBALS['cache_array']['revision']['Date'] != '' - && isset($GLOBALS['cache_array']['revision']['Tag']) && $GLOBALS['cache_array']['revision']['Tag'] != '') { - // Prepare content witch need special treadment - - // Prepare timestamp for date - preg_match('@(....)-(..)-(..) (..):(..):(..)@', $GLOBALS['cache_array']['revision']['Date'], $match_d); - $GLOBALS['cache_array']['revision']['Date'] = mktime($match_d[4], $match_d[5], $match_d[6], $match_d[2], $match_d[3], $match_d[1]); - - // Add author to the Tag if the author is set and is not quix0r (lead coder) - if ((isset($GLOBALS['cache_array']['revision']['Author'])) && ($GLOBALS['cache_array']['revision']['Author'] != 'quix0r')) { - $GLOBALS['cache_array']['revision']['Tag'] .= '-'.strtoupper($GLOBALS['cache_array']['revision']['Author']); - } // END - if - - } else { - // No valid Data from the last modificated file so read the Revision from the Server. Fallback-solution!! Should not be removed I think. - $version = sendGetRequest('check-updates3.php'); - - // Invalid request reply? - if (!isset($version[11])) { - // Cannot continue here - debug_report_bug('Invalid response from check-updates3.php, count should be 10, is ' . count($version)); - } // END - if - - // Prepare content - // Only sets not setted or not proper values to the Online-Server-Fallback-Solution - if (!isset($GLOBALS['cache_array']['revision']['File']) || $GLOBALS['cache_array']['revision']['File'] == '') $GLOBALS['cache_array']['revision']['File'] = trim($version[11]); - if (!isset($GLOBALS['cache_array']['revision']['Revision']) || $GLOBALS['cache_array']['revision']['Revision'] == '') $GLOBALS['cache_array']['revision']['Revision'] = trim($version[10]); - if (!isset($GLOBALS['cache_array']['revision']['Date']) || $GLOBALS['cache_array']['revision']['Date'] == '') $GLOBALS['cache_array']['revision']['Date'] = trim($version[9]); - if (!isset($GLOBALS['cache_array']['revision']['Tag']) || $GLOBALS['cache_array']['revision']['Tag'] == '') $GLOBALS['cache_array']['revision']['Tag'] = trim($version[8]); - if (!isset($GLOBALS['cache_array']['revision']['Author']) || $GLOBALS['cache_array']['revision']['Author'] == '') $GLOBALS['cache_array']['revision']['Author'] = 'quix0r'; - } - - // Return prepared array - return $GLOBALS['cache_array']['revision']; -} - // Back-ported from the new ship-simu engine. :-) function debug_get_printable_backtrace () { // Init variable @@ -3060,19 +2889,19 @@ function convertCommaToDot ($str) { } // Handle menu-depending failed logins and return the rendered content -function handleLoginFailtures ($accessLevel) { +function handleLoginFailures ($accessLevel) { // Default output is empty ;-) $OUT = ''; // Is the session data set? - if ((isSessionVariableSet('mxchange_' . $accessLevel.'_failures')) && (isSessionVariableSet('mxchange_' . $accessLevel.'_last_fail'))) { + if ((isSessionVariableSet('mxchange_' . $accessLevel . '_failures')) && (isSessionVariableSet('mxchange_' . $accessLevel . '_last_failure'))) { // Ignore zero values - if (getSession('mxchange_' . $accessLevel.'_failures') > 0) { + if (getSession('mxchange_' . $accessLevel . '_failures') > 0) { // Non-guest has login failures found, get both data and prepare it for template - //* DEBUG: */ outputHtml(__FUNCTION__ . '(' . __LINE__."):accessLevel={$accessLevel}