X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Ffunctions.php;h=c73058b0a52d1d88e0751a55f50c02ad3f6f4d81;hb=7967841ac94cdcbd10b4d5c011a1e0a9982ec600;hp=3cdabf7e3e09ff0c32816a90d0a133e6ad209b27;hpb=0da26ebf67e1a6c8e5ab5f23639c6abd99d84b2d;p=mailer.git
diff --git a/inc/functions.php b/inc/functions.php
index 3cdabf7e3e..c73058b0a5 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -33,7 +33,7 @@
// Some security stuff...
if (ereg(basename(__FILE__), $_SERVER['PHP_SELF'])) {
- $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
+ $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php";
require($INC);
}
@@ -53,6 +53,7 @@ function is_INCWritable($inc) {
// Open a table (you may want to add some header stuff here)
function OPEN_TABLE($PERCENT = "", $CLASS = "", $ALIGN="left", $VALIGN="", $td_only=false) {
global $table_cnt;
+
// Count tables so we can generate CSS classes for every table... :-)
if (empty($CLASS)) {
// Class is empty so count one up and create a class
@@ -138,8 +139,16 @@ function OUTPUT_HTML($HTML, $NEW_LINE = true) {
// Compile and run finished rendered HTML code
while (strpos($OUTPUT, '{!') > 0) {
- $eval = "\$OUTPUT = \"" . COMPILE_CODE(addslashes($OUTPUT)) . "\";";
- eval($eval);
+ // Prepare the content and eval() it...
+ $newContent = "";
+ $eval = "\$newContent = \"".COMPILE_CODE(addslashes($OUTPUT))."\";";
+ @eval($eval);
+
+ if (empty($newContent)) {
+ // Something went wrong!
+ die("Evaluation error:
".htmlentities($eval)."
");
+ }
+ $OUTPUT = $newContent;
}
// Output code here, DO NOT REMOVE! ;-)
@@ -152,7 +161,7 @@ function OUTPUT_HTML($HTML, $NEW_LINE = true) {
// Compile and run finished rendered HTML code
while (strpos($OUTPUT, '{!') > 0) {
- $eval = "\$OUTPUT = \"" . COMPILE_CODE(addslashes($OUTPUT)) . "\";";
+ $eval = "\$OUTPUT = \"".COMPILE_CODE(addslashes($OUTPUT))."\";";
eval($eval);
}
@@ -163,16 +172,14 @@ function OUTPUT_HTML($HTML, $NEW_LINE = true) {
// Output the raw HTML code
function OUTPUT_RAW ($HTML) {
- if ((isBooleanConstantAndTrue('mxchange_installed')) && (basename($_SERVER['PHP_SELF']) != "install.php")) {
- // Not in install-mode so strip slashes away
- echo stripslashes($HTML);
- } else {
- // Output directly in install-mode
- echo $HTML;
- }
+ // Output stripped HTML code to avoid broken JavaScript code, etc.
+ echo stripslashes($HTML);
- // Flush the output
- flush();
+ // Flush the output if only _OB_CACHING is not "on"
+ if (_OB_CACHING != "on") {
+ // Flush it
+ flush();
+ }
}
// Add a fatal error message to the queue array
@@ -192,6 +199,9 @@ function LOAD_TEMPLATE($template, $return=false, $content="") {
// Add more variables which you want to use in your template files
global $DATA, $_CONFIG, $username;
+ // Make all template names lowercase
+ $template = strtolower($template);
+
// Count the template load
if (!isset($_CONFIG['num_templates'])) $_CONFIG['num_templates'] = 0;
$_CONFIG['num_templates']++;
@@ -203,9 +213,10 @@ function LOAD_TEMPLATE($template, $return=false, $content="") {
if (empty($GLOBALS['refid'])) $GLOBALS['refid'] = 0;
$REFID = $GLOBALS['refid'];
+ // DEPRECATED!!!
if ($template == "member_support_form") {
// Support request of a member
- $result = SQL_QUERY_ESC("SELECT sex, surname, family FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT sex, surname, family FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
array($GLOBALS['userid']), __FILE__, __LINE__);
list($sex, $surname, $family) = SQL_FETCHROW($result);
SQL_FREERESULT($result);
@@ -216,7 +227,7 @@ function LOAD_TEMPLATE($template, $return=false, $content="") {
$date_time = MAKE_DATETIME(time(), "1");
// Base directory
- $BASE = PATH."templates/".GET_LANGUAGE()."/html/";
+ $BASE = sprintf("%stemplates/%s/html/", PATH, GET_LANGUAGE());
$MODE = "";
// Check for admin/guest/member templates
@@ -262,20 +273,20 @@ function LOAD_TEMPLATE($template, $return=false, $content="") {
);
// Probe for it...
- if (file_exists($file2)) $file = $file2;
+ if (FILE_READABLE($file2)) $file = $file2;
// Remove variable from memory
unset($file2);
}
// Does the special template exists?
- if ((!file_exists($file)) || (!is_readable($file))) {
+ if (!FILE_READABLE($file)) {
// Reset to default template
$file = $BASE.$template.".tpl";
- }
+ } // END - if
// Now does the final template exists?
- if ((file_exists($file)) && (is_readable($file))) {
+ if (FILE_READABLE($file)) {
// The local file does exists so we load it. :)
$tmpl_file = implode("", file($file));
@@ -283,9 +294,10 @@ function LOAD_TEMPLATE($template, $return=false, $content="") {
while (strpos($tmpl_file, "\'") !== false) { $tmpl_file = str_replace("\'", '{QUOT}', $tmpl_file); }
// Do we have to compile the code?
+ $ret = "";
if ((strpos($tmpl_file, "\$") !== false) || (strpos($tmpl_file, '{--') !== false) || (strpos($tmpl_file, '--}') > 0)) {
// Okay, compile it!
- $tmpl_file = "\$ret=\"" . COMPILE_CODE(addslashes($tmpl_file)) . "\";";
+ $tmpl_file = "\$ret=\"".COMPILE_CODE(addslashes($tmpl_file))."\";";
eval($tmpl_file);
} else {
// Simply return loaded code
@@ -325,21 +337,24 @@ function LOAD_TEMPLATE($template, $return=false, $content="") {
// Send mail out to an email address
function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML='N', $FROM="") {
// Compile subject line (for POINTS constant etc.)
- $eval = "\$SUBJECT = \"" . COMPILE_CODE(addslashes($SUBJECT)) . "\";";
+ $eval = "\$SUBJECT = \"".COMPILE_CODE(addslashes($SUBJECT))."\";";
eval($eval);
$SUBJECT = html_entity_decode($SUBJECT);
// Set from header
- if (!eregi("@", $TO)) {
+ if ((!eregi("@", $TO)) && ($TO > 0)) {
// Value detected, load email from database
if (EXT_IS_ACTIVE("msg")) {
ADD_MESSAGE_TO_BOX($TO, $SUBJECT, $MSG, $HTML);
return;
} else {
- $result_email = SQL_QUERY_ESC("SELECT email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1", array(bigintval($TO)), __FILE__, __LINE__);
+ $result_email = SQL_QUERY_ESC("SELECT email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1", array(bigintval($TO)), __FILE__, __LINE__);
list($TO) = SQL_FETCHROW($result_email);
SQL_FREERESULT($result_email);
}
+ } elseif ($TO == 0) {
+ // Is the webmaster!
+ $TO = WEBMASTER;
}
// Not in PHPMailer-Mode
@@ -362,7 +377,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML='N', $FROM="") {
}
// Fix HTML parameter (default is no!)
- if (empty($HTML)) $HTML = 'N';
+ if (empty($HTML)) $HTML = "N";
if (isBooleanConstantAndTrue('DEBUG_MODE')) {
// In debug mode we want to display the mail instead of sending it away so we can debug this part
echo "
@@ -371,7 +386,7 @@ To : ".$TO."
Subject : ".$SUBJECT."
Message : ".$MSG."
\n";
- } elseif (($HTML == 'Y') && (EXT_IS_ACTIVE("html_mail", true))) {
+ } elseif (($HTML == "Y") && (EXT_IS_ACTIVE("html_mail", true))) {
// Send mail as HTML away
SEND_HTML_EMAIL($TO, $SUBJECT, $MSG, $FROM);
} elseif (!empty($TO)) {
@@ -380,7 +395,7 @@ Message : ".$MSG."
// Send Mail away
SEND_RAW_EMAIL($TO, COMPILE_CODE($SUBJECT), COMPILE_CODE($MSG), $FROM);
- } elseif ($HTML == 'N') {
+ } elseif ($HTML == "N") {
// Problem found!
SEND_RAW_EMAIL(WEBMASTER, COMPILE_CODE($SUBJECT), COMPILE_CODE($MSG), $FROM);
}
@@ -404,7 +419,7 @@ function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
// get new instance
$mail = new PHPMailer();
- $mail->PluginDir = PATH."inc/phpmailer/";
+ $mail->PluginDir = sprintf("%sinc/phpmailer/", PATH);
$mail->IsSMTP();
$mail->SMTPAuth = true;
@@ -412,7 +427,11 @@ function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
$mail->Port = 25;
$mail->Username = SMTP_USER;
$mail->Password = SMTP_PASSWORD;
- $mail->From = $from;
+ if (empty($from)) {
+ $mail->From = WEBMASTER;
+ } else {
+ $mail->From = $from;
+ }
$mail->FromName = MAIN_TITLE;
$mail->Subject = $subject;
if ((EXT_IS_ACTIVE("html_mail")) && (strip_tags($msg) != $msg)) {
@@ -462,7 +481,7 @@ function GEN_PASS($LEN = 0) {
return $PASS;
}
//
-function MAKE_DATETIME($time, $mode="0")
+function MAKE_DATETIME ($time, $mode="0")
{
if ($time == 0) {
// Never happend
@@ -475,8 +494,7 @@ function MAKE_DATETIME($time, $mode="0")
switch (GET_LANGUAGE())
{
case "de": // German date / time format
- switch ($mode)
- {
+ switch ($mode) {
case "0": $ret = date("d.m.Y \u\m H:i \U\h\\r", $time); break;
case "1": $ret = strtolower(date("d.m.Y - H:i", $time)); break;
case "2": $ret = date("d.m.Y|H:i", $time); break;
@@ -485,8 +503,7 @@ function MAKE_DATETIME($time, $mode="0")
break;
default: // Default is the US date / time format!
- switch ($mode)
- {
+ switch ($mode) {
case "0": $ret = date("r", $time); break;
case "1": $ret = date("Y-m-d - g:i A", $time); break;
case "2": $ret = date("y-m-d|H:i", $time); break;
@@ -497,70 +514,55 @@ 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) {
global $_CONFIG;
+
// Default is 3 you can change this in admin area "Misc -> Misc Options"
if (empty($_CONFIG['max_comma'])) $_CONFIG['max_comma'] = "3";
- if (!ereg("\.", $dotted)) $dotted .= ".".str_repeat("0", $_CONFIG['max_comma']);
- if ($cut) {
- // Remove trailing zeros
- $dot = str_replace(".", "x", $dotted);
- while(substr($dot, -1, 1) == "0") {
- $dot = substr($dot, 0, -1);
- }
+ $maxComma = $_CONFIG['max_comma'];
- if (substr($dot, -1, 1) == "x") {
- // Last char is the 'x'
- $dotted = substr($dot, 0, -1);
+ // Cut zeros off?
+ if ($cut) {
+ // Test for commata if in cut-mode
+ $com = explode(".", $dotted);
+ 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;
+ } // END - if
} else {
- // Last char is a number
- $dotted = str_replace("x", ".", $dot);
+ // Don't display commatas even if there are none... ;-)
+ $maxComma = 0;
}
- }
+ } // END - if
+
+ // Debug log
+ //DEBUG_LOG(__FUNCTION__.":dotted={$dotted},maxComma={$maxComma}");
// Translate it now
switch (GET_LANGUAGE()) {
case "de":
- $pos = strpos($dotted, ".");
- if ($pos > 0) {
- if ($cut) {
- // Cut x numbers behind comma
- $dotted = str_replace(".", ",", substr($dotted, 0, ($pos + $_CONFIG['max_comma'] + 1)));
- } else {
- // Replace comma with dot
- $dotted = str_replace(".", ",", $dotted);
- }
- } elseif (!$cut) {
- if (empty($pos)) {
- $dotted = "0,".str_repeat("0", $_CONFIG['max_comma']);
- } else {
- $dotted .= ",".str_repeat("0", $_CONFIG['max_comma']);
- }
- }
+ $dotted = number_format($dotted, $maxComma, ",", ".");
break;
default:
- if (!$cut) {
- if ($pos > 0) {
- $dotted = substr($dotted, 0, ($pos + $_CONFIG['max_comma'] + 1));
- } else {
- $dotted .= ".".str_repeat("0", $_CONFIG['max_comma']);
- }
- }
+ $dotted = number_format($dotted, $maxComma, ".", ",");
break;
}
+
+ // Return translated value
return $dotted;
}
//
-function DEREFERER($URL) {
- $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(COMPILE_CODE($URL)));
+function DEREFERER ($URL) {
+ $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(gzcompress($URL)));
return $URL;
}
//
-function TRANSLATE_SEX($sex) {
+function TRANSLATE_SEX ($sex) {
switch ($sex)
{
case "M": $ret = SEX_M; break;
@@ -571,8 +573,7 @@ function TRANSLATE_SEX($sex) {
return $ret;
}
//
-function GET_POOL_TYPE($PT)
-{
+function GET_POOL_TYPE($PT) {
switch ($PT)
{
case "TEMP" : $ret = POOL_TEMP; break;
@@ -586,33 +587,30 @@ function GET_POOL_TYPE($PT)
return $ret;
}
//
-function FRAMETESTER($URL)
-{
- global $_SERVER;
- $URL = URL."/modules.php?module=frametester&url=".urlencode(base64_encode(COMPILE_CODE($URL)));
- return $URL;
+function FRAMETESTER($URL) {
+ // Prepare frametester URL
+ $frametesterUrl = sprintf("%s/modules.php?module=frametester&url=%s",
+ URL,
+ urlencode(base64_encode(gzcompress(COMPILE_CODE($URL))))
+ );
+ return $frametesterUrl;
}
//
-function SELECTION_COUNT($array)
-{
+function SELECTION_COUNT($array) {
$ret = "0";
- if (is_array($array))
- {
- foreach ($array as $key=>$sel)
- {
+ if (is_array($array)) {
+ foreach ($array as $key => $sel) {
if (!empty($sel)) $ret++;
}
}
return $ret;
}
//
-function IMG_CODE ($code, $type, $DATA, $uid)
-{
+function IMG_CODE ($code, $type, $DATA, $uid) {
return "";
}
//
-function TRANSLATE_STATUS($status)
-{
+function TRANSLATE_STATUS($status) {
switch ($status)
{
case "UNCONFIRMED":
@@ -649,7 +647,7 @@ function GET_LANGUAGE() {
// Check GET variable and cookie
if (!empty($lang)) {
// Check if main language file does exist
- if (file_exists(PATH."inc/language/".$lang.".php")) {
+ if (FILE_READABLE(PATH."inc/language/".$lang.".php")) {
// Okay found, so let's update cookies
SET_LANGUAGE($lang);
}
@@ -676,9 +674,12 @@ function SET_LANGUAGE($lang) {
function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
global $DATA, $_CONFIG, $REPLACER;
+ // Make sure all template names are lowercase!
+ $template = strtolower($template);
+
// Keept for backward-compatiblity (please replace these variables against our new {--CONST--} syntax!)
$MAIN_TITLE = MAIN_TITLE; $URL = URL; $WEBMASTER = WEBMASTER;
- $surname = ""; $family = ""; $nick = ""; $sex = 'N';
+ $surname = ""; $family = ""; $nick = ""; $sex = "N";
// Prepare IP number and User Agent
$REMOTE_ADDR = getenv('REMOTE_ADDR');
@@ -688,7 +689,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
if (isSessionVariableSet('admin_login')) {
// Load Admin data
$result = SQL_QUERY_ESC("SELECT email FROM "._MYSQL_PREFIX."_admins WHERE login='%s' LIMIT 1",
- array(SQL_ESCAPE(get_session('admin_login'))), __FILE__, __LINE__);
+ array(get_session('admin_login')), __FILE__, __LINE__);
list($ADMIN) = SQL_FETCHROW($result);
SQL_FREERESULT($result);
}
@@ -705,6 +706,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
$EXPIRATION = round($_CONFIG['auto_purge']/60/60/24)." "._DAYS;
}
+ // DEPRECATED switch!
switch ($template)
{
case "bonus-mail": // Load data for the bonus mail
@@ -786,7 +788,11 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
break;
case "add-points":
- $points = bigintval($_POST['points']);
+ if (isset($_POST['points'])) {
+ $points = bigintval($_POST['points']);
+ } else {
+ $points = __POINTS_VALUE;
+ }
break;
case "guest_request_confirm":
@@ -798,13 +804,13 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
if ($UID > 0) {
if (EXT_IS_ACTIVE("nickname")) {
// Load nickname
- $result = SQL_QUERY_ESC("SELECT surname, family, sex, email, nickname FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT surname, family, sex, email, nickname FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
array(bigintval($UID)), __FILE__, __LINE__);
list($surname, $family, $sex, $email, $nick) = SQL_FETCHROW($result);
SQL_FREERESULT($result);
} else {
// Load normal data
- $result = SQL_QUERY_ESC("SELECT surname, family, sex, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1",
+ $result = SQL_QUERY_ESC("SELECT surname, family, sex, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
array(bigintval($UID)), __FILE__, __LINE__);
list($surname, $family, $sex, $email) = SQL_FETCHROW($result);
SQL_FREERESULT($result);
@@ -812,7 +818,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
}
} else {
// Neutral sex and email address is default
- $sex = 'N';
+ $sex = "N";
$email = WEBMASTER;
}
@@ -823,7 +829,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
$DATA['email'] = $email;
// Base directory
- $BASE = PATH."templates/".GET_LANGUAGE()."/emails/";
+ $BASE = sprintf("%stemplates/%s/emails/", PATH, GET_LANGUAGE());
// Check for admin/guest/member templates
if (strpos($template, "admin_") > -1) {
@@ -848,14 +854,13 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
}
// Does the special template exists?
- if ((!@file_exists($file)) || (!is_readable($file))) {
+ if (!FILE_READABLE($file)) {
// Reset to default template
$file = $BASE.$template.".tpl";
- }
+ } // END - if
// Now does the final template exists?
- if ((@file_exists($file)) && (is_readable($file)))
- {
+ if (FILE_READABLE($file)) {
// The local file does exists so we load it. :)
$tmpl_file = @implode("", @file($file));
$tmpl_file = addslashes($tmpl_file);
@@ -869,9 +874,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
// Replace HTML confirm chars
$content = html_entity_decode($content);
- }
- elseif (!empty($template))
- {
+ } elseif (!empty($template)) {
// Template file not found!
$content = TEMPLATE_404.": ".$template."
".TEMPLATE_CONTENT."
@@ -882,17 +885,16 @@ function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
// Debug mode not active? Then remove the HTML tags
if (!DEBUG_MODE) $content = strip_tags($content);
- }
- else
- {
+ } else {
// No template name supplied!
$content = NO_TEMPLATE_SUPPLIED;
}
+
+ // Return compiled content
return COMPILE_CODE($content);
}
//
-function MAKE_TIME($H, $M, $S, $stamp)
-{
+function MAKE_TIME($H, $M, $S, $stamp) {
// Extract day, month and year from given timestamp
$DAY = date("d", $stamp);
$MONTH = date("m", $stamp);
@@ -903,7 +905,7 @@ function MAKE_TIME($H, $M, $S, $stamp)
}
//
function LOAD_URL($URL, $addUrlData=true) {
- global $CSS, $_CONFIG, $link, $db, $footer;
+ global $CSS, $_CONFIG, $footer;
// Check if http(s):// is there
if ((substr($URL, 0, 7) != "http://") && (substr($URL, 0, 8) != "https://")) {
@@ -914,6 +916,12 @@ function LOAD_URL($URL, $addUrlData=true) {
// Compile out URI codes
$URL = COMPILE_CODE($URL);
+ // Get output buffer
+ $OUTPUT = ob_get_contents();
+
+ // Clear it
+ ob_end_clean();
+
// Add some data to URL if cookies are not accepted
if (((!defined('__COOKIES')) || (!__COOKIES)) && ($addUrlData)) $URL = ADD_URL_DATA($URL);
@@ -926,6 +934,11 @@ function LOAD_URL($URL, $addUrlData=true) {
OUTPUT_HTML("".$URL."");
} elseif (!headers_sent()) {
// Load URL when headers are not sent
+ /*
+ print("");
+ debug_print_backtrace();
+ die("
URL={$URL}");
+ */
@header ("Location: ".str_replace("&", "&", $URL));
} else {
// Output error message
@@ -1146,10 +1159,10 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
case "yn":
$OUT .= "