]> git.mxchange.org Git - mailer.git/blobdiff - inc/functions.php
Even more fixes for broken first installation attempt (sorry all)
[mailer.git] / inc / functions.php
index 4a1d8929b7eb49e20ee977ec5d36b582b854fb79..aeb0ac419f36d907c3eeaeaf1fb390ea38faa3b8 100644 (file)
@@ -6,9 +6,9 @@
  * -------------------------------------------------------------------- *
  * File              : functions.php                                    *
  * -------------------------------------------------------------------- *
- * Short description : Many non-MySQL functions (also file access)      *
+ * Short description : Many non-database functions (also file access)   *
  * -------------------------------------------------------------------- *
- * Kurzbeschreibung  : Viele Nicht-MySQL-Funktionen (auch Dateizugriff) *
+ * Kurzbeschreibung  : Viele Nicht-Datenbank-Funktionen                 *
  * -------------------------------------------------------------------- *
  * $Revision::                                                        $ *
  * $Date::                                                            $ *
@@ -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?
@@ -261,7 +261,7 @@ function sendRawEmail ($toEmail, $subject, $message, $headers) {
 // Generate a password in a specified length or use default password length
 function generatePassword ($length = '0') {
        // Auto-fix invalid length of zero
-       if ($length == '0') $length = getConfig('pass_len');
+       if ($length == '0') $length = getPassLen();
 
        // Initialize array with all allowed chars
        $ABC = explode(',', 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9,-,+,_,/,.');
@@ -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,7 +656,7 @@ 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');
@@ -775,7 +778,7 @@ function createFancyTime ($stamp) {
        // Get data array with years/months/weeks/days/...
        $data = createTimeSelections($stamp, '', '', '', true);
        $ret = '';
-       foreach($data as $k => $v) {
+       foreach ($data as $k => $v) {
                if ($v > 0) {
                        // Value is greater than 0 "eval" data to return string
                        $ret .= ', ' . $v . ' {--_' . strtoupper($k) . '--}';
@@ -1170,7 +1173,7 @@ 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();
@@ -1685,13 +1688,16 @@ function changeDataInFile ($FQFN, $comment, $prefix, $suffix, $DATA, $seek=0) {
        // An error was detected!
        return false;
 }
+
 // Send notification to admin
-function sendAdminNotification ($subject, $templateName, $content=array(), $userid = '0') {
+function sendAdminNotification ($subject, $templateName, $content = array(), $userid = '0') {
        if ((isExtensionInstalledAndNewer('admins', '0.4.1')) && (function_exists('sendAdminsEmails'))) {
                // Send new way
+               /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'admins=Y,subject=' . $subject . ',templateName=' . $templateName);
                sendAdminsEmails($subject, $templateName, $content, $userid);
        } else {
-               // Send out out-dated way
+               // Send out-dated way
+               /* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'admins=N,subject=' . $subject . ',templateName=' . $templateName);
                $message = loadEmailTemplate($templateName, $content, $userid);
                sendAdminEmails($subject, $message);
        }
@@ -1705,7 +1711,7 @@ function logDebugMessage ($funcFile, $line, $message, $force=true) {
                $message = str_replace("\r", '', str_replace("\n", '', $message));
 
                // Log this message away
-               appendLineToFile(getCachePath() . 'debug.log', generateDateTime(time(), '4') . '|' . getModule(false) . '|' . basename($funcFile) . '|' . $line . '|' . $message);
+               appendLineToFile(getPath() . getCachePath() . 'debug.log', generateDateTime(time(), '4') . '|' . getModule(false) . '|' . basename($funcFile) . '|' . $line . '|' . $message);
        } // END - if
 }
 
@@ -1844,7 +1850,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)) {
@@ -1852,7 +1858,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
@@ -1860,12 +1866,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 {
@@ -1885,9 +1891,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);
@@ -1923,7 +1931,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)) {
@@ -2118,7 +2128,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;
@@ -2132,9 +2142,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
@@ -2150,9 +2163,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;
                }
@@ -2169,6 +2182,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...
@@ -2235,7 +2254,7 @@ function initCacheInstance () {
        $GLOBALS['cache_instance'] = new CacheSystem();
 
        // Did it work?
-       if ($GLOBALS['cache_instance']->getStatus() != 'done') {
+       if ($GLOBALS['cache_instance']->getStatusCode() != 'done') {
                // Failed to initialize cache sustem
                addFatalMessage(__FUNCTION__, __LINE__, '(<font color="#0000aa">' . __LINE__ . '</font>): {--CACHE_CANNOT_INITIALIZE--}');
        } // END - if
@@ -2290,7 +2309,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)) {
@@ -2301,7 +2323,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 = '&';
                }
 
@@ -2327,7 +2349,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));
@@ -2421,7 +2446,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
@@ -2432,6 +2457,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
 //-----------------------------------------------------------------------------