* $Author:: $ *
* -------------------------------------------------------------------- *
* 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 *
$toEmail = getUserData('email');
} else {
// Set webmaster
- $toEmail = getConfig('WEBMASTER');
+ $toEmail = getWebmaster();
}
}
} elseif ($toEmail == '0') {
// Is the webmaster!
- $toEmail = getConfig('WEBMASTER');
+ $toEmail = getWebmaster();
}
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "TO={$toEmail}<br />");
// Send Mail away
return sendRawEmail($toEmail, $subject, $message, $mailHeader);
} elseif ($isHtml != 'Y') {
- // Problem found!
- return sendRawEmail(getConfig('WEBMASTER'), '[PROBLEM:]' . $subject, $message, $mailHeader);
+ // Problem detected while sending a mail, forward it to admin
+ return sendRawEmail(getWebmaster(), '[PROBLEM:]' . $subject, $message, $mailHeader);
}
// Why did we end up here? This should not happen
$mail->Username = getConfig('SMTP_USER');
$mail->Password = getConfig('SMTP_PASSWORD');
if (empty($headers)) {
- $mail->From = getConfig('WEBMASTER');
+ $mail->From = getWebmaster();
} else {
$mail->From = $headers;
}
}
$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->AddReplyTo(getWebmaster(), getMainTitle());
+ $mail->AddCustomHeader('Errors-To:' . getWebmaster());
+ $mail->AddCustomHeader('X-Loop:' . getWebmaster());
+ $mail->AddCustomHeader('Bounces-To:' . getWebmaster());
$mail->Send();
// Has an error occured?
// "Translates" the user status
function translateUserStatus ($status) {
+ // Default status is unknown if something goes through
+ $ret = '{--ACCOUNT_STATUS_UNKNOWN--}';
+
// Generate message depending on status
switch ($status) {
case 'UNCONFIRMED':
//
function generateRandomCode ($length, $code, $userid, $DATA = '') {
// Build server string
- $server = $_SERVER['PHP_SELF'] . getEncryptSeperator() . detectUserAgent() . getEncryptSeperator() . getenv('SERVER_SOFTWARE') . getEncryptSeperator() . detectRemoteAddr();
+ $server = $_SERVER['PHP_SELF'] . getEncryptSeperator() . detectUserAgent() . getEncryptSeperator() . getenv('SERVER_SOFTWARE') . getEncryptSeperator() . detectRealIpAddress() . getEncryptSeperator() . detectRemoteAddr();
// Build key string
- $keys = getConfig('SITE_KEY') . getEncryptSeperator() . getConfig('DATE_KEY');
+ $keys = getSiteKey() . getEncryptSeperator() . getDateKey();
if (isConfigEntrySet('secret_key')) {
$keys .= getEncryptSeperator().getSecretKey();
} // END - if
if (isConfigEntrySet('master_salt')) {
// Generate hash with master salt from modula of number with the prime number and other data
- $saltedHash = generateHash(($a % getPrime()) . getEncryptSeperator() . $server . getEncryptSeperator() . $keys . getEncryptSeperator() . $data . getEncryptSeperator() . getConfig('DATE_KEY') . getEncryptSeperator() . $a, getMasterSalt());
+ $saltedHash = generateHash(($a % getPrime()) . getEncryptSeperator() . $server . getEncryptSeperator() . $keys . getEncryptSeperator() . $data . getEncryptSeperator() . getDateKey() . getEncryptSeperator() . $a, getMasterSalt());
// Create number from hash
- $rcode = hexdec(substr($saltedHash, strlen(getMasterSalt()), 9)) / abs(getConfig('rand_no') - $a + sqrt(getConfig('_ADD'))) / pi();
+ $rcode = hexdec(substr($saltedHash, strlen(getMasterSalt()), 9)) / abs(getRandNo() - $a + sqrt(getConfig('_ADD'))) / pi();
} else {
// Generate hash with "hash of site key" from modula of number with the prime number and other data
- $saltedHash = generateHash(($a % getPrime()) . getEncryptSeperator() . $server . getEncryptSeperator() . $keys . getEncryptSeperator() . $data . getEncryptSeperator() . getConfig('DATE_KEY') . getEncryptSeperator() . $a, substr(sha1(getConfig('SITE_KEY')), 0, getSaltLength()));
+ $saltedHash = generateHash(($a % getPrime()) . getEncryptSeperator() . $server . getEncryptSeperator() . $keys . getEncryptSeperator() . $data . getEncryptSeperator() . getDateKey() . getEncryptSeperator() . $a, substr(sha1(getSiteKey()), 0, getSaltLength()));
// Create number from hash
- $rcode = hexdec(substr($saltedHash, 8, 9)) / abs(getConfig('rand_no') - $a + sqrt(getConfig('_ADD'))) / pi();
+ $rcode = hexdec(substr($saltedHash, 8, 9)) / abs(getRandNo() - $a + sqrt(getConfig('_ADD'))) / pi();
}
// At least 10 numbers shall be secure enought!
$len = getCodeLength();
- if ($len == '0') $len = $length;
- if ($len == '0') $len = 10;
+ if ($len == '0') {
+ $len = $length;
+ } // END - if
+ if ($len == '0') {
+ $len = 10;
+ } // END - if
// Cut off requested counts of number
$return = substr(str_replace('.', '', $rcode), 0, $len);
//* DEBUG: */ die('SCRIPT=' . $script);
if ($useProxy === true) {
// Resolve hostname into IP address
- $ip = $resolver->resolveHostname(compileRawCode(getConfig('proxy_host')));
+ $ip = $resolver->resolveHostname(compileRawCode(getProxyHost()));
// Connect to host through proxy connection
- $fp = fsockopen($ip, bigintval(getConfig('proxy_port')), $errno, $errdesc, 30);
+ $fp = fsockopen($ip, bigintval(getProxyPort()), $errno, $errdesc, 30);
} else {
// Resolve hostname into IP address
$ip = $resolver->resolveHostname($host);
$proxyTunnel .= 'Host: ' . $host . getConfig('HTTP_EOL');
// Use login data to proxy? (username at least!)
- if (getConfig('proxy_username') != '') {
+ if (getProxyUsername() != '') {
// Add it as well
- $encodedAuth = base64_encode(compileRawCode(getConfig('proxy_username')) . ':' . compileRawCode(getConfig('proxy_password')));
+ $encodedAuth = base64_encode(compileRawCode(getProxyUsername()) . ':' . compileRawCode(getProxyPassword()));
$proxyTunnel .= 'Proxy-Authorization: Basic ' . $encodedAuth . getConfig('HTTP_EOL');
} // END - if
// When the salt is empty build a new one, else use the first x configured characters as the salt
if (empty($salt)) {
// Build server string for more entropy
- $server = $_SERVER['PHP_SELF'] . getEncryptSeperator() . detectUserAgent() . getEncryptSeperator() . getenv('SERVER_SOFTWARE') . getEncryptSeperator() . detectRemoteAddr();
+ $server = $_SERVER['PHP_SELF'] . getEncryptSeperator() . detectUserAgent() . getEncryptSeperator() . getenv('SERVER_SOFTWARE') . getEncryptSeperator() . detectRealIpAddress() . getEncryptSeperator() . detectRemoteAddr();
// Build key string
- $keys = getConfig('SITE_KEY') . getEncryptSeperator() . getConfig('DATE_KEY') . getEncryptSeperator() . getSecretKey() . getEncryptSeperator() . getFileHash() . getEncryptSeperator() . getDateFromPatchTime() . getEncryptSeperator() . getMasterSalt();
+ $keys = getSiteKey() . getEncryptSeperator() . getDateKey() . getEncryptSeperator() . getSecretKey() . getEncryptSeperator() . getFileHash() . getEncryptSeperator() . getDateFromPatchTime() . getEncryptSeperator() . getMasterSalt();
// Additional data
$data = $plainText . getEncryptSeperator() . uniqid(mt_rand(), true) . getEncryptSeperator() . time();
$a = time() + getConfig('_ADD') - 1;
// Generate SHA1 sum from modula of number and the prime number
- $sha1 = sha1(($a % getPrime()) . $server . getEncryptSeperator() . $keys . getEncryptSeperator() . $data . getEncryptSeperator() . getConfig('DATE_KEY') . getEncryptSeperator() . $a);
+ $sha1 = sha1(($a % getPrime()) . $server . getEncryptSeperator() . $keys . getEncryptSeperator() . $data . getEncryptSeperator() . getDateKey() . getEncryptSeperator() . $a);
//* DEBUG: */ debugOutput('SHA1=' . $sha1.' ('.strlen($sha1).')<br />');
$sha1 = scrambleString($sha1);
//* DEBUG: */ debugOutput('Scrambled=' . $sha1.' ('.strlen($sha1).')<br />');
// Include file given?
if (!empty($inc)) {
// Construct FQFN
- $inc = sprintf("inc/loader/load_cache-%s.php", $inc);
+ $inc = sprintf("inc/loader/load-%s.php", $inc);
// Is the include there?
if (isIncludeReadable($inc)) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "inc={$inc} - LOADED!<br />");
loadInclude($inc);
} else {
- // Include not found!
+ // Include not found
logDebugMessage(__FUNCTION__, __LINE__, 'Include ' . $inc . ' not found. cache=' . $cache);
}
} // END - if
}
// Determines the real remote address
-function determineRealRemoteAddress () {
+function determineRealRemoteAddress ($remoteAddr = false) {
// Is a proxy in use?
- if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
+ if ((isset($_SERVER['HTTP_X_FORWARDED_FOR'])) && (!$remoteAddr)) {
// Proxy was used
$address = $_SERVER['HTTP_X_FORWARDED_FOR'];
- } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
+ } elseif ((isset($_SERVER['HTTP_CLIENT_IP'])) && (!$remoteAddr)) {
// Yet, another proxy
$address = $_SERVER['HTTP_CLIENT_IP'];
} else {
// Adds a bonus mail to the queue
// This is a high-level function!
-function addNewBonusMail ($data, $mode = '', $output=true) {
+function addNewBonusMail ($data, $mode = '', $output = true) {
// Use mode from data if not set and availble ;-)
- if ((empty($mode)) && (isset($data['mode']))) $mode = $data['mode'];
+ if ((empty($mode)) && (isset($data['mode']))) {
+ $mode = $data['mode'];
+ } // END - if
// Generate receiver list
$receiver = generateReceiverList($data['cat'], $data['receiver'], $mode);
// Determines referal id and sets it
function determineReferalId () {
// Skip this in non-html-mode and outside ref.php
- if ((!isHtmlOutputMode()) && (basename($_SERVER['PHP_SELF']) != 'ref.php')) return false;
+ if ((!isHtmlOutputMode()) && (basename($_SERVER['PHP_SELF']) != 'ref.php')) {
+ return false;
+ } // END - if
// Check if refid is set
if ((isset($GLOBALS['refid'])) && ($GLOBALS['refid'] > 0)) {
// And skip further processing
continue;
- } elseif (substr($baseFile, 0, strlen($prefix)) != $prefix) {
+ } elseif (!isFilePrefixFound($baseFile, $prefix)) {
// Skip this file
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Invalid prefix in file ' . $baseFile . ', prefix=' . $prefix);
continue;
continue;
}
+ // Get file' extension (last 4 chars)
+ $fileExtension = substr($baseFile, -4, 4);
+
// Is the file a PHP script or other?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'baseDir=' . $baseDir . ',prefix=' . $prefix . ',baseFile=' . $baseFile);
- if ((substr($baseFile, -4, 4) == '.php') || (($fileIncludeDirs === true) && (isDirectory($FQFN)))) {
+ if (($fileExtension == '.php') || (($fileIncludeDirs === true) && (isDirectory($FQFN)))) {
// Is this a valid include file?
if ($extension == '.php') {
// Remove both for extension name
}
} else {
// We found .php file but should not search for them, why?
- debug_report_bug(__FUNCTION__, __LINE__, '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. (baseFile=' . $baseFile . ')');
}
- } elseif (substr($baseFile, -4, 4) == $extension) {
+ } elseif ($fileExtension == $extension) {
// Other, generic file found
$files[] = $fileName;
}
return $files;
}
+// Checks wether $prefix is found in $fileName
+function isFilePrefixFound ($fileName, $prefix) {
+ // @TODO Find a way to cache this
+ return (substr($fileName, 0, strlen($prefix)) == $prefix);
+}
+
// Maps a module name into a database table name
function mapModuleToTable ($moduleName) {
// Map only these, still lame code...
// Encodes an URL for adding session id, etc.
function encodeUrl ($url, $outputMode = '0') {
// Do we have already have a PHPSESSID inside or view.php is called? Then abort here
- if ((strpos($url, session_name()) !== false) || (isRawOutputMode())) return $url;
+ if ((strpos($url, session_name()) !== false) || (isRawOutputMode())) {
+ // Raw output mode detected or session_name() found in URL
+ return $url;
+ } // END - if
// Do we have a valid session?
if (((!isset($GLOBALS['valid_session'])) || ($GLOBALS['valid_session'] === false) || (!isset($_COOKIE[session_name()]))) && (isSpider() === false)) {
// No question mark
$seperator = '?';
} elseif ((!isHtmlOutputMode()) || ($outputMode != '0')) {
- // Non-HTML mode
+ // Non-HTML mode (or forced non-HTML mode
$seperator = '&';
}
$userAgent = trim(strtolower(detectUserAgent(true)));
// It should not be empty, if so it is better a spider/bot
- if (empty($userAgent)) return true;
+ if (empty($userAgent)) {
+ // It is a spider/bot
+ return true;
+ } // END - if
// Is it a spider?
return ((strpos($userAgent, 'spider') !== false) || (strpos($userAgent, 'slurp') !== false) || (strpos($userAgent, 'bot') !== false) || (strpos($userAgent, 'archiver') !== false));
// "Walk" through all elements and make them lower-case but first upper-case
foreach ($strArray as $part) {
// Capitalize the string part
- $capitalized .= ucfirst(strtolower($part));
+ $capitalized .= firstCharUpperCase($part);
} // END - foreach
// Store the converted string in cache array
return $GLOBALS[__FUNCTION__][$str];
}
+// Generate admin links for mail order
+// mailType can be: 'mid' or 'bid'
+function generateAdminMailLinks ($mailType, $mailId) {
+ // Init variables
+ $OUT = '';
+ $table = '';
+
+ // Default column for mail status is 'data_type'
+ // @TODO Rename column data_type to e.g. mail_status
+ $statusColumn = 'data_type';
+
+ // Which mail do we have?
+ switch ($mailType) {
+ case 'bid': // Bonus mail
+ $table = 'bonus';
+ break;
+
+ case 'mid': // Member mail
+ $table = 'pool';
+ break;
+
+ default: // Handle unsupported types
+ logDebugMessage(__FUNCTION__, __LINE__, 'Unsupported mail type ' . $mailType . ' for mailId=' . $mailId . ' detected.');
+ $OUT = '<div align="center">{%message,ADMIN_UNSUPPORTED_MAIL_TYPE_DETECTED=' . $mailType . '%}</div>';
+ break;
+ } // END - switch
+
+ // Is the mail type supported?
+ if (!empty($table)) {
+ // Query for the mail
+ $result = SQL_QUERY_ESC("SELECT `id`, `%s` AS `mail_status` FROM `{?_MYSQL_PREFIX?}_%s` WHERE `id`=%s LIMIT 1",
+ array($statusColumn, $table, bigintval($mailId)), __FILE__, __LINE__);
+
+ // Do we have one entry there?
+ if (SQL_NUMROWS($result) == 1) {
+ // Load the entry
+ $content = SQL_FETCHARRAY($result);
+ die('<pre>'.print_r($content, true).'</pre>');
+ } // END - if
+
+ // Free result
+ SQL_FREERESULT($result);
+ } // END - if
+
+ // Return generated HTML code
+ return $OUT;
+}
+
//-----------------------------------------------------------------------------
// Automatically re-created functions, all taken from user comments on www.php.net
//-----------------------------------------------------------------------------