X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=0.2.1%2Finc%2Ffunctions.php;h=7088c4c07cc78948642fc5f35661907920f67006;hb=7bc25dd08431c94ce9edca131d56c1a36b13c28a;hp=dc1aa2f0ea28d77707d36aed5f5eb1b033328287;hpb=157ee010917df5ca07e6d31b42f67417b2516d74;p=mailer.git
diff --git a/0.2.1/inc/functions.php b/0.2.1/inc/functions.php
index dc1aa2f0ea..7088c4c07c 100644
--- a/0.2.1/inc/functions.php
+++ b/0.2.1/inc/functions.php
@@ -1,391 +1,391 @@
-
-
- ";
- 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 ("");
-}
-
-// Output HTML code directly or "render" it. You addionally switch the new-line character off
-function OUTPUT_HTML ($HTML, $NEW_LINE = true) {
- // Some global variables
- global $OUTPUT, $FOOTER, $CSS;
-
- // Do we have HTML-Code here?
- if (!empty($HTML)) {
- // Yes, so we handle it as you have configured
- switch (OUTPUT_MODE)
- {
- case "render":
- // That's why you don't need any \n at the end of your HTML code... :-)
- if (_OB_CACHING == "on")
- {
- // Output into PHP's internal buffer
- echo stripslashes($HTML);
-
- // That's why you don't need any \n at the end of your HTML code... :-)
- if ($NEW_LINE) echo "\n";
- }
- else
- {
- // Render mode for old or lame servers...
- $OUTPUT .= $HTML;
-
- // That's why you don't need any \n at the end of your HTML code... :-)
- if ($NEW_LINE) $OUTPUT .= "\n";
- }
- break;
-
- case "direct":
- // If we are switching from render to direct output rendered code
- if ((!empty($OUTPUT)) && (_OB_CACHING != "on")) { echo $OUTPUT; $OUTPUT = ""; }
-
- // The same as above... ^
- echo stripslashes($HTML);
- if ($NEW_LINE) echo "\n";
- break;
-
- default:
- // Huh, something goes wrong or maybe you have edited config.php ???
- die ("".FATAL_ERROR.": ".LANG_NO_RENDER_DIRECT);
- break;
- }
- } elseif ((_OB_CACHING == "on") && ($FOOTER == 1)) {
- // Output cached HTML code
- $OUTPUT = ob_get_contents();
-
- // Clear output buffer for later output
- ob_end_clean();
-
- if ((EXT_IS_ACTIVE("rewrite", true)) && (function_exists('REWRITE_LINKS')) && ($CSS != "1") && ($CSS != "-1")) {
- $OUTPUT = REWRITE_LINKS($OUTPUT);
- }
-
- // Compile and run finished rendered HTML code
- while (strpos($OUTPUT, "{!") > 0) {
- $eval = "\$OUTPUT = \"" . COMPILE_CODE(addslashes($OUTPUT)) . "\";";
- @eval($eval);
- }
-
- // Output code here, DO NOT REMOVE! ;-)
- echo stripslashes($OUTPUT);
- flush();
- } 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);
- }
-
- // Compile and run finished rendered HTML code
- while (strpos($OUTPUT, "{!") > 0) {
- $eval = "\$OUTPUT = \"" . COMPILE_CODE(addslashes($OUTPUT)) . "\";";
- @eval($eval);
- }
-
- // Output code here, DO NOT REMOVE! ;-)
- echo stripslashes($OUTPUT);
- flush();
- }
-}
-
-// 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);
- }
-}
-
-// Load a template file and return it's content (only it's name; do not use ' or ")
-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']);
- $ret = "";
- if (empty($GLOBALS['refid'])) $GLOBALS['refid'] = 0;
- $REFID = $GLOBALS['refid'];
-
- 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",
- array($GLOBALS['userid']), __FILE__, __LINE__);
- list($sex, $surname, $family) = SQL_FETCHROW($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/";
- $MODE = "";
-
- // Check for admin/guest/member templates
- if (strpos($template, "admin_") > -1)
- {
- // Admin template found
- $MODE = "admin/";
- }
- elseif (strpos($template, "guest_") > -1)
- {
- // Guest template found
- $MODE = "guest/";
- }
- elseif (strpos($template, "member_") > -1)
- {
- // Member template found
- $MODE = "member/";
- }
- elseif (strpos($template, "install_") > -1)
- {
- // Installation template found
- $MODE = "install/";
- }
- elseif (strpos($template, "ext_") > -1)
- {
- // Extension template found
- $MODE = "ext/";
- }
- elseif (strpos($template, "la_") > -1)
- {
- // "Logical-area" template found
- $MODE = "la/";
- }
- else
- {
- // Test for extension
- $test = substr($template, 0, strpos($template, "_"));
- if (EXT_IS_ACTIVE($test))
- {
- // Set extra path to extension's name
- $MODE = $test."/";
- }
- }
-
- ////////////////////////
- // Generate file name //
- ////////////////////////
- $file = $BASE.$MODE.$template.".tpl";
-
- 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,
- $MODE,
- $template,
- SQL_ESCAPE($GLOBALS['what'])
- );
-
- // Probe for it...
- if (file_exists($file2)) $file = $file2;
-
- // Remove variable from memory
- unset($file2);
- }
-
- // Does the special template exists?
- if (!file_exists($file))
- {
- // Reset to default template
- $file = $BASE.$template.".tpl";
- }
-
- // Now does the final template exists?
- if (file_exists($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); }
-
- // Do we have to compile the code?
- 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
- {
- // 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)))
- {
- // Only admins shall see this warning or when installation mode is active
- $ret = "
".TEMPLATE_404."
-(".basename($file).")
-
-".TEMPLATE_CONTENT."
-".print_r($content, true)."
-".TEMPLATE_DATA."
-".print_r($DATA, true)."
-
";
- }
- if (!empty($ret))
- {
- // Not empty so let's put it out! ;)
- if ($return)
- {
- // Return the HTML code
- return $ret;
- }
- else
- {
- // Output direct
- OUTPUT_HTML ($ret);
- }
- }
- elseif (DEBUG_MODE)
- {
- // Warning, empty output!
- return "E:".$template."
\n";
- }
-}
-
-// 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($eval);
- $SUBJECT = html_entity_decode($SUBJECT);
-
- // Set from header
- if (!eregi("@", $TO))
- {
- // 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__);
- list($TO) = SQL_FETCHROW($result_email);
- SQL_FREERESULT($result_email);
- }
- }
-
- // Not in PHPMailer-Mode
- if (!CHECK_PHPMAILER_USAGE()) {
- if (empty($FROM)) {
- // Load email header template
- $FROM = LOAD_EMAIL_TEMPLATE("header");
+
+
+ ";
+ 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 ("");
+}
+
+// Output HTML code directly or "render" it. You addionally switch the new-line character off
+function OUTPUT_HTML ($HTML, $NEW_LINE = true) {
+ // Some global variables
+ global $OUTPUT, $FOOTER, $CSS;
+
+ // Do we have HTML-Code here?
+ if (!empty($HTML)) {
+ // Yes, so we handle it as you have configured
+ switch (OUTPUT_MODE)
+ {
+ case "render":
+ // That's why you don't need any \n at the end of your HTML code... :-)
+ if (_OB_CACHING == "on")
+ {
+ // Output into PHP's internal buffer
+ echo stripslashes($HTML);
+
+ // That's why you don't need any \n at the end of your HTML code... :-)
+ if ($NEW_LINE) echo "\n";
+ }
+ else
+ {
+ // Render mode for old or lame servers...
+ $OUTPUT .= $HTML;
+
+ // That's why you don't need any \n at the end of your HTML code... :-)
+ if ($NEW_LINE) $OUTPUT .= "\n";
+ }
+ break;
+
+ case "direct":
+ // If we are switching from render to direct output rendered code
+ if ((!empty($OUTPUT)) && (_OB_CACHING != "on")) { echo $OUTPUT; $OUTPUT = ""; }
+
+ // The same as above... ^
+ echo stripslashes($HTML);
+ if ($NEW_LINE) echo "\n";
+ break;
+
+ default:
+ // Huh, something goes wrong or maybe you have edited config.php ???
+ die ("".FATAL_ERROR.": ".LANG_NO_RENDER_DIRECT);
+ break;
+ }
+ } elseif ((_OB_CACHING == "on") && ($FOOTER == 1)) {
+ // Output cached HTML code
+ $OUTPUT = ob_get_contents();
+
+ // Clear output buffer for later output
+ ob_end_clean();
+
+ if ((EXT_IS_ACTIVE("rewrite", true)) && (function_exists('REWRITE_LINKS')) && ($CSS != "1") && ($CSS != "-1")) {
+ $OUTPUT = REWRITE_LINKS($OUTPUT);
+ }
+
+ // Compile and run finished rendered HTML code
+ while (strpos($OUTPUT, "{!") > 0) {
+ $eval = "\$OUTPUT = \"" . COMPILE_CODE(addslashes($OUTPUT)) . "\";";
+ @eval($eval);
+ }
+
+ // Output code here, DO NOT REMOVE! ;-)
+ echo stripslashes($OUTPUT);
+ flush();
+ } 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);
+ }
+
+ // Compile and run finished rendered HTML code
+ while (strpos($OUTPUT, "{!") > 0) {
+ $eval = "\$OUTPUT = \"" . COMPILE_CODE(addslashes($OUTPUT)) . "\";";
+ @eval($eval);
+ }
+
+ // Output code here, DO NOT REMOVE! ;-)
+ echo stripslashes($OUTPUT);
+ flush();
+ }
+}
+
+// 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);
+ }
+}
+
+// Load a template file and return it's content (only it's name; do not use ' or ")
+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']);
+ $ret = "";
+ if (empty($GLOBALS['refid'])) $GLOBALS['refid'] = 0;
+ $REFID = $GLOBALS['refid'];
+
+ 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",
+ array($GLOBALS['userid']), __FILE__, __LINE__);
+ list($sex, $surname, $family) = SQL_FETCHROW($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/";
+ $MODE = "";
+
+ // Check for admin/guest/member templates
+ if (strpos($template, "admin_") > -1)
+ {
+ // Admin template found
+ $MODE = "admin/";
+ }
+ elseif (strpos($template, "guest_") > -1)
+ {
+ // Guest template found
+ $MODE = "guest/";
+ }
+ elseif (strpos($template, "member_") > -1)
+ {
+ // Member template found
+ $MODE = "member/";
+ }
+ elseif (strpos($template, "install_") > -1)
+ {
+ // Installation template found
+ $MODE = "install/";
+ }
+ elseif (strpos($template, "ext_") > -1)
+ {
+ // Extension template found
+ $MODE = "ext/";
+ }
+ elseif (strpos($template, "la_") > -1)
+ {
+ // "Logical-area" template found
+ $MODE = "la/";
+ }
+ else
+ {
+ // Test for extension
+ $test = substr($template, 0, strpos($template, "_"));
+ if (EXT_IS_ACTIVE($test))
+ {
+ // Set extra path to extension's name
+ $MODE = $test."/";
+ }
+ }
+
+ ////////////////////////
+ // Generate file name //
+ ////////////////////////
+ $file = $BASE.$MODE.$template.".tpl";
+
+ 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,
+ $MODE,
+ $template,
+ SQL_ESCAPE($GLOBALS['what'])
+ );
+
+ // Probe for it...
+ if (file_exists($file2)) $file = $file2;
+
+ // Remove variable from memory
+ unset($file2);
+ }
+
+ // Does the special template exists?
+ if (!file_exists($file))
+ {
+ // Reset to default template
+ $file = $BASE.$template.".tpl";
+ }
+
+ // Now does the final template exists?
+ if (file_exists($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); }
+
+ // Do we have to compile the code?
+ 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
+ {
+ // 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)))
+ {
+ // Only admins shall see this warning or when installation mode is active
+ $ret = "
".TEMPLATE_404."
+(".basename($file).")
+
+".TEMPLATE_CONTENT."
+".print_r($content, true)."
+".TEMPLATE_DATA."
+".print_r($DATA, true)."
+
";
+ }
+ if (!empty($ret))
+ {
+ // Not empty so let's put it out! ;)
+ if ($return)
+ {
+ // Return the HTML code
+ return $ret;
+ }
+ else
+ {
+ // Output direct
+ OUTPUT_HTML ($ret);
+ }
+ }
+ elseif (DEBUG_MODE)
+ {
+ // Warning, empty output!
+ return "E:".$template."
\n";
+ }
+}
+
+// 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($eval);
+ $SUBJECT = html_entity_decode($SUBJECT);
+
+ // Set from header
+ if (!eregi("@", $TO))
+ {
+ // 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__);
+ list($TO) = SQL_FETCHROW($result_email);
+ SQL_FREERESULT($result_email);
+ }
+ }
+
+ // Not in PHPMailer-Mode
+ if (!CHECK_PHPMAILER_USAGE()) {
+ if (empty($FROM)) {
+ // Load email header template
+ $FROM = LOAD_EMAIL_TEMPLATE("header");
} else {
- // Append header
- $FROM .= LOAD_EMAIL_TEMPLATE("header");
- }
+ // Append header
+ $FROM .= LOAD_EMAIL_TEMPLATE("header");
+ }
} elseif (DEBUG_MODE) {
if (empty($FROM)) {
// Load email header template
@@ -394,1701 +394,1701 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML="N", $FROM="")
// Append header
$FROM .= LOAD_EMAIL_TEMPLATE("header");
}
- }
-
- // Fix HTML parameter (default is no!)
- if (empty($HTML)) $HTML = "N";
- if (DEBUG_MODE)
- {
- // In debug mode we want to display the mail instead of sending it away so we can debug this part
+ }
+
+ // Fix HTML parameter (default is no!)
+ if (empty($HTML)) $HTML = "N";
+ if (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))."
-To : ".$TO."
-Subject : ".$SUBJECT."
-Message : ".$MSG."
-
\n";
- }
- 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);
-
- // Send Mail away
- SEND_RAW_EMAIL(stripslashes($TO), COMPILE_CODE($SUBJECT), stripslashes($MSG), $FROM);
- }
- elseif ($HTML == "N")
- {
- // Problem found!
- SEND_RAW_EMAIL(WEBMASTER, COMPILE_CODE($SUBJECT), stripslashes($MSG), $FROM);
- }
-}
-// Check if legacy or PHPMailer command
-// @private
-function CHECK_PHPMAILER_USAGE() {
- return (((defined('SMTP_HOSTNAME')) && (defined('SMTP_USER')) && (defined('SMTP_PASSWORD'))) || ((SMTP_HOSTNAME != "") && (SMTP_USER != "")));
-}
+".htmlentities(trim($FROM))."
+To : ".$TO."
+Subject : ".$SUBJECT."
+Message : ".$MSG."
+\n";
+ }
+ 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);
+
+ // Send Mail away
+ SEND_RAW_EMAIL(stripslashes($TO), COMPILE_CODE($SUBJECT), stripslashes($MSG), $FROM);
+ }
+ elseif ($HTML == "N")
+ {
+ // Problem found!
+ SEND_RAW_EMAIL(WEBMASTER, COMPILE_CODE($SUBJECT), stripslashes($MSG), $FROM);
+ }
+}
+// Check if legacy or PHPMailer command
+// @private
+function CHECK_PHPMAILER_USAGE() {
+ return (((defined('SMTP_HOSTNAME')) && (defined('SMTP_USER')) && (defined('SMTP_PASSWORD'))) || ((SMTP_HOSTNAME != "") && (SMTP_USER != "")));
+}
/*
* Send out a raw email with PHPMailer class or legacy mail() command
- */
-function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
- // Shall we use PHPMailer class or legacy mode?
- if (CHECK_PHPMAILER_USAGE()) {
- // Use PHPMailer class with SMTP enabled
- require_once(PATH."inc/phpmailer/class.phpmailer.php");
- require_once(PATH."inc/phpmailer/class.smtp.php");
-
- // get new instance
- $mail = new PHPMailer();
-
- $mail->IsSMTP();
- $mail->SMTPAuth = true;
- $mail->Host = SMTP_HOSTNAME;
- $mail->Port = 25;
- $mail->Username = SMTP_USER;
- $mail->Password = SMTP_PASSWORD;
- $mail->From = $from;
- $mail->FromName = MAIN_TITLE;
- $mail->Subject = $subject;
- if ((EXT_IS_ACTIVE("html_mail")) && (strip_tags($msg) != $msg)) {
- $mail->Body = $msg;
- $mail->AltBody = "Your mail program required HTML support to read this mail!";
- $mail->WordWrap = 70;
- $mail->IsHTML(true);
- } else {
- $mail->Body = $msg;
- }
- $mail->AddAddress($to, "");
- $mail->AddReplyTo(WEBMASTER,MAIN_TITLE);
- $mail->AddCustomHeader("Errors-To:".WEBMASTER);
- $mail->AddCustomHeader("X-Loop:".WEBMASTER);
- $mail->Send();
- } else {
- // Use legacy mail() command
- @mail($to, $subject, $msg, $from);
- }
-}
-//
+ */
+function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
+ // Shall we use PHPMailer class or legacy mode?
+ if (CHECK_PHPMAILER_USAGE()) {
+ // Use PHPMailer class with SMTP enabled
+ require_once(PATH."inc/phpmailer/class.phpmailer.php");
+ require_once(PATH."inc/phpmailer/class.smtp.php");
+
+ // get new instance
+ $mail = new PHPMailer();
+
+ $mail->IsSMTP();
+ $mail->SMTPAuth = true;
+ $mail->Host = SMTP_HOSTNAME;
+ $mail->Port = 25;
+ $mail->Username = SMTP_USER;
+ $mail->Password = SMTP_PASSWORD;
+ $mail->From = $from;
+ $mail->FromName = MAIN_TITLE;
+ $mail->Subject = $subject;
+ if ((EXT_IS_ACTIVE("html_mail")) && (strip_tags($msg) != $msg)) {
+ $mail->Body = $msg;
+ $mail->AltBody = "Your mail program required HTML support to read this mail!";
+ $mail->WordWrap = 70;
+ $mail->IsHTML(true);
+ } else {
+ $mail->Body = $msg;
+ }
+ $mail->AddAddress($to, "");
+ $mail->AddReplyTo(WEBMASTER,MAIN_TITLE);
+ $mail->AddCustomHeader("Errors-To:".WEBMASTER);
+ $mail->AddCustomHeader("X-Loop:".WEBMASTER);
+ $mail->Send();
+ } else {
+ // Use legacy mail() command
+ @mail($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'];
-
- // 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,-,+,_,/");
-
- // Initialize randomizer
- mt_srand((double) microtime() * 1000000);
-
- // Start creating password
- $PASS = "";
- for ($i = 0; $i < $LEN; $i++) {
- $PASS .= $ABC[mt_rand(0, sizeof($ABC) -1)];
- }
-
- // When the size is below 40 we can also add additional security by scrambling it
- if (strlen($PASS) <= 40) {
- // Also scramble the password
- $PASS = scrambleString($PASS);
- }
-
- // Return the password
- return $PASS;
-}
-//
-function MAKE_DATETIME($time, $mode="0")
-{
- if ($time == 0) {
- // Never happend
- return NEVER_HAPPENED;
- } else {
- // Filter out numbers
- $time = bigintval($time);
- }
-
- switch (GET_LANGUAGE())
- {
- case "de": // German date / time format
- 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;
- case "3": $ret = date("d.m.Y", $time); break;
- }
- break;
-
- default: // Default is the US date / time format!
- 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;
- case "3": $ret = date("y-m-d", $time); break;
- }
- }
- return $ret;
-}
-//
-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);
- }
- }
- 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']);
- }
- }
- break;
-
- default:
- if (!$cut)
- {
- if ($pos > 0)
- {
- $dotted = substr($dotted, 0, ($pos + $CONFIG['max_comma'] + 1));
- }
- else
- {
- $dotted .= ".".str_repeat("0", $CONFIG['max_comma']);
- }
- }
- break;
- }
- return $dotted;
-}
-//
-function DEREFERER($URL)
-{
- $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(COMPILE_CODE($URL)));
- return $URL;
-}
-//
-function TRANSLATE_SEX($sex)
-{
- switch ($sex)
- {
- case "M": $ret = SEX_M; break;
- case "F": $ret = SEX_F; break;
- case "C": $ret = SEX_C; break;
- default : $ret = $sex; 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;
- }
- return $ret;
-}
-//
-function FRAMETESTER($URL)
-{
- global $_SERVER;
- $URL = URL."/modules.php?module=frametester&url=".urlencode(base64_encode(COMPILE_CODE($URL)));
- return $URL;
-}
-//
-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 TRANSLATE_STATUS($status)
-{
- switch ($status)
- {
- case "UNCONFIRMED":
- $ret = ACCOUNT_UNCONFIRMED;
- break;
-
- case "CONFIRMED":
- $ret = ACCOUNT_CONFIRMED;
- break;
-
- case "LOCKED":
- $ret = ACCOUNT_LOCKED;
- break;
-
- default:
- $ret = UNKNOWN_STATUS_1.$status.UNKNOWN_STATUS_2;
- break;
- }
- return $ret;
-}
-//
-function GET_LANGUAGE()
-{
- global $_COOKIE, $_GET;
-
- if (!empty($_GET['mx_lang']))
- {
- // Accept only first 2 chars
- $lang = substr($_GET['mx_lang'], 0, 2);
- }
- else
- {
- // Do nothing
- $lang = "";
- }
-
- // Set default return value to default language from config
- $ret = DEFAULT_LANG;
-
- // Check GET variable and cookie
- if (!empty($lang))
- {
- // Check if main language file does exist
- if (file_exists(PATH."inc/language/".$lang.".php"))
- {
- // Okay found, so let's update cookies
- SET_LANGUAGE($lang);
- }
- }
- elseif (!empty($_COOKIE['mx_lang']))
- {
- // Return stored value from cookie
- $ret = $_COOKIE['mx_lang'];
- }
- return $ret;
-}
-//
-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;
-}
-//
-function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0")
-{
- global $DATA, $CONFIG, $REPLACER;
-
- // 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";
-
- // Prepare IP number and User Agent
- $REMOTE_ADDR = getenv('REMOTE_ADDR');
- $HTTP_USER_AGENT = getenv('HTTP_USER_AGENT');
-
- $ADMIN = MAIN_TITLE;
- if (!empty($_COOKIE['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__);
- list($ADMIN) = SQL_FETCHROW($result);
- SQL_FREERESULT($result);
- }
-
- // Expiration in a nice output format
- if ($CONFIG['auto_purge'] == 0)
- {
- // Will never expire!
- $EXPIRATION = MAIL_WILL_NEVER_EXPIRE;
- }
- elseif (function_exists('CREATE_FANCY_TIME'))
- {
- // Create nice date string
- $EXPIRATION = CREATE_FANCY_TIME($CONFIG['auto_purge']);
- }
- else
- {
- // Display days only
- $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;
- }
-
- // Load user's data
- 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);
- 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",
- array(bigintval($UID)), __FILE__, __LINE__);
- list($surname, $family, $sex, $email) = SQL_FETCHROW($result);
- SQL_FREERESULT($result);
- $nick = "---";
- }
- }
- else
- {
- // Neutral sex and email address is default
- $sex = "N";
- $email = WEBMASTER;
- }
-
- // Translate M to male or F to female
- $salut = TRANSLATE_SEX($sex);
-
- // Store email for some functions in global data array
- $DATA['email'] = $email;
-
- // Base directory
- $BASE = PATH."templates/".GET_LANGUAGE()."/emails/";
-
- // Check for admin/guest/member templates
- if (strpos($template, "admin_") > -1)
- {
- // Admin template found
- $file = $BASE."admin/".$template.".tpl";
- }
- elseif (strpos($template, "guest_") > -1)
- {
- // Guest template found
- $file = $BASE."guest/".$template.".tpl";
- }
- elseif (strpos($template, "member_") > -1)
- {
- // Member template found
- $file = $BASE."member/".$template.".tpl";
- }
- else
- {
- // Test for extension
- $test = substr($template, 0, strpos($template, "_"));
- if (EXT_IS_ACTIVE($test))
- {
- // Set extra path to extension's name
- $file = $BASE.$test."/".$template.".tpl";
- }
- else
- {
- // No special filename
- $file = $BASE.$template.".tpl";
- }
- }
-
- // Does the special template exists?
- if (!@file_exists($file))
- {
- // Reset to default template
- $file = $BASE.$template.".tpl";
- }
-
- // Now does the final template exists?
- if ((@file_exists($file)) && (is_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."\";";
- eval($tmpl_file);
-
- // Replace HTML confirm chars
- $content = html_entity_decode($content);
- }
- elseif (!empty($template))
- {
- // Template file not found!
+function GEN_PASS($LEN = 0) {
+ 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,-,+,_,/");
+
+ // Initialize randomizer
+ mt_srand((double) microtime() * 1000000);
+
+ // Start creating password
+ $PASS = "";
+ for ($i = 0; $i < $LEN; $i++) {
+ $PASS .= $ABC[mt_rand(0, sizeof($ABC) -1)];
+ }
+
+ // When the size is below 40 we can also add additional security by scrambling it
+ if (strlen($PASS) <= 40) {
+ // Also scramble the password
+ $PASS = scrambleString($PASS);
+ }
+
+ // Return the password
+ return $PASS;
+}
+//
+function MAKE_DATETIME($time, $mode="0")
+{
+ if ($time == 0) {
+ // Never happend
+ return NEVER_HAPPENED;
+ } else {
+ // Filter out numbers
+ $time = bigintval($time);
+ }
+
+ switch (GET_LANGUAGE())
+ {
+ case "de": // German date / time format
+ 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;
+ case "3": $ret = date("d.m.Y", $time); break;
+ }
+ break;
+
+ default: // Default is the US date / time format!
+ 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;
+ case "3": $ret = date("y-m-d", $time); break;
+ }
+ }
+ return $ret;
+}
+//
+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);
+ }
+ }
+ 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']);
+ }
+ }
+ break;
+
+ default:
+ if (!$cut)
+ {
+ if ($pos > 0)
+ {
+ $dotted = substr($dotted, 0, ($pos + $CONFIG['max_comma'] + 1));
+ }
+ else
+ {
+ $dotted .= ".".str_repeat("0", $CONFIG['max_comma']);
+ }
+ }
+ break;
+ }
+ return $dotted;
+}
+//
+function DEREFERER($URL)
+{
+ $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(COMPILE_CODE($URL)));
+ return $URL;
+}
+//
+function TRANSLATE_SEX($sex)
+{
+ switch ($sex)
+ {
+ case "M": $ret = SEX_M; break;
+ case "F": $ret = SEX_F; break;
+ case "C": $ret = SEX_C; break;
+ default : $ret = $sex; 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;
+ }
+ return $ret;
+}
+//
+function FRAMETESTER($URL)
+{
+ global $_SERVER;
+ $URL = URL."/modules.php?module=frametester&url=".urlencode(base64_encode(COMPILE_CODE($URL)));
+ return $URL;
+}
+//
+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 TRANSLATE_STATUS($status)
+{
+ switch ($status)
+ {
+ case "UNCONFIRMED":
+ $ret = ACCOUNT_UNCONFIRMED;
+ break;
+
+ case "CONFIRMED":
+ $ret = ACCOUNT_CONFIRMED;
+ break;
+
+ case "LOCKED":
+ $ret = ACCOUNT_LOCKED;
+ break;
+
+ default:
+ $ret = UNKNOWN_STATUS_1.$status.UNKNOWN_STATUS_2;
+ break;
+ }
+ return $ret;
+}
+//
+function GET_LANGUAGE()
+{
+ global $_COOKIE, $_GET;
+
+ if (!empty($_GET['mx_lang']))
+ {
+ // Accept only first 2 chars
+ $lang = substr($_GET['mx_lang'], 0, 2);
+ }
+ else
+ {
+ // Do nothing
+ $lang = "";
+ }
+
+ // Set default return value to default language from config
+ $ret = DEFAULT_LANG;
+
+ // Check GET variable and cookie
+ if (!empty($lang))
+ {
+ // Check if main language file does exist
+ if (file_exists(PATH."inc/language/".$lang.".php"))
+ {
+ // Okay found, so let's update cookies
+ SET_LANGUAGE($lang);
+ }
+ }
+ elseif (!empty($_COOKIE['mx_lang']))
+ {
+ // Return stored value from cookie
+ $ret = $_COOKIE['mx_lang'];
+ }
+ return $ret;
+}
+//
+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;
+}
+//
+function LOAD_EMAIL_TEMPLATE($template, $content="", $UID="0")
+{
+ global $DATA, $CONFIG, $REPLACER;
+
+ // 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";
+
+ // Prepare IP number and User Agent
+ $REMOTE_ADDR = getenv('REMOTE_ADDR');
+ $HTTP_USER_AGENT = getenv('HTTP_USER_AGENT');
+
+ $ADMIN = MAIN_TITLE;
+ if (!empty($_COOKIE['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__);
+ list($ADMIN) = SQL_FETCHROW($result);
+ SQL_FREERESULT($result);
+ }
+
+ // Expiration in a nice output format
+ if ($CONFIG['auto_purge'] == 0)
+ {
+ // Will never expire!
+ $EXPIRATION = MAIL_WILL_NEVER_EXPIRE;
+ }
+ elseif (function_exists('CREATE_FANCY_TIME'))
+ {
+ // Create nice date string
+ $EXPIRATION = CREATE_FANCY_TIME($CONFIG['auto_purge']);
+ }
+ else
+ {
+ // Display days only
+ $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;
+ }
+
+ // Load user's data
+ 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);
+ 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",
+ array(bigintval($UID)), __FILE__, __LINE__);
+ list($surname, $family, $sex, $email) = SQL_FETCHROW($result);
+ SQL_FREERESULT($result);
+ $nick = "---";
+ }
+ }
+ else
+ {
+ // Neutral sex and email address is default
+ $sex = "N";
+ $email = WEBMASTER;
+ }
+
+ // Translate M to male or F to female
+ $salut = TRANSLATE_SEX($sex);
+
+ // Store email for some functions in global data array
+ $DATA['email'] = $email;
+
+ // Base directory
+ $BASE = PATH."templates/".GET_LANGUAGE()."/emails/";
+
+ // Check for admin/guest/member templates
+ if (strpos($template, "admin_") > -1)
+ {
+ // Admin template found
+ $file = $BASE."admin/".$template.".tpl";
+ }
+ elseif (strpos($template, "guest_") > -1)
+ {
+ // Guest template found
+ $file = $BASE."guest/".$template.".tpl";
+ }
+ elseif (strpos($template, "member_") > -1)
+ {
+ // Member template found
+ $file = $BASE."member/".$template.".tpl";
+ }
+ else
+ {
+ // Test for extension
+ $test = substr($template, 0, strpos($template, "_"));
+ if (EXT_IS_ACTIVE($test))
+ {
+ // Set extra path to extension's name
+ $file = $BASE.$test."/".$template.".tpl";
+ }
+ else
+ {
+ // No special filename
+ $file = $BASE.$template.".tpl";
+ }
+ }
+
+ // Does the special template exists?
+ if (!@file_exists($file))
+ {
+ // Reset to default template
+ $file = $BASE.$template.".tpl";
+ }
+
+ // Now does the final template exists?
+ if ((@file_exists($file)) && (is_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."\";";
+ eval($tmpl_file);
+
+ // Replace HTML confirm chars
+ $content = html_entity_decode($content);
+ }
+ elseif (!empty($template))
+ {
+ // Template file not found!
$content = TEMPLATE_404.": ".$template."
".TEMPLATE_CONTENT."
".print_r($content, true)."
".TEMPLATE_DATA."
".print_r($DATA, true)."
-
";
+
";
// Debug mode not active? Then remove the HTML tags
if (!DEBUG_MODE) $content = strip_tags($content);
- }
- else
- {
- // No template name supplied!
- $content = NO_TEMPLATE_SUPPLIED;
- }
- return COMPILE_CODE($content);
-}
-//
-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);
-
- // Create timestamp for wished time which depends on extracted date
- return mktime($H, $M, $S, $MONTH, $DAY, $YEAR);
-}
-//
-function LOAD_URL($URL) {
- // Add some data to URL if cookies are not accepted
- if ((!defined('__COOKIES')) || (!__COOKIES)) $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')))) {
- // Search engine bot detected so let's rewrite many chars for the link
- $URL = htmlentities(strip_tags($URL), ENT_QUOTES);
-
- // Output new location link as anchor
- OUTPUT_HTML ("".$URL."\n");
- } elseif (!headers_sent()) {
- // Load URL when headers are not sent
- @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);
- include(PATH."inc/footer.php");
- }
- exit();
-}
-//
-function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) {
- global $SEC_CHARS, $URL_CHARS;
- $ARRAY = $SEC_CHARS;
-
- // Select smaller set of chars to replace when we e.g. want to compile URLs
- if (!$full) $ARRAY = $URL_CHARS;
-
- // Compile constants
- if ($constants) {
- // BEFORE 0.2.1 : Language and data constants
- // WITH 0.2.1+ : Only language constants
- $code = str_replace("{--", '".', str_replace("--}", '."', $code));
-
- // BEFORE 0.2.1 : Not used
- // WITH 0.2.1+ : Data constants
- $code = str_replace("{!", '".', str_replace("!}", '."', $code));
- }
-
- // Compile QUOT and other non-HTML codes
- foreach ($ARRAY['to'] as $k => $to) {
- // Do the reversed thing as in inc/libs/security_functions.php
- $code = str_replace($to, $ARRAY['from'][$k], $code);
- }
-
- // But shall I keep simple quotes for later use?
- if ($simple) $code = str_replace("\'", "{QUOT}", $code);
-
- // Find $content[bla][blub] entries
- @preg_match_all('/\$(content|DATA)((\[([a-zA-Z0-9-_]+)\])*)/', $code, $matches);
-
- // Are some matches found?
- if ((count($matches) > 0) && (count($matches[0]) > 0)) {
- // Replace all matches
- $matchesFound = array();
- 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;
- }
-
- // Take all string elements
- if (("".bigintval($matches[4][$key])."" != $matches[4][$key]) && (!isset($matchesFound[$key."_".$matches[4][$key]]))) {
- // Replace it in the code
- $code = str_replace("[".$matches[4][$key]."]", "['".$matches[4][$key]."']", $code);
- $matchesFound[$key."_".$matches[4][$key]] = 1;
- }
- }
- }
-
- // Return compiled code
- return $code;
-}
-//
-/************************************************************************
- * *
- * Gaenderter Sortier-Algorythmus, $array wird nach dem Array (!) *
- * $a_sort sortiert: *
- * *
- * $array - Das 3-dimensionale Array, das paralell sortiert werden soll *
- * $a_sort - Array, das die Sortiereihenfolge der ersten Elementeben *
- * $primary_key - Prim.rschl.ssel aus $a_sort, nach dem sortiert wird *
- * $order - Sortiereihenfolge: -1 = A-Z, 0 = keine, 1 = Z-A *
- * $nums - true = Als Zahlen sortieren, false = Als Zeichen sortieren *
- * *
- * $a_sort muss Elemente enthalten, deren Wert Schluessel von $array *
- * sind... Klingt kompliziert, suchen Sie mal mein Beispiel, dann sehen *
- * Sie, dass es doch nicht so schwer ist! :-) *
- * *
- ************************************************************************/
-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)
- {
- $match = false;
- 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)
- {
- // 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)
- {
- // We have found two different values, so let's sort whole array
- 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);
- }
- }
- }
- }
-
- // Count one up
- $primary_key++;
- }
-
- // Write back sorted array
- $array = $dummy;
-}
-//
-function ADD_SELECTION($TYPE, $DEFAULT, $PREFIX="", $id="0")
-{
- global $MONTH_DESCR; $OUT = "";
- if ($TYPE == "yn")
- {
- // This is a yes/no selection only!
- if ($id > 0) $PREFIX .= "[".$id."]";
- $OUT .= "