X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=291d865adba1237ce19a8942adc57650db4055a7;hp=3dcee7a5cce4ea43680c3ae67ac6ee7f27ff18a3;hb=aaeab8d02fbf455df9b60ab0b85c999dd2da9069;hpb=831c60d4cec333ea95e0ce23d9e53fd5d8133ce6
diff --git a/inc/functions.php b/inc/functions.php
index 3dcee7a5cc..291d865adb 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -39,11 +39,20 @@ if (!defined('__SECURITY')) {
// Check if our config file is writeable or not
function is_INCWritable($inc) {
- $fp = @fopen(PATH."inc/".$inc.".php", 'a');
+ // Generate FQFN
+ $fqfn = sprintf("%sinc/%s.php", PATH, $inc);
+
+ // Abort by simple test
+ if ((FILE_READABLE($fqfn)) && (!is_writeable($fqfn))) {
+ return false;
+ } // END - if
+
+ // Test if we can append data
+ $fp = @fopen($fqfn, 'a');
if ($inc == "dummy") {
// Remove dummy file
@fclose($fp);
- return @unlink(PATH."inc/dummy.php");
+ return @unlink($fqfn);
} else {
// Close all other files
return @fclose($fp);
@@ -187,13 +196,18 @@ function OUTPUT_RAW ($HTML) {
// Add a fatal error message to the queue array
function ADD_FATAL ($message, $extra="") {
global $FATAL;
+
if (empty($extra)) {
// Regular text message to add to $FATAL
$FATAL[] = $message;
} else {
// $message is text with a mask plus extras to insert into the text
- $FATAL[] = sprintf($message, $extra);
+ $message = sprintf($message, $extra);
+ $FATAL[] = $message;
}
+
+ // Log fatal messages away
+ DEBUG_LOG(__FUNCTION__."(".__LINE__."): message={$message}");
}
// Load a template file and return it's content (only it's name; do not use ' or ")
@@ -218,25 +232,24 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) {
$result = SQL_QUERY_ESC("SELECT gender, surname, family, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
array($GLOBALS['userid']), __FILE__, __LINE__);
- // @TODO Merge this data into $content
- list($gender, $surname, $family, $email) = SQL_FETCHROW($result);
+ // Is content an array?
+ if (is_array($content)) {
+ // Merge data
+ $content = array_merge($content, SQL_FETCHARRAY($result));
- // Translate gender
- $gender = TRANSLATE_GENDER($gender);
+ // Translate gender
+ $content['gender'] = TRANSLATE_GENDER($content['gender']);
+ } else {
+ // DEPRECATED: Load data in direct variables
+ list($gender, $surname, $family, $email) = SQL_FETCHROW($result);
- // Insert data if content is an array
- if (is_array($content)) {
- // Please switch to $content[bla] in all your templates! Direct
- // variables are deprecated as of 09/13/2008.
- $content['gender'] = $gender;
- $content['surname'] = $surname;
- $content['family'] = $family;
- $content['email'] = $email;
- } // END - if
+ // Translate gender
+ $gender = TRANSLATE_GENDER($gender);
+ }
// Free result
SQL_FREERESULT($result);
- }
+ } // END - if
// Generate date/time string
$date_time = MAKE_DATETIME(time(), "1");
@@ -333,6 +346,10 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) {
";
}
+ // Remove content and data
+ unset($content);
+ unset($DATA);
+
// Do we have some content to output or return?
if (!empty($ret)) {
// Not empty so let's put it out! ;)
@@ -351,7 +368,7 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) {
// Send mail out to an email address
function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
- //* DEBUG: */ echo __FUNCTION__.":TO={$TO},SUBJECT={$SUBJECT}
\n";
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):TO={$TO},SUBJECT={$SUBJECT}
\n";
// Compile subject line (for POINTS constant etc.)
$eval = "\$SUBJECT = html_entity_decode(\"".COMPILE_CODE(addslashes($SUBJECT))."\");";
@@ -366,7 +383,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
} else {
// Load email address
$result_email = SQL_QUERY_ESC("SELECT email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1", array(bigintval($TO)), __FILE__, __LINE__);
- //* DEBUG: */ echo __FUNCTION__.":numRows=".SQL_NUMROWS($result_email)."
\n";
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):numRows=".SQL_NUMROWS($result_email)."
\n";
// Does the user exist?
if (SQL_NUMROWS($result_email)) {
@@ -384,7 +401,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
// Is the webmaster!
$TO = WEBMASTER;
}
- //* DEBUG: */ echo __FUNCTION__.":TO={$TO}
\n";
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):TO={$TO}
\n";
// Check for PHPMailer or debug-mode
if (!CHECK_PHPMAILER_USAGE()) {
@@ -410,6 +427,10 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
$eval = "\$TO = \"".COMPILE_CODE(addslashes($TO))."\";";
eval($eval);
+ // Compile "MSG"
+ $eval = "\$MSG = \"".COMPILE_CODE(addslashes($MSG))."\";";
+ eval($eval);
+
// Fix HTML parameter (default is no!)
if (empty($HTML)) $HTML = "N";
if (isBooleanConstantAndTrue('DEBUG_MODE')) {
@@ -428,10 +449,10 @@ Message : ".$MSG."
SEND_HTML_EMAIL($TO, $SUBJECT, $MSG, $FROM);
} elseif (!empty($TO)) {
// Send Mail away
- SEND_RAW_EMAIL($TO, COMPILE_CODE($SUBJECT), COMPILE_CODE($MSG), $FROM);
+ SEND_RAW_EMAIL($TO, $SUBJECT, $MSG, $FROM);
} elseif ($HTML == "N") {
// Problem found!
- SEND_RAW_EMAIL(WEBMASTER, COMPILE_CODE($SUBJECT), COMPILE_CODE($MSG), $FROM);
+ SEND_RAW_EMAIL(WEBMASTER, "[PROBLEM:]".$SUBJECT, $MSG, $FROM);
}
}
@@ -474,7 +495,7 @@ function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
$mail->WordWrap = 70;
$mail->IsHTML(true);
} else {
- $mail->Body = $msg;
+ $mail->Body = html_entity_decode($msg);
}
$mail->AddAddress($to, "");
$mail->AddReplyTo(WEBMASTER,MAIN_TITLE);
@@ -483,7 +504,7 @@ function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
$mail->Send();
} else {
// Use legacy mail() command
- @mail($to, $subject, $msg, $from);
+ @mail($to, $subject, html_entity_decode($msg), $from);
}
}
//
@@ -548,13 +569,18 @@ function MAKE_DATETIME ($time, $mode="0")
}
// Translates the american decimal dot into a german comma
-function TRANSLATE_COMMA ($dotted, $cut=true) {
+function TRANSLATE_COMMA ($dotted, $cut=true, $max=0) {
global $_CONFIG;
// Default is 3 you can change this in admin area "Misc -> Misc Options"
if (empty($_CONFIG['max_comma'])) $_CONFIG['max_comma'] = "3";
+
+ // Use from config is default
$maxComma = $_CONFIG['max_comma'];
+ // Use from parameter?
+ if ($max > 0) $maxComma = $max;
+
// Cut zeros off?
if ($cut) {
// Test for commata if in cut-mode
@@ -562,8 +588,8 @@ function TRANSLATE_COMMA ($dotted, $cut=true) {
if (count($com) > 1) {
// Commata found, so only zeros?
if ($com[1] == str_repeat("0", strlen($com[1]))) {
- // Only zeros, so don't display them
- $maxComma = 0;
+ // Only zeros, so display only one
+ $maxComma = 1;
} // END - if
} else {
// Don't display commatas even if there are none... ;-)
@@ -591,7 +617,13 @@ function TRANSLATE_COMMA ($dotted, $cut=true) {
//
function DEREFERER ($URL) {
- $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(gzcompress($URL)));
+ // Don't de-refer our own links!
+ if (substr($URL, 0, strlen(URL)) != URL) {
+ // De-refer this link
+ $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(gzcompress($URL)));
+ } // END - if
+
+ // Return link
return $URL;
}
@@ -645,6 +677,11 @@ function TRANSLATE_STATUS($status) {
$ret = ACCOUNT_LOCKED;
break;
+ case "":
+ case null:
+ $ret = ACCOUNT_DELETED;
+ break;
+
default:
$ret = UNKNOWN_STATUS_1.$status.UNKNOWN_STATUS_2;
break;
@@ -704,8 +741,8 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
// No longer used: $MAIN_TITLE = MAIN_TITLE; $URL = URL; $WEBMASTER = WEBMASTER;
// Prepare IP number and User Agent
- $REMOTE_ADDR = getenv('REMOTE_ADDR');
- $HTTP_USER_AGENT = getenv('HTTP_USER_AGENT');
+ $REMOTE_ADDR = GET_REMOTE_ADDR();
+ $HTTP_USER_AGENT = GET_USER_AGENT();
// Default admin
$ADMIN = MAIN_TITLE;
@@ -738,27 +775,27 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
} // END - if
// Load user's data
- //* DEBUG: */ echo __FUNCTION__.":UID={$UID},template={$template}
\n";
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):UID={$UID},template={$template}
\n";
if ($UID > 0) {
if (EXT_IS_ACTIVE("nickname")) {
- //* DEBUG: */ echo __FUNCTION__.":NICKNAME!
\n";
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):NICKNAME!
\n";
// Load nickname
$result = SQL_QUERY_ESC("SELECT surname, family, gender, email, nickname FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
array(bigintval($UID)), __FILE__, __LINE__);
} else {
- //* DEBUG: */ echo __FUNCTION__.":NO-NICK!
\n";
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):NO-NICK!
\n";
/// Load normal data
$result = SQL_QUERY_ESC("SELECT surname, family, gender, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
array(bigintval($UID)), __FILE__, __LINE__);
}
// Is content an array?
- //* DEBUG: */ echo __FUNCTION__.":content[]=".gettype($content)."
\n";
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):content[]=".gettype($content)."
\n";
if (is_array($content)) {
// Fetch and migrate data
- //* DEBUG: */ echo __FUNCTION__.":content()=".count($content)." - PRE
\n";
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):content()=".count($content)." - PRE
\n";
$content = array_merge($content, SQL_FETCHARRAY($result));
- //* DEBUG: */ echo __FUNCTION__.":content()=".count($content)." - AFTER
\n";
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):content()=".count($content)." - AFTER
\n";
} // END - if
// Free result
@@ -838,6 +875,10 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
if (function_exists('error_get_last')) $newContent .= "\n--------------------------------------\nDebug:\n".print_r(error_get_last(), true)."--------------------------------------\nPlease don't alter these informations!\nThanx.";
} // END - if
+ // Remove content and data
+ unset($content);
+ unset($DATA);
+
// Return compiled content
return COMPILE_CODE($newContent);
}
@@ -876,7 +917,7 @@ function LOAD_URL($URL, $addUrlData=true) {
if (((!defined('__COOKIES')) || (!__COOKIES)) && ($addUrlData)) $URL = ADD_URL_DATA($URL);
// Probe for bot from search engine
- if ((eregi("spider", getenv('HTTP_USER_AGENT'))) || (eregi("bot", getenv('HTTP_USER_AGENT'))) || (eregi("spider", getenv('HTTP_USER_AGENT')))) {
+ if ((eregi("spider", GET_USER_AGENT())) || (eregi("bot", GET_USER_AGENT())) || (eregi("spider", GET_USER_AGENT()))) {
// Search engine bot detected so let's rewrite many chars for the link
$URL = htmlentities(strip_tags($URL), ENT_QUOTES);
@@ -903,11 +944,8 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) {
global $SEC_CHARS, $URL_CHARS;
// Is the code a string?
if (!is_string($code)) {
- // Abort here with backtrace
- DEBUG_LOG(__FUNCTION__.": code is not string!");
- print "
"; - debug_print_backtrace(); - die(""); + // Silently return it + return $code; } // END - if $ARRAY = $SEC_CHARS; @@ -952,10 +990,10 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) { $test = substr($found, 0, strlen($match)); // Does this entry exist? - //* DEBUG: */ echo __FUNCTION__.":found={$found},match={$match},set={$set}