X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=f4c11ee73f7b3bc559a875973ec415f12911a926;hp=99ff9804f5ebc9e3fea65fc32852eb39ed54374f;hb=ef8bdde1d3b805a341e64cb29c89e562e1ca963f;hpb=63df9c12fbba3f9bb621843329cd5ad38ca070b2 diff --git a/inc/functions.php b/inc/functions.php index 99ff9804f5..f4c11ee73f 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -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 * @@ -149,7 +149,9 @@ function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = ' } // END - if // Fix HTML parameter (default is no!) - if (empty($isHtml)) $isHtml = 'N'; + if (empty($isHtml)) { + $isHtml = 'N'; + } // END - if // Debug mode enabled? if (isDebugModeEnabled()) { @@ -167,7 +169,7 @@ Message : ' . htmlentities(utf8_decode($message)) . ' // Send Mail away return sendRawEmail($toEmail, $subject, $message, $mailHeader); } elseif ($isHtml != 'Y') { - // Problem found! + // Problem detected while sending a mail, forward it to admin return sendRawEmail(getConfig('WEBMASTER'), '[PROBLEM:]' . $subject, $message, $mailHeader); } @@ -259,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,-,+,_,/,.'); @@ -425,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': @@ -651,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'); @@ -773,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) . '--}'; @@ -1168,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(); @@ -1683,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); } @@ -1703,9 +1711,7 @@ function logDebugMessage ($funcFile, $line, $message, $force=true) { $message = str_replace("\r", '', str_replace("\n", '', $message)); // Log this message away - $fp = fopen(getCachePath() . 'debug.log', 'a') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write logfile debug.log!'); - fwrite($fp, generateDateTime(time(), '4') . '|' . getModule(false) . '|' . basename($funcFile) . '|' . $line . '|' . $message . "\n"); - fclose($fp); + 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!
"); 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,33 +2142,30 @@ 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 $extName = substr($baseFile, strlen($prefix), -4); - // Is the extension valid and active? - if (isExtensionNameValid($extName)) { - // Then add this file - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Extension entry ' . $baseFile . ' added.'); + // Add file with or without base path + if ($addBaseDir === true) { + // With base path $files[] = $fileName; } else { - // Add non-extension files as well - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Regular entry ' . $baseFile . ' added.'); - if ($addBaseDir === true) { - $files[] = $fileName; - } else { - $files[] = $baseFile; - } + // No base path + $files[] = $baseFile; } } 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; } @@ -2175,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... @@ -2241,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__, '(' . __LINE__ . '): {--CACHE_CANNOT_INITIALIZE--}'); } // END - if @@ -2296,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)) { @@ -2307,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 = '&'; } @@ -2333,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)); @@ -2427,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 @@ -2438,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 = '
{%message,ADMIN_UNSUPPORTED_MAIL_TYPE_DETECTED=' . $mailType . '%}
'; + 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('
'.print_r($content, true).'
'); + } // 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 //-----------------------------------------------------------------------------