]> git.mxchange.org Git - mailer.git/blobdiff - inc/functions.php
A lot more wrapper functions added, templates renamed
[mailer.git] / inc / functions.php
index f045a8c5a92f0230d3d6ec4f45f907fb77a7d39c..e07307acb584b51404c1ecd3a9d6b2de1ebd226f 100644 (file)
@@ -16,7 +16,7 @@
  * $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 *
@@ -118,12 +118,12 @@ function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = '
                                $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 />");
 
@@ -169,8 +169,8 @@ Message : ' . htmlentities(utf8_decode($message)) . '
                // 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
@@ -219,7 +219,7 @@ function sendRawEmail ($toEmail, $subject, $message, $headers) {
                $mail->Username   = getConfig('SMTP_USER');
                $mail->Password   = getConfig('SMTP_PASSWORD');
                if (empty($headers)) {
-                       $mail->From = getConfig('WEBMASTER');
+                       $mail->From = getWebmaster();
                } else {
                        $mail->From = $headers;
                }
@@ -235,10 +235,10 @@ function sendRawEmail ($toEmail, $subject, $message, $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?
@@ -427,6 +427,9 @@ function translateGender ($gender) {
 
 // "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':
@@ -653,10 +656,10 @@ function array_pk_sort (&$array, $a_sort, $primary_key = '0', $order = -1, $nums
 //
 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
@@ -687,22 +690,26 @@ function generateRandomCode ($length, $code, $userid, $DATA = '') {
 
        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);
@@ -944,10 +951,10 @@ function sendRawRequest ($host, $request) {
        //* 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);
@@ -1076,9 +1083,9 @@ function setupProxyTunnel ($host, $resource) {
        $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
 
@@ -1170,10 +1177,10 @@ function generateHash ($plainText, $salt = '', $hash = true) {
        // 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();
@@ -1182,7 +1189,7 @@ function generateHash ($plainText, $salt = '', $hash = true) {
                $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 />');
@@ -1847,7 +1854,7 @@ function rebuildCache ($cache, $inc = '', $force = false) {
                // 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)) {
@@ -1855,7 +1862,7 @@ function rebuildCache ($cache, $inc = '', $force = false) {
                                //* 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
@@ -1863,12 +1870,12 @@ function rebuildCache ($cache, $inc = '', $force = false) {
 }
 
 // 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 {
@@ -1888,9 +1895,11 @@ function determineRealRemoteAddress () {
 
 // 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);
@@ -1926,7 +1935,9 @@ function addNewBonusMail ($data, $mode = '', $output=true) {
 // 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)) {
@@ -2121,7 +2132,7 @@ function getArrayFromDirectory ($baseDir, $prefix, $fileIncludeDirs = false, $ad
 
                        // 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;
@@ -2135,9 +2146,12 @@ function getArrayFromDirectory ($baseDir, $prefix, $fileIncludeDirs = false, $ad
                        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
@@ -2153,9 +2167,9 @@ function getArrayFromDirectory ($baseDir, $prefix, $fileIncludeDirs = false, $ad
                                }
                        } 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;
                }
@@ -2172,6 +2186,12 @@ function getArrayFromDirectory ($baseDir, $prefix, $fileIncludeDirs = false, $ad
        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...
@@ -2293,7 +2313,10 @@ function getModuleFromFileName ($file, $accessLevel) {
 // 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)) {
@@ -2304,7 +2327,7 @@ function encodeUrl ($url, $outputMode = '0') {
                        // No question mark
                        $seperator = '?';
                } elseif ((!isHtmlOutputMode()) || ($outputMode != '0')) {
-                       // Non-HTML mode
+                       // Non-HTML mode (or forced non-HTML mode
                        $seperator = '&';
                }
 
@@ -2330,7 +2353,10 @@ function isSpider () {
        $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));
@@ -2424,7 +2450,7 @@ function capitalizeUnderscoreString ($str) {
                // "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
@@ -2435,6 +2461,54 @@ function capitalizeUnderscoreString ($str) {
        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
 //-----------------------------------------------------------------------------