X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Ffunctions.php;h=892f983c6b68cf48f9f2efaf2f0ea13bd039c959;hb=1ae27b893dd19a4992beb49fa904cb2bc18578b3;hp=d675eca81b5abe6dba65c639bbfbf7f4d6f1f816;hpb=75ad748a68473ace540251427a74fb781b1145e9;p=mailer.git
diff --git a/inc/functions.php b/inc/functions.php
index d675eca81b..892f983c6b 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -32,47 +32,35 @@
************************************************************************/
// Some security stuff...
-if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))
-{
- $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
+if (!defined('__SECURITY')) {
+ $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php";
require($INC);
}
// Check if our config file is writeable or not
-function is_INCWritable($inc)
-{
+function is_INCWritable($inc) {
$fp = @fopen(PATH."inc/".$inc.".php", 'a');
- if ($inc == "dummy")
- {
+ if ($inc == "dummy") {
// Remove dummy file
@fclose($fp);
return @unlink(PATH."inc/dummy.php");
- }
- else
- {
+ } else {
// Close all other files
return @fclose($fp);
}
}
-// Check if we can write to an sql file
-function is_SQLWriteable($sql)
-{
- $fp = @fopen(PATH.$sql.".sql", 'a');
- return @fclose($fp);
-}
-
// Open a table (you may want to add some header stuff here)
-function OPEN_TABLE($PERCENT = "", $CLASS = "", $ALIGN="left", $VALIGN="", $td_only=false)
-{
+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))
- {
+ if (empty($CLASS)) {
// Class is empty so count one up and create a class
$table_cnt++; $CLASS = "class".$table_cnt;
}
$OUT = "
";
- OUTPUT_HTML ($OUT);
+ OUTPUT_HTML($OUT);
}
+
// Close a table (you may want to add some footer stuff here)
-function CLOSE_TABLE($ADD="")
-{
- OUTPUT_HTML ("
-");
- if (!empty($ADD)) OUTPUT_HTML ($ADD);
- OUTPUT_HTML ("
");
+function CLOSE_TABLE($ADD="") {
+ OUTPUT_HTML(" \n");
+ if (!empty($ADD)) OUTPUT_HTML($ADD);
+ OUTPUT_HTML("");
}
// Output HTML code directly or "render" it. You addionally switch the new-line character off
-function OUTPUT_HTML ($HTML, $NEW_LINE = true) {
+function OUTPUT_HTML($HTML, $NEW_LINE = true) {
// Some global variables
- global $OUTPUT, $FOOTER, $CSS;
+ global $OUTPUT, $footer, $CSS;
// Do we have HTML-Code here?
if (!empty($HTML)) {
@@ -112,16 +97,13 @@ function OUTPUT_HTML ($HTML, $NEW_LINE = true) {
{
case "render":
// That's why you don't need any \n at the end of your HTML code... :-)
- if (_OB_CACHING == "on")
- {
+ if (_OB_CACHING == "on") {
// Output into PHP's internal buffer
- echo stripslashes($HTML);
+ OUTPUT_RAW($HTML);
// That's why you don't need any \n at the end of your HTML code... :-)
if ($NEW_LINE) echo "\n";
- }
- else
- {
+ } else {
// Render mode for old or lame servers...
$OUTPUT .= $HTML;
@@ -132,10 +114,10 @@ function OUTPUT_HTML ($HTML, $NEW_LINE = true) {
case "direct":
// If we are switching from render to direct output rendered code
- if ((!empty($OUTPUT)) && (_OB_CACHING != "on")) { echo $OUTPUT; $OUTPUT = ""; }
+ if ((!empty($OUTPUT)) && (_OB_CACHING != "on")) { OUTPUT_RAW($OUTPUT); $OUTPUT = ""; }
// The same as above... ^
- echo stripslashes($HTML);
+ OUTPUT_RAW($HTML);
if ($NEW_LINE) echo "\n";
break;
@@ -144,47 +126,66 @@ function OUTPUT_HTML ($HTML, $NEW_LINE = true) {
die ("".FATAL_ERROR.": ".LANG_NO_RENDER_DIRECT);
break;
}
- } elseif ((_OB_CACHING == "on") && ($FOOTER == 1)) {
+ } elseif ((_OB_CACHING == "on") && ($footer == 1)) {
// Output cached HTML code
$OUTPUT = ob_get_contents();
// Clear output buffer for later output
ob_end_clean();
+ // Extension "rewrite" installed?
if ((EXT_IS_ACTIVE("rewrite", true)) && (function_exists('REWRITE_LINKS')) && ($CSS != "1") && ($CSS != "-1")) {
$OUTPUT = REWRITE_LINKS($OUTPUT);
- }
+ } // END - if
// Compile and run finished rendered HTML code
- while (strpos($OUTPUT, "{!") > 0) {
- $eval = "\$OUTPUT = \"" . COMPILE_CODE(addslashes($OUTPUT)) . "\";";
+ while (strpos($OUTPUT, '{!') > 0) {
+ // Prepare the content and eval() it...
+ $newContent = "";
+ $eval = "\$newContent = \"".COMPILE_CODE(addslashes($OUTPUT))."\";";
@eval($eval);
- }
+
+ // Was that eval okay?
+ if (empty($newContent)) {
+ // Something went wrong!
+ die("Evaluation error:".htmlentities($eval)."
");
+ } // END - if
+ $OUTPUT = $newContent;
+ } // END - while
// Output code here, DO NOT REMOVE! ;-)
- echo stripslashes($OUTPUT);
- flush();
+ OUTPUT_RAW($OUTPUT);
} elseif ((OUTPUT_MODE == "render") && (!empty($OUTPUT))) {
// Rewrite links when rewrite extension is active
if ((EXT_IS_ACTIVE("rewrite", true)) && (function_exists('REWRITE_LINKS')) && ($CSS != "1") && ($CSS != "-1")) {
$OUTPUT = REWRITE_LINKS($OUTPUT);
- }
+ } // END - if
// Compile and run finished rendered HTML code
- while (strpos($OUTPUT, "{!") > 0) {
- $eval = "\$OUTPUT = \"" . COMPILE_CODE(addslashes($OUTPUT)) . "\";";
- @eval($eval);
- }
+ while (strpos($OUTPUT, '{!') > 0) {
+ $eval = "\$OUTPUT = \"".COMPILE_CODE(addslashes($OUTPUT))."\";";
+ eval($eval);
+ } // END - while
// Output code here, DO NOT REMOVE! ;-)
- echo stripslashes($OUTPUT);
- flush();
+ OUTPUT_RAW($OUTPUT);
}
}
+// Output the raw HTML code
+function OUTPUT_RAW ($HTML) {
+ // Output stripped HTML code to avoid broken JavaScript code, etc.
+ echo stripslashes(stripslashes($HTML));
+
+ // Flush the output if only _OB_CACHING is not "on"
+ if (_OB_CACHING != "on") {
+ // Flush it
+ flush();
+ } // END - if
+}
+
// Add a fatal error message to the queue array
-function ADD_FATAL ($message, $extra="")
-{
+function ADD_FATAL ($message, $extra="") {
global $FATAL;
if (empty($extra)) {
// Regular text message to add to $FATAL
@@ -196,70 +197,77 @@ function ADD_FATAL ($message, $extra="")
}
// Load a template file and return it's content (only it's name; do not use ' or ")
-function LOAD_TEMPLATE($template, $return=false, $content="")
-{
+function LOAD_TEMPLATE($template, $return=false, $content="") {
// Add more variables which you want to use in your template files
- global $DATA, $username;
- $ACTION = SQL_ESCAPE($GLOBALS['action']);
- $WHAT = SQL_ESCAPE($GLOBALS['what']);
+ 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']++;
+
+ // Init some data
$ret = "";
if (empty($GLOBALS['refid'])) $GLOBALS['refid'] = 0;
- $REFID = $GLOBALS['refid'];
- if ($template == "member_support_form")
- {
+ // @DEPRECATED Try to remove this if() block
+ 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 gender, surname, family, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
array($GLOBALS['userid']), __FILE__, __LINE__);
- list($sex, $surname, $family) = SQL_FETCHROW($result);
+
+ // @TODO Merge this data into $content
+ list($gender, $surname, $family, $email) = SQL_FETCHROW($result);
+
+ // Translate gender
+ $gender = TRANSLATE_GENDER($gender);
+
+ // 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
+
+ // Free result
SQL_FREERESULT($result);
- $salut = TRANSLATE_SEX($sex);
}
// Generate date/time string
$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
- if (strpos($template, "admin_") > -1)
- {
+ if (strpos($template, "admin_") > -1) {
// Admin template found
$MODE = "admin/";
- }
- elseif (strpos($template, "guest_") > -1)
- {
+ } elseif (strpos($template, "guest_") > -1) {
// Guest template found
$MODE = "guest/";
- }
- elseif (strpos($template, "member_") > -1)
- {
+ } elseif (strpos($template, "member_") > -1) {
// Member template found
$MODE = "member/";
- }
- elseif (strpos($template, "install_") > -1)
- {
+ } elseif (strpos($template, "install_") > -1) {
// Installation template found
$MODE = "install/";
- }
- elseif (strpos($template, "ext_") > -1)
- {
+ } elseif (strpos($template, "ext_") > -1) {
// Extension template found
$MODE = "ext/";
- }
- elseif (strpos($template, "la_") > -1)
- {
+ } elseif (strpos($template, "la_") > -1) {
// "Logical-area" template found
$MODE = "la/";
- }
- else
- {
+ } else {
// Test for extension
$test = substr($template, 0, strpos($template, "_"));
- if (EXT_IS_ACTIVE($test))
- {
+ if (EXT_IS_ACTIVE($test)) {
// Set extra path to extension's name
$MODE = $test."/";
}
@@ -270,8 +278,7 @@ function LOAD_TEMPLATE($template, $return=false, $content="")
////////////////////////
$file = $BASE.$MODE.$template.".tpl";
- if ((!empty($GLOBALS['what'])) && ((strpos($template, "_header") > 0) || (strpos($template, "_footer") > 0)) && (($MODE == "guest/") || ($MODE == "member/") || ($MODE == "admin/")))
- {
+ if ((!empty($GLOBALS['what'])) && ((strpos($template, "_header") > 0) || (strpos($template, "_footer") > 0)) && (($MODE == "guest/") || ($MODE == "member/") || ($MODE == "admin/"))) {
// Select what depended header/footer template file for admin/guest/member area
$file2 = sprintf("%s%s%s_%s.tpl",
$BASE,
@@ -281,104 +288,103 @@ 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))
- {
+ if (!FILE_READABLE($file)) {
// Reset to default template
$file = $BASE.$template.".tpl";
- }
+ } // END - if
// Now does the final template exists?
- if (file_exists($file))
- {
+ if (FILE_READABLE($file)) {
// The local file does exists so we load it. :)
$tmpl_file = implode("", file($file));
// Replace ' to our own chars to preventing them being quoted
- while (strpos($tmpl_file, "\'") !== false) { $tmpl_file = str_replace("\'", "{QUOT}", $tmpl_file); }
+ while (strpos($tmpl_file, "\'") !== false) { $tmpl_file = str_replace("\'", '{QUOT}', $tmpl_file); }
// Do we have to compile the code?
- if ((strpos($tmpl_file, "\$") !== false) || (strpos($tmpl_file, '{--') !== false) || (strpos($tmpl_file, '--}') > 0))
- {
+ $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))."\";";
eval($tmpl_file);
- }
- else
- {
+ } else {
// Simply return loaded code
$ret = $tmpl_file;
}
// Add surrounding HTML comments to help finding bugs faster
$ret = "\n".$ret."\n";
- }
- elseif ((IS_ADMIN()) || ((mxchange_installing) && (!mxchange_installed)))
- {
+ } elseif ((IS_ADMIN()) || ((isBooleanConstantAndTrue('mxchange_installing')) && (!defined('mxchange_installed')))) {
// Only admins shall see this warning or when installation mode is active
- $ret = "
".TEMPLATE_404."
-(".basename($file).")
-
+ $ret = "
".TEMPLATE_404."
+(".basename($file).")
+
".TEMPLATE_CONTENT."
".print_r($content, true)."
".TEMPLATE_DATA."
".print_r($DATA, true)."
-
";
+
";
}
- if (!empty($ret))
- {
+
+ // Do we have some content to output or return?
+ if (!empty($ret)) {
// Not empty so let's put it out! ;)
- if ($return)
- {
+ if ($return) {
// Return the HTML code
return $ret;
- }
- else
- {
+ } else {
// Output direct
- OUTPUT_HTML ($ret);
+ OUTPUT_HTML($ret);
}
- }
- elseif (DEBUG_MODE)
- {
+ } elseif (isBooleanConstantAndTrue('DEBUG_MODE')) {
// Warning, empty output!
- return "E:".$template."
\n";
+ return "E:".$template."
\n";
}
}
// Send mail out to an email address
-function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML="N", $FROM="")
-{
+function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = 'N', $FROM = "") {
// Compile subject line (for POINTS constant etc.)
- $eval = "\$SUBJECT = \"".COMPILE_CODE(addslashes($SUBJECT))."\";";
+ $eval = "\$SUBJECT = html_entity_decode(\"".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"))
- {
+ 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__);
- list($TO) = SQL_FETCHROW($result_email);
+ } 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__);
+
+ // Does the user exist?
+ if (SQL_NUMROWS($result_email)) {
+ // Load email address
+ list($TO) = SQL_FETCHROW($result_email);
+ } else {
+ // Set webmaster
+ $TO = WEBMASTER;
+ }
+
+ // Free result
SQL_FREERESULT($result_email);
}
+ } elseif ("$TO" == "0") {
+ // Is the webmaster!
+ $TO = WEBMASTER;
}
- // Not in PHPMailer-Mode
+ // Check for PHPMailer or debug-mode
if (!CHECK_PHPMAILER_USAGE()) {
+ // Not in PHPMailer-Mode
if (empty($FROM)) {
// Load email header template
$FROM = LOAD_EMAIL_TEMPLATE("header");
@@ -386,7 +392,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML="N", $FROM="")
// Append header
$FROM .= LOAD_EMAIL_TEMPLATE("header");
}
- } elseif (DEBUG_MODE) {
+ } elseif (isBooleanConstantAndTrue('DEBUG_MODE')) {
if (empty($FROM)) {
// Load email header template
$FROM = LOAD_EMAIL_TEMPLATE("header");
@@ -396,10 +402,13 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML="N", $FROM="")
}
}
+ // Compile "TO"
+ $eval = "\$TO = \"".COMPILE_CODE(addslashes($TO))."\";";
+ eval($eval);
+
// Fix HTML parameter (default is no!)
if (empty($HTML)) $HTML = "N";
- if (DEBUG_MODE)
- {
+ 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 "
".htmlentities(trim($FROM))."
@@ -407,26 +416,18 @@ 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))
- {
- // Compile email
- $TO = COMPILE_CODE($TO);
-
+ } elseif (!empty($TO)) {
// Send Mail away
- SEND_RAW_EMAIL(stripslashes($TO), COMPILE_CODE($SUBJECT), stripslashes($MSG), $FROM);
- }
- elseif ($HTML == "N")
- {
+ SEND_RAW_EMAIL($TO, COMPILE_CODE($SUBJECT), COMPILE_CODE($MSG), $FROM);
+ } elseif ($HTML == "N") {
// Problem found!
- SEND_RAW_EMAIL(WEBMASTER, COMPILE_CODE($SUBJECT), stripslashes($MSG), $FROM);
+ SEND_RAW_EMAIL(WEBMASTER, COMPILE_CODE($SUBJECT), COMPILE_CODE($MSG), $FROM);
}
}
+
// Check if legacy or PHPMailer command
// @private
function CHECK_PHPMAILER_USAGE() {
@@ -445,7 +446,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;
@@ -453,7 +454,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)) {
@@ -478,8 +483,8 @@ function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
// Generate a password in a specified length or use default password length
function GEN_PASS($LEN = 0) {
- global $CONFIG;
- if ($LEN == 0) $LEN = $CONFIG['pass_len'];
+ global $_CONFIG;
+ if ($LEN == 0) $LEN = $_CONFIG['pass_len'];
// 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,-,+,_,/");
@@ -503,7 +508,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
@@ -516,8 +521,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;
@@ -526,8 +530,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;
@@ -536,139 +539,109 @@ function MAKE_DATETIME($time, $mode="0")
}
return $ret;
}
-//
-function TRANSLATE_COMMA($dotted, $cut=true)
-{
- global $CONFIG;
+
+// Translates the american decimal dot into a german comma
+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);
- }
- if (substr($dot, -1, 1) == "x")
- {
- // Last char is the 'x'
- $dotted = substr($dot, 0, -1);
- }
- else
- {
- // Last char is a number
- $dotted = str_replace("x", ".", $dot);
+ if (empty($_CONFIG['max_comma'])) $_CONFIG['max_comma'] = "3";
+ $maxComma = $_CONFIG['max_comma'];
+
+ // 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 {
+ // Don't display commatas even if there are none... ;-)
+ $maxComma = 0;
}
- }
- switch (GET_LANGUAGE())
- {
+ } // 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)
-{
- switch ($sex)
+function TRANSLATE_GENDER ($gender) {
+ switch ($gender)
{
- case "M": $ret = SEX_M; break;
- case "F": $ret = SEX_F; break;
- case "C": $ret = SEX_C; break;
- default : $ret = $sex; break;
+ case "M": $ret = GENDER_M; break;
+ case "F": $ret = GENDER_F; break;
+ case "C": $ret = GENDER_C; break;
+ default : $ret = $gender; break;
}
return $ret;
}
//
-function GET_POOL_TYPE($PT)
-{
- switch ($PT)
- {
- case "TEMP" : $ret = POOL_TEMP; break;
- case "SEND" : $ret = POOL_SEND; break;
- case "NEW" : $ret = POOL_NEW; break;
- case "ADMIN" : $ret = POOL_ADMIN; break;
- case "ACTIVE" : $ret = POOL_ACTIVE; break;
- case "DELETED": $ret = POOL_DELETED; break;
- default : $ret = POOL_UNKNOWN." (".$PT.")"; break;
- }
+function GET_POOL_TYPE($PT) {
+ // Unknown pool type is default
+ $ret = POOL_UNKNOWN." (".$PT.")";
+
+ // Generate constant name
+ $constantName = sprintf("POOL_%s", $PT);
+
+ // Is the type known?
+ if (defined($constantName)) {
+ // Prepare eval command
+ $eval = sprintf("\$ret = %s;", $constantName);
+ eval($eval);
+ } // END - if
+
+ // Return result
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)
-{
- $ret = "0";
- if (is_array($array))
- {
- foreach ($array as $key=>$sel)
- {
+function SELECTION_COUNT($array) {
+ $ret = 0;
+ if (is_array($array)) {
+ foreach ($array as $key => $sel) {
if (!empty($sel)) $ret++;
}
}
return $ret;
}
//
-function IMG_CODE ($code, $TYPE, $DATA, $uid)
-{
- return "";
+function IMG_CODE ($code, $type, $DATA, $uid) {
+ return "";
}
//
-function TRANSLATE_STATUS($status)
-{
+function TRANSLATE_STATUS($status) {
switch ($status)
{
case "UNCONFIRMED":
@@ -690,17 +663,11 @@ function TRANSLATE_STATUS($status)
return $ret;
}
//
-function GET_LANGUAGE()
-{
- global $_COOKIE, $_GET;
-
- if (!empty($_GET['mx_lang']))
- {
+function GET_LANGUAGE() {
+ if (!empty($_GET['mx_lang'])) {
// Accept only first 2 chars
$lang = substr($_GET['mx_lang'], 0, 2);
- }
- else
- {
+ } else {
// Do nothing
$lang = "";
}
@@ -709,293 +676,217 @@ function GET_LANGUAGE()
$ret = DEFAULT_LANG;
// Check GET variable and cookie
- if (!empty($lang))
- {
+ 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);
}
- }
- elseif (!empty($_COOKIE['mx_lang']))
- {
+ } elseif (!isSessionVariableSet('mx_lang')) {
// Return stored value from cookie
- $ret = $_COOKIE['mx_lang'];
+ $ret = get_session('mx_lang');
+
+ // Fixes a warning before the session has the mx_lang constant
+ if (empty($ret)) $ret = DEFAULT_LANG;
}
return $ret;
}
//
-function SET_LANGUAGE($lang)
-{
- global $CONFIG;
+function SET_LANGUAGE($lang) {
+ global $_CONFIG;
// Accept only first 2 chars!
$lang = substr(SQL_ESCAPE(strip_tags($lang)), 0, 2);
// Set cookie
- @setcookie("mx_lang", $lang, (time() + $CONFIG['online_timeout']), COOKIE_PATH);
-
- // Set array
- $_COOKIE['mx_lang'] = $lang;
+ set_session("mx_lang", $lang);
}
//
-function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0")
-{
- global $DATA, $CONFIG, $REPLACER;
+function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0") {
+ global $DATA, $_CONFIG, $REPLACER;
+
+ // Make sure all template names are lowercase!
+ $template = strtolower($template);
+
+ // Default "nickname" if extension is not installed
+ $nick = "---";
- // 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";
+ // Keept for backward-compatiblity (please replace these variables against our new {!CONST!} syntax!)
+ // No longer used: $MAIN_TITLE = MAIN_TITLE; $URL = URL; $WEBMASTER = WEBMASTER;
+
+ // Init variables (DEPRECATED! Use $content[bla] instead.
+ $surname = "";
+ $family = "";
+ $nick = "";
+ $gender = "N";
// Prepare IP number and User Agent
- $REMOTE_ADDR = getenv('REMOTE_ADDR');
- $HTTP_USER_AGENT = getenv('HTTP_USER_AGENT');
+ $REMOTE_ADDR = getenv('REMOTE_ADDR');
+ $HTTP_USER_AGENT = getenv('HTTP_USER_AGENT');
$ADMIN = MAIN_TITLE;
- if (!empty($_COOKIE['admin_login']))
- {
+ 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($_COOKIE['admin_login'])), __FILE__, __LINE__);
+ array(get_session('admin_login')), __FILE__, __LINE__);
list($ADMIN) = SQL_FETCHROW($result);
SQL_FREERESULT($result);
- }
+ } // END - if
// Expiration in a nice output format
- if ($CONFIG['auto_purge'] == 0)
- {
+ if ($_CONFIG['auto_purge'] == 0) {
// Will never expire!
$EXPIRATION = MAIL_WILL_NEVER_EXPIRE;
- }
- elseif (function_exists('CREATE_FANCY_TIME'))
- {
+ } elseif (function_exists('CREATE_FANCY_TIME')) {
// Create nice date string
- $EXPIRATION = CREATE_FANCY_TIME($CONFIG['auto_purge']);
- }
- else
- {
+ $EXPIRATION = CREATE_FANCY_TIME($_CONFIG['auto_purge']);
+ } else {
// Display days only
- $EXPIRATION = round($CONFIG['auto_purge']/60/60/24)." "._DAYS;
+ $EXPIRATION = round($_CONFIG['auto_purge']/60/60/24)." "._DAYS;
}
- switch ($template)
- {
- case "bonus-mail": // Load data for the bonus mail
- $BONUSID = $DATA[0];
- $content = $DATA[2];
- $POINTS = TRANSLATE_COMMA($DATA[4]);
- $TIME = $DATA[5];
- $TARGET_URL = $DATA[8];
- $CATEGORY = GET_CATEGORY($DATA[9]);
- $DATA[10] = $UID;
-
- // Replace variables
- foreach ($REPLACER as $key=>$value)
- {
- if (isset($DATA[$key])) $content = str_replace($value, $DATA[$key], $content);
- }
- break;
- case "order-admin":
- case "order-member":
- $BLOCKS = $CONFIG['max_send'];
- $SUBJECT = $DATA[0];
- $content = $DATA[1];
- $PAYMENT = GET_PAYMENT($DATA[3]);
- $TARGET_URL = $DATA[5];
- $CATEGORY = GET_CATEGORY($DATA[6]);
- break;
-
- case "order-reject":
- case "order-deleted":
- case "order-accept":
- $TARGET_URL = $DATA[0];
- $URL = $DATA[0];
- $SUBJECT = $DATA[1];
- break;
-
- case "new-pass":
- $PASS = $DATA[0];
- $REMOTE = $DATA[1];
- break;
-
- case "confirm-member":
- $POINTS = $CONFIG['points_register'];
- break;
-
- case "confirm-referral":
- $PERCENT = $DATA[0];
- $LEVEL = $DATA[1];
- $POINTS = $DATA[2];
- $REFID = $DATA[3];
- break;
-
- case "normal-mail":
- $SEND_UID = $DATA[1];
- $CATEGORY = GET_CATEGORY($DATA[9]);
- $TIME = GET_PAY_POINTS($DATA[5], "time");
- $TARGET_URL = $DATA[7];
- $POINTS = TRANSLATE_COMMA(GET_PAY_POINTS($DATA[5], "payment"));
- // Warning! This ID has changed from 10 to 11!
- $MAILID = $DATA[11];
-
- // Replace variables
- foreach ($REPLACER as $key=>$value)
- {
- if (isset($DATA[$key])) $content = str_replace($value, $DATA[$key], $content);
- }
- break;
-
- case "done-member":
- case "done-admin":
- $SEND_UID = $DATA[1];
- $CATEGORY = GET_CATEGORY($DATA[9]);
- $TARGET_URL = $DATA[7];
- break;
-
- case "back-admin":
- case "back-member":
- $POINTS = TRANSLATE_COMMA($DATA[10]);
- break;
-
- case "add-points":
- $POINTS = $_POST['points'];
- break;
-
- case "guest_request_confirm":
- $HASH = $DATA[2];
- break;
- }
+ // Is content an array?
+ if (is_array($content)) {
+ // Add expiration to array, $EXPIRATION is now deprecated!
+ $content['expiration'] = $EXPIRATION;
+ } // END - if
// Load user's data
- if ($UID > 0)
- {
- if (EXT_IS_ACTIVE("nickname"))
- {
+ 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",
- array(bigintval($UID)), __FILE__, __LINE__);
- list($surname, $family, $sex, $email, $nick) = SQL_FETCHROW($result);
+ $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__);
+ list($surname, $family, $gender, $email, $nick) = SQL_FETCHROW($result);
SQL_FREERESULT($result);
- }
- else
- {
+ } else {
// Load normal data
- $result = SQL_QUERY_ESC("SELECT surname, family, sex, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d LIMIT 1",
- array(bigintval($UID)), __FILE__, __LINE__);
- list($surname, $family, $sex, $email) = SQL_FETCHROW($result);
+ $result = SQL_QUERY_ESC("SELECT surname, family, gender, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
+ array(bigintval($UID)), __FILE__, __LINE__);
+ list($surname, $family, $gender, $email) = SQL_FETCHROW($result);
SQL_FREERESULT($result);
- $nick = "---";
}
- }
- else
- {
- // Neutral sex and email address is default
- $sex = "N";
+ } else {
+ // Neutral gender and email address is default
+ $gender = "N";
$email = WEBMASTER;
}
// Translate M to male or F to female
- $salut = TRANSLATE_SEX($sex);
+ $gender = TRANSLATE_GENDER($gender);
+
+ // Insert data if content is an array
+ if (is_array($content)) {
+ // Please do no longer use direct variable names, use $content[bla]
+ // instead.
+ $content['gender'] = $gender;
+ $content['surname'] = $surname;
+ $content['family'] = $family;
+ $content['email'] = $email;
+ $content['nick'] = $nick;
+ } // END - if
// Store email for some functions in global data array
$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)
- {
+ if (strpos($template, "admin_") > -1) {
// Admin template found
$file = $BASE."admin/".$template.".tpl";
- }
- elseif (strpos($template, "guest_") > -1)
- {
+ } elseif (strpos($template, "guest_") > -1) {
// Guest template found
$file = $BASE."guest/".$template.".tpl";
- }
- elseif (strpos($template, "member_") > -1)
- {
+ } elseif (strpos($template, "member_") > -1) {
// Member template found
$file = $BASE."member/".$template.".tpl";
- }
- else
- {
+ } else {
// Test for extension
$test = substr($template, 0, strpos($template, "_"));
- if (EXT_IS_ACTIVE($test))
- {
+ if (EXT_IS_ACTIVE($test)) {
// Set extra path to extension's name
$file = $BASE.$test."/".$template.".tpl";
- }
- else
- {
+ } else {
// No special filename
$file = $BASE.$template.".tpl";
}
}
// Does the special template exists?
- if (!@file_exists($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)))
- {
+ $newContent = "";
+ if (FILE_READABLE($file)) {
// The local file does exists so we load it. :)
$tmpl_file = @implode("", @file($file));
$tmpl_file = addslashes($tmpl_file);
- // Compile code
- $tmpl_file = COMPILE_CODE($tmpl_file);
-
// Run code
- $tmpl_file = "\$content=\"".$tmpl_file."\";";
+ $tmpl_file = "\$newContent=\"".COMPILE_CODE($tmpl_file)."\";";
eval($tmpl_file);
- // Replace HTML confirm chars
- $content = html_entity_decode($content);
- }
- elseif (!empty($template))
- {
+ // Replace HTML conform chars
+ $newContent = html_entity_decode($newContent);
+ } elseif (!empty($template)) {
// Template file not found!
- $content = TEMPLATE_404.": ".$template."
+ $newContent = TEMPLATE_404.": ".$template."
".TEMPLATE_CONTENT."
-".print_r($content, true)."
+".print_r($newContent, true)."
".TEMPLATE_DATA."
".print_r($DATA, true)."
-
";
+
";
// Debug mode not active? Then remove the HTML tags
- if (!DEBUG_MODE) $content = strip_tags($content);
- }
- else
- {
+ if (!DEBUG_MODE) $newContent = strip_tags($newContent);
+ } else {
// No template name supplied!
- $content = NO_TEMPLATE_SUPPLIED;
+ $newContent = NO_TEMPLATE_SUPPLIED;
}
- return COMPILE_CODE($content);
+
+ // Is there some content?
+ if (empty($newContent)) {
+ // Compiling failed
+ $newContent = "Compiler error for template {$template}!";
+ } // END - if
+
+ // Return compiled content
+ return COMPILE_CODE($newContent);
}
//
-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);
- $YEAR = date("Y", $stamp);
+ $YEAR = date('Y', $stamp);
// Create timestamp for wished time which depends on extracted date
return mktime($H, $M, $S, $MONTH, $DAY, $YEAR);
}
//
function LOAD_URL($URL, $addUrlData=true) {
+ global $CSS, $_CONFIG, $footer;
+
+ // Check if http(s):// is there
+ if ((substr($URL, 0, 7) != "http://") && (substr($URL, 0, 8) != "https://")) {
+ // Make all URLs full-qualified
+ $URL = URL."/".$URL;
+ }
+
// 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);
@@ -1005,14 +896,19 @@ function LOAD_URL($URL, $addUrlData=true) {
$URL = htmlentities(strip_tags($URL), ENT_QUOTES);
// Output new location link as anchor
- OUTPUT_HTML ("".$URL."\n");
+ 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
include(PATH."inc/header.php");
- OUTPUT_HTML (LOAD_URL_ERROR_1.$URL.LOAD_URL_ERROR_2);
+ LOAD_TEMPLATE("redirect_url", false, str_replace("&", "&", $URL));
include(PATH."inc/footer.php");
}
exit();
@@ -1029,11 +925,11 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) {
if ($constants) {
// BEFORE 0.2.1 : Language and data constants
// WITH 0.2.1+ : Only language constants
- $code = str_replace("{--", '".', str_replace("--}", '."', $code));
+ $code = str_replace('{--', '".', str_replace('--}', '."', $code));
// BEFORE 0.2.1 : Not used
// WITH 0.2.1+ : Data constants
- $code = str_replace("{!", '".', str_replace("!}", '."', $code));
+ $code = str_replace('{!', '".', str_replace("!}", '."', $code));
}
// Compile QUOT and other non-HTML codes
@@ -1043,7 +939,7 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) {
}
// But shall I keep simple quotes for later use?
- if ($simple) $code = str_replace("\'", "{QUOT}", $code);
+ if ($simple) $code = str_replace("\'", '{QUOT}', $code);
// Find $content[bla][blub] entries
@preg_match_all('/\$(content|DATA)((\[([a-zA-Z0-9-_]+)\])*)/', $code, $matches);
@@ -1052,20 +948,21 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) {
if ((count($matches) > 0) && (count($matches[0]) > 0)) {
// Replace all matches
$matchesFound = array();
- foreach ($matches[0] as $key=>$match) {
+ foreach ($matches[0] as $key => $match) {
// Avoid replacing matches multiple times
if (!isset($matchesFound[$match])) {
// Not yet replaced!
$code = str_replace($match, "\".".$match.".\"", $code);
$matchesFound[$match] = 1;
- }
+ } // END - if
// Take all string elements
- if (("".bigintval($matches[4][$key])."" != $matches[4][$key]) && (!isset($matchesFound[$key."_".$matches[4][$key]]))) {
+ if ((is_string($matches[4][$key])) && (!isset($matchesFound[$key."_".$matches[4][$key]]))) {
// Replace it in the code
- $code = str_replace("[".$matches[4][$key]."]", "['".$matches[4][$key]."']", $code);
+ $newMatch = str_replace("[".$matches[4][$key]."]", "['".$matches[4][$key]."']", $match);
+ $code = str_replace($match, $newMatch, $code);
$matchesFound[$key."_".$matches[4][$key]] = 1;
- }
+ } // END - if
}
}
@@ -1092,78 +989,71 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) {
function array_pk_sort(&$array, $a_sort, $primary_key = 0, $order = -1, $nums = false)
{
$dummy = $array;
- while ($primary_key < count($a_sort))
- {
- foreach ($dummy[$a_sort[$primary_key]] as $key=>$value)
- {
- foreach ($dummy[$a_sort[$primary_key]] as $key2=>$value2)
- {
+ while ($primary_key < count($a_sort)) {
+ foreach ($dummy[$a_sort[$primary_key]] as $key => $value) {
+ foreach ($dummy[$a_sort[$primary_key]] as $key2 => $value2) {
$match = false;
- if (!$nums)
- {
+ if (!$nums) {
// Sort byte-by-byte (also numbers will be interpreted as chars! E.g.: "9" > "10")
if (($key != $key2) && (strcmp(strtolower($dummy[$a_sort[$primary_key]][$key]), strtolower($dummy[$a_sort[$primary_key]][$key2])) == $order)) $match = true;
- }
- elseif ($key != $key2)
- {
+ } elseif ($key != $key2) {
// Sort numbers (E.g.: 9 < 10)
if (($dummy[$a_sort[$primary_key]][$key] < $dummy[$a_sort[$primary_key]][$key2]) && ($order == -1)) $match = true;
if (($dummy[$a_sort[$primary_key]][$key] > $dummy[$a_sort[$primary_key]][$key2]) && ($order == 1)) $match = true;
}
- if ($match)
- {
+
+ if ($match) {
// We have found two different values, so let's sort whole array
- foreach ($dummy as $sort_key=>$sort_val)
- {
+ foreach ($dummy as $sort_key => $sort_val) {
$t = $dummy[$sort_key][$key];
$dummy[$sort_key][$key] = $dummy[$sort_key][$key2];
$dummy[$sort_key][$key2] = $t;
unset($t);
- }
- }
- }
- }
+ } // END - foreach
+ } // END - if
+ } // END - foreach
+ } // END - foreach
// Count one up
$primary_key++;
- }
+ } // END - while
// Write back sorted array
$array = $dummy;
}
//
-function ADD_SELECTION($TYPE, $DEFAULT, $PREFIX="", $id="0")
+function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
{
global $MONTH_DESCR; $OUT = "";
- if ($TYPE == "yn")
+ if ($type == "yn")
{
// This is a yes/no selection only!
- if ($id > 0) $PREFIX .= "[".$id."]";
- $OUT .= "