X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=96ed81d53fce6b42cc5d3125751ec6d31882fc60;hp=e545aa0d6e731f2e2007ac7927149bf1059aad45;hb=64d07c28338c2b08687ff394235101c79cd3077f;hpb=5bdeaf8b452206598b6c6cd4f941145b11a0eccc diff --git a/inc/functions.php b/inc/functions.php index e545aa0d6e..96ed81d53f 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -10,7 +10,12 @@ * -------------------------------------------------------------------- * * Kurzbeschreibung : Viele Nicht-MySQL-Funktionen (auch Dateizugriff) * * -------------------------------------------------------------------- * - * * + * $Revision:: 856 $ * + * $Date:: $ * + * $Tag:: 0.2.1-FINAL $ * + * $Author:: $ * + * Needs to be in all Files and every File needs "svn propset * + * svn:keywords Date Revision" (autoprobset!) at least!!!!!! * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2008 by Roland Haeder * * For more information visit: http://www.mxchange.org * @@ -30,7 +35,6 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, * * MA 02110-1301 USA * ************************************************************************/ - // Some security stuff... if (!defined('__SECURITY')) { $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php"; @@ -38,84 +42,78 @@ if (!defined('__SECURITY')) { } // Check if our config file is writeable or not -function IS_INC_WRITEABLE($inc) { +function IS_INC_WRITEABLE ($inc) { // Generate FQFN - $fqfn = sprintf("%sinc/%s.php", PATH, $inc); + $FQFN = sprintf("%sinc/%s.php", constant('PATH'), $inc); // Abort by simple test - if ((FILE_READABLE($fqfn)) && (!is_writeable($fqfn))) { + if ((FILE_READABLE($FQFN)) && (!is_writeable($FQFN))) { return false; } // END - if - // Test if we can append data - $fp = @fopen($fqfn, 'a'); - if ($inc == "dummy") { - // Remove dummy file - fclose($fp); - return unlink($fqfn); - } else { - // Close all other files - return fclose($fp); - } + // Test write-access on directory + return is_writeable(dirname($FQFN)); } // 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, $newLine = true) { // Some global variables - global $OUTPUT, $footer, $CSS; + global $OUTPUT; // Do we have HTML-Code here? if (!empty($HTML)) { // Yes, so we handle it as you have configured - switch (OUTPUT_MODE) + switch (constant('OUTPUT_MODE')) { case "render": // That's why you don't need any \n at the end of your HTML code... :-) - if (_OB_CACHING == "on") { + if (constant('_OB_CACHING') == "on") { // Output into PHP's internal buffer OUTPUT_RAW($HTML); // That's why you don't need any \n at the end of your HTML code... :-) - if ($NEW_LINE) echo "\n"; + if ($newLine) 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"; + if ($newLine) $OUTPUT .= "\n"; } break; case "direct": // If we are switching from render to direct output rendered code - if ((!empty($OUTPUT)) && (_OB_CACHING != "on")) { OUTPUT_RAW($OUTPUT); $OUTPUT = ""; } + if ((!empty($OUTPUT)) && (constant('_OB_CACHING') != "on")) { OUTPUT_RAW($OUTPUT); $OUTPUT = ""; } // The same as above... ^ OUTPUT_RAW($HTML); - if ($NEW_LINE) echo "\n"; + if ($newLine) echo "\n"; break; default: // Huh, something goes wrong or maybe you have edited config.php ??? - DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid renderer %s detected.", OUTPUT_MODE)); - mxchange_die("{!FATAL_ERROR!}: {!LANG_NO_RENDER_DIRECT!}"); + DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid renderer %s detected.", constant('OUTPUT_MODE'))); + mxchange_die("{--FATAL_ERROR--}: {--LANG_NO_RENDER_DIRECT--}"); break; } - } elseif ((_OB_CACHING == "on") && ($footer == 1)) { + } elseif ((constant('_OB_CACHING') == "on") && (isset($GLOBALS['footer_sent'])) && ($GLOBALS['footer_sent'] == 1)) { // Headers already sent? if (headers_sent()) { // Log this error DEBUG_LOG(__FUNCTION__, __LINE__, "Headers already sent! We need debug backtrace here."); // Trigger an user error - trigger_error("Headers are already sent!"); + debug_report_bug("Headers are already sent!"); } // END - if // Output cached HTML code $OUTPUT = ob_get_contents(); - // Clear output buffer for later output - clearOutputBuffer(); + // Clear output buffer for later output if output is found + if (!empty($OUTPUT)) { + clearOutputBuffer(); + } // END - if // Send HTTP header header("HTTP/1.1 200"); @@ -131,7 +129,7 @@ function OUTPUT_HTML ($HTML, $NEW_LINE = true) { header("Connection: Close"); // Extension "rewrite" installed? - if ((EXT_IS_ACTIVE("rewrite")) && ($CSS != "1") && ($CSS != "-1")) { + if ((EXT_IS_ACTIVE("rewrite")) && ($GLOBALS['output_mode'] != "1") && ($GLOBALS['output_mode'] != "-1")) { $OUTPUT = REWRITE_LINKS($OUTPUT); } // END - if @@ -139,28 +137,28 @@ function OUTPUT_HTML ($HTML, $NEW_LINE = true) { while (strpos($OUTPUT, '{!') > 0) { // Prepare the content and eval() it... $newContent = ""; - $eval = "\$newContent = \"".COMPILE_CODE(addslashes($OUTPUT))."\";"; - @eval($eval); + $eval = "\$newContent = \"".COMPILE_CODE(smartAddSlashes($OUTPUT))."\";"; + eval($eval); // Was that eval okay? if (empty($newContent)) { // Something went wrong! - die("Evaluation error:
".htmlentities($eval)."
"); + mxchange_die("Evaluation error:
".htmlentities($eval)."
"); } // END - if $OUTPUT = $newContent; } // END - while // Output code here, DO NOT REMOVE! ;-) OUTPUT_RAW($OUTPUT); - } elseif ((OUTPUT_MODE == "render") && (!empty($OUTPUT))) { + } elseif ((constant('OUTPUT_MODE') == "render") && (!empty($OUTPUT))) { // Rewrite links when rewrite extension is active - if ((EXT_IS_ACTIVE("rewrite")) && ($CSS != "1") && ($CSS != "-1")) { + if ((EXT_IS_ACTIVE("rewrite")) && ($GLOBALS['output_mode'] != "1") && ($GLOBALS['output_mode'] != "-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 = "\$OUTPUT = \"".COMPILE_CODE(smartAddSlashes($OUTPUT))."\";"; eval($eval); } // END - while @@ -174,41 +172,49 @@ 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 the output if only constant('_OB_CACHING') is not "on" + if (constant('_OB_CACHING') != "on") { // Flush it flush(); } // END - if } -// Add a fatal error message to the queue array -function addFatalMessage ($message, $extra="") { - global $FATAL; +// Init fatal message array +function initFatalMessages () { + $GLOBALS['fatal_messages'] = array(); +} - if (empty($extra)) { - // Regular text message to add to $FATAL - $FATAL[] = $message; - } else { +// Getter for whole fatal error messages +function getFatalArray () { + return $GLOBALS['fatal_messages']; +} + +// Add a fatal error message to the queue array +function addFatalMessage ($F, $L, $message, $extra="") { + if (is_array($extra)) { + // Multiple extras for a message with masks + $message = call_user_func_array('sprintf', $extra); + } elseif (!empty($extra)) { // $message is text with a mask plus extras to insert into the text $message = sprintf($message, $extra); - $FATAL[] = $message; } + // Add message to $GLOBALS['fatal_messages'] + $GLOBALS['fatal_messages'][] = $message; + // Log fatal messages away - DEBUG_LOG(__FUNCTION__, __LINE__, " message={$message}"); + DEBUG_LOG($F, $L, " message={$message}"); } // Getter for total fatal message count function getTotalFatalErrors () { - global $FATAL; - // Init coun $count = 0; // Do we have at least the first entry? - if (!empty($FATAL[0])) { + if (!empty($GLOBALS['fatal_messages'][0])) { // Get total count - $count = count($FATAL); + $count = count($GLOBALS['fatal_messages']); } // END - if // Return value @@ -239,7 +245,7 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { if ($template == "member_support_form") { // Support request of a member $result = SQL_QUERY_ESC("SELECT userid, gender, surname, family, email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1", - array($GLOBALS['userid']), __FILE__, __LINE__); + array(getUserId()), __FUNCTION__, __LINE__); // Is content an array? if (is_array($content)) { @@ -249,7 +255,9 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { // Translate gender $content['gender'] = TRANSLATE_GENDER($content['gender']); } else { - // DEPRECATED: Load data in direct variables + // @DEPRECATED + // @TODO Fine all templates which are using these direct variables and rewrite them. + // @TODO After this step is done, this else-block is history list($gender, $surname, $family, $email) = SQL_FETCHROW($result); // Translate gender @@ -265,7 +273,7 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { $date_time = MAKE_DATETIME(time(), "1"); // Base directory - $BASE = sprintf("%stemplates/%s/html/", PATH, GET_LANGUAGE()); + $BASE = sprintf("%stemplates/%s/html/", constant('PATH'), GET_LANGUAGE()); $MODE = ""; // Check for admin/guest/member templates @@ -299,7 +307,7 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { //////////////////////// // Generate file name // //////////////////////// - $file = $BASE.$MODE.$template.".tpl"; + $FQFN = $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 @@ -311,22 +319,22 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { ); // Probe for it... - if (FILE_READABLE($file2)) $file = $file2; + if (FILE_READABLE($file2)) $FQFN = $file2; // Remove variable from memory unset($file2); } // Does the special template exists? - if (!FILE_READABLE($file)) { + if (!FILE_READABLE($FQFN)) { // Reset to default template - $file = $BASE.$template.".tpl"; + $FQFN = $BASE.$template.".tpl"; } // END - if // Now does the final template exists? - if (FILE_READABLE($file)) { + if (FILE_READABLE($FQFN)) { // The local file does exists so we load it. :) - $tmpl_file = READ_FILE($file); + $tmpl_file = READ_FILE($FQFN); // Replace ' to our own chars to preventing them being quoted while (strpos($tmpl_file, "'") !== false) { $tmpl_file = str_replace("'", '{QUOT}', $tmpl_file); } @@ -335,7 +343,7 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { $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(smartAddSlashes($tmpl_file))."\";"; eval($tmpl_file); } else { // Simply return loaded code @@ -344,10 +352,10 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { // Add surrounding HTML comments to help finding bugs faster $ret = "\n".$ret."\n"; - } elseif ((IS_ADMIN()) || ((isBooleanConstantAndTrue('mxchange_installing')) && (!isBooleanConstantAndTrue('mxchange_installed')))) { + } elseif ((IS_ADMIN()) || ((isInstalling()) && (!isInstalled()))) { // Only admins shall see this warning or when installation mode is active $ret = "
".TEMPLATE_404."
-(".basename($file).")
+(".basename($FQFN).")

".TEMPLATE_CONTENT."
".print_r($content, true)."
@@ -363,14 +371,14 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { // Do we have some content to output or return? if (!empty($ret)) { // Not empty so let's put it out! ;) - if ($return) { + if ($return === true) { // Return the HTML code return $ret; } else { // Output direct OUTPUT_HTML($ret); } - } elseif (isBooleanConstantAndTrue('DEBUG_MODE')) { + } elseif (isDebugModeEnabled()) { // Warning, empty output! return "E:".$template."
\n"; } @@ -381,7 +389,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") { //* DEBUG: */ print __FUNCTION__."(".__LINE__."):TO={$TO},SUBJECT={$SUBJECT}
\n"; // Compile subject line (for POINTS constant etc.) - $eval = "\$SUBJECT = html_entity_decode(\"".COMPILE_CODE(addslashes($SUBJECT))."\");"; + $eval = "\$SUBJECT = decodeEntities(\"".COMPILE_CODE(smartAddSlashes($SUBJECT))."\");"; eval($eval); // Set from header @@ -392,7 +400,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") { return; } 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__); + $result_email = SQL_QUERY_ESC("SELECT email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1", array(bigintval($TO)), __FUNCTION__, __LINE__); //* DEBUG: */ print __FUNCTION__."(".__LINE__."):numRows=".SQL_NUMROWS($result_email)."
\n"; // Does the user exist? @@ -423,7 +431,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") { // Append header $FROM .= LOAD_EMAIL_TEMPLATE("header"); } - } elseif (isBooleanConstantAndTrue('DEBUG_MODE')) { + } elseif (isDebugModeEnabled()) { if (empty($FROM)) { // Load email header template $FROM = LOAD_EMAIL_TEMPLATE("header"); @@ -434,16 +442,16 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") { } // Compile "TO" - $eval = "\$TO = \"".COMPILE_CODE(addslashes($TO))."\";"; + $eval = "\$TO = \"".COMPILE_CODE(smartAddSlashes($TO))."\";"; eval($eval); // Compile "MSG" - $eval = "\$MSG = \"".COMPILE_CODE(addslashes($MSG))."\";"; + $eval = "\$MSG = \"".COMPILE_CODE(smartAddSlashes($MSG))."\";"; eval($eval); // Fix HTML parameter (default is no!) if (empty($HTML)) $HTML = "N"; - if (isBooleanConstantAndTrue('DEBUG_MODE')) { + if (isDebugModeEnabled()) { // In debug mode we want to display the mail instead of sending it away so we can debug this part print("
 ".htmlentities(trim($FROM))."
@@ -459,14 +467,15 @@ Message : ".$MSG."
 		SEND_RAW_EMAIL($TO, $SUBJECT, $MSG, $FROM);
 	} elseif ($HTML == "N") {
 		// Problem found!
-		SEND_RAW_EMAIL(WEBMASTER, "[PROBLEM:]".$SUBJECT, $MSG, $FROM);
+		SEND_RAW_EMAIL(constant('WEBMASTER'), "[PROBLEM:]".$SUBJECT, $MSG, $FROM);
 	}
 }
 
 // Check if legacy or PHPMailer command
+// @TODO Rewrite this to an extension 'smtp'
 // @private
 function CHECK_PHPMAILER_USAGE() {
-	return ((defined('SMTP_HOSTNAME')) && (defined('SMTP_USER')) && (defined('SMTP_PASSWORD')) && (SMTP_HOSTNAME != "") && (SMTP_USER != ""));
+	return ((defined('SMTP_HOSTNAME')) && (defined('SMTP_USER')) && (defined('SMTP_PASSWORD')) && (constant('SMTP_HOSTNAME') != "") && (constant('SMTP_USER') != ""));
 }
 
 /*
@@ -476,25 +485,25 @@ 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");
+		LOAD_INC_ONCE("inc/phpmailer/class.phpmailer.php");
+		LOAD_INC_ONCE("inc/phpmailer/class.smtp.php");
 
 		// get new instance
 		$mail = new PHPMailer();
-		$mail->PluginDir  = sprintf("%sinc/phpmailer/", PATH);
+		$mail->PluginDir  = sprintf("%sinc/phpmailer/", constant('PATH'));
 
 		$mail->IsSMTP();
 		$mail->SMTPAuth   = true;
-		$mail->Host       = SMTP_HOSTNAME;
+		$mail->Host       = constant('SMTP_HOSTNAME');
 		$mail->Port       = 25;
-		$mail->Username   = SMTP_USER;
-		$mail->Password   = SMTP_PASSWORD;
+		$mail->Username   = constant('SMTP_USER');
+		$mail->Password   = constant('SMTP_PASSWORD');
 		if (empty($from)) {
 			$mail->From = constant('WEBMASTER');
 		} else {
 			$mail->From = $from;
 		}
-		$mail->FromName   = MAIN_TITLE;
+		$mail->FromName   = constant('MAIN_TITLE');
 		$mail->Subject    = $subject;
 		if ((EXT_IS_ACTIVE("html_mail")) && (strip_tags($msg) != $msg)) {
 			$mail->Body       = $msg;
@@ -502,16 +511,16 @@ function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
 			$mail->WordWrap   = 70;
 			$mail->IsHTML(true);
 		} else {
-			$mail->Body       = html_entity_decode($msg);
+			$mail->Body       = decodeEntities($msg);
 		}
 		$mail->AddAddress($to, "");
-		$mail->AddReplyTo(WEBMASTER,MAIN_TITLE);
-		$mail->AddCustomHeader("Errors-To:".WEBMASTER);
-		$mail->AddCustomHeader("X-Loop:".WEBMASTER);
+		$mail->AddReplyTo(constant('WEBMASTER'), constant('MAIN_TITLE'));
+		$mail->AddCustomHeader("Errors-To:".constant('WEBMASTER'));
+		$mail->AddCustomHeader("X-Loop:".constant('WEBMASTER'));
 		$mail->Send();
 	} else {
 		// Use legacy mail() command
-		@mail($to, $subject, html_entity_decode($msg), $from);
+		@mail($to, $subject, decodeEntities($msg), $from);
 	}
 }
 //
@@ -524,13 +533,10 @@ function GEN_PASS ($LEN = 0) {
 	// 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)];
+		$PASS .= $ABC[mt_rand(0, count($ABC) -1)];
 	} // END - for
 
 	// When the size is below 40 we can also add additional security by scrambling it
@@ -583,10 +589,8 @@ function MAKE_DATETIME ($time, $mode="0")
 
 // Translates the american decimal dot into a german comma
 function TRANSLATE_COMMA ($dotted, $cut=true, $max=0) {
-	global $_CONFIG;
-
 	// Default is 3 you can change this in admin area "Misc -> Misc Options"
-	if (getConfig('max_comma') == null) $_CONFIG['max_comma'] = "3";
+	if (!isConfigEntrySet('max_comma')) setConfigEntry('max_comma', "3");
 
 	// Use from config is default
 	$maxComma = getConfig('max_comma');
@@ -627,39 +631,49 @@ function DEREFERER ($URL) {
 	// Don't de-refer our own links!
 	if (substr($URL, 0, strlen(URL)) != URL) {
 		// De-refer this link
-		$URL = "modules.php?module=loader&url=".urlencode(base64_encode(gzcompress($URL)));
+		$URL = "modules.php?module=loader&url=".encodeString(compileUriCode($URL));
 	} // END - if
 
 	// Return link
 	return $URL;
 }
 
-//
+// Translate Uni*-like gender to human-readable
 function TRANSLATE_GENDER ($gender) {
-	switch ($gender)
-	{
-		case "M": $ret = GENDER_M; break;
-		case "F": $ret = GENDER_F; break;
-		case "C": $ret = GENDER_C; break;
-		default : $ret = $gender; break;
+	// Default
+	$ret = "!{$gender}!";
+
+	// Male/female or company?
+	switch ($gender) {
+		case "M": $ret = getMessage('GENDER_M'); break;
+		case "F": $ret = getMessage('GENDER_F'); break;
+		case "C": $ret = getMessage('GENDER_C'); break;
+		default:
+			// Log unknown gender
+			DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Unknown gender %s detected.", $gender));
+			break;
 	}
+
+	// Return translated gender
 	return $ret;
 }
+
 //
-function FRAMETESTER($URL) {
+function FRAMETESTER ($URL) {
 	// Prepare frametester URL
 	$frametesterUrl = sprintf("%s/modules.php?module=frametester&url=%s",
 		URL,
-		urlencode(base64_encode(gzcompress(COMPILE_CODE($URL))))
+		encodeString(compileUriCode($URL))
 	);
 	return $frametesterUrl;
 }
+
 //
-function SELECTION_COUNT($array) {
+function SELECTION_COUNT ($array) {
 	$ret = 0;
 	if (is_array($array)) {
-		foreach ($array as $key => $sel) {
-			if (!empty($sel)) $ret++;
+		foreach ($array as $key => $selected) {
+			if (!empty($selected)) $ret++;
 		}
 	}
 	return $ret;
@@ -669,53 +683,47 @@ function IMG_CODE ($code, $type, $DATA, $uid) {
 	return "\"Code\"";
 }
 //
-function TRANSLATE_STATUS($status) {
+function TRANSLATE_STATUS ($status) {
 	switch ($status)
 	{
 	case "UNCONFIRMED":
-		$ret = ACCOUNT_UNCONFIRMED;
-		break;
-
 	case "CONFIRMED":
-		$ret = ACCOUNT_CONFIRMED;
-		break;
-
 	case "LOCKED":
-		$ret = ACCOUNT_LOCKED;
+		$ret = getMessage(sprintf("ACCOUNT_%s", $status));
 		break;
 
 	case "":
 	case null:
-		$ret = ACCOUNT_DELETED;
+		$ret = getMessage('ACCOUNT_DELETED');
 		break;
 
 	default:
 		DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Unknown status %s detected.", $status));
-		$ret = UNKNOWN_STATUS_1.$status.UNKNOWN_STATUS_2;
+		$ret = sprintf(getMessage('UNKNOWN_STATUS"'), $status);
 		break;
 	}
+
+	// Return it
 	return $ret;
 }
 //
 function GET_LANGUAGE() {
-	global $cacheArray;
-
 	// Set default return value to default language from config
-	$ret = DEFAULT_LANG;
+	$ret = constant('DEFAULT_LANG');
 
 	// Init variable
 	$lang = "";
 
 	// Is the variable set
-	if (!empty($_GET['mx_lang'])) {
+	if (REQUEST_ISSET_GET(('mx_lang'))) {
 		// Accept only first 2 chars
-		$lang = substr($_GET['mx_lang'], 0, 2);
-	} elseif (isset($cacheArray['language'])) {
+		$lang = substr(REQUEST_GET('mx_lang'), 0, 2);
+	} elseif (isset($GLOBALS['cache_array']['language'])) {
 		// Use cached
-		$ret = $cacheArray['language'];
+		$ret = $GLOBALS['cache_array']['language'];
 	} elseif (!empty($lang)) {
 		// Check if main language file does exist
-		if (FILE_READABLE(PATH."inc/language/".$lang.".php")) {
+		if (FILE_READABLE(constant('PATH')."inc/language/".$lang.".php")) {
 			// Okay found, so let's update cookies
 			SET_LANGUAGE($lang);
 		}
@@ -724,11 +732,11 @@ function GET_LANGUAGE() {
 		$ret = get_session('mx_lang');
 
 		// Fixes a warning before the session has the mx_lang constant
-		if (empty($ret)) $ret = DEFAULT_LANG;
+		if (empty($ret)) $ret = constant('DEFAULT_LANG');
 	}
 
 	// Cache entry
-	$cacheArray['language'] = $ret;
+	$GLOBALS['cache_array']['language'] = $ret;
 
 	// Return value
 	return $ret;
@@ -743,7 +751,7 @@ function SET_LANGUAGE ($lang) {
 }
 //
 function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
-	global $DATA, $REPLACER, $_CONFIG;
+	global $DATA, $_CONFIG;
 
 	// Make sure all template names are lowercase!
 	$template = strtolower($template);
@@ -751,15 +759,12 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
 	// Default "nickname" if extension is not installed
 	$nick = "---";
 
-	// Keept for backward-compatiblity (please replace these variables against our new {!CONST!} syntax!)
-	// No longer used: $MAIN_TITLE = MAIN_TITLE; $URL = constant('URL'); $WEBMASTER = constant('WEBMASTER');
-
 	// Prepare IP number and User Agent
 	$REMOTE_ADDR     = GET_REMOTE_ADDR();
 	$HTTP_USER_AGENT = GET_USER_AGENT();
 
 	// Default admin
-	$ADMIN = MAIN_TITLE;
+	$ADMIN = constant('MAIN_TITLE');
 
 	// Is the admin logged in?
 	if (IS_ADMIN()) {
@@ -776,7 +781,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
 	// Expiration in a nice output format
 	if (getConfig('auto_purge') == 0) {
 		// Will never expire!
-		$EXPIRATION = MAIL_WILL_NEVER_EXPIRE;
+		$EXPIRATION = getMessage('MAIL_WILL_NEVER_EXPIRE');
 	} else {
 		// Create nice date string
 		$EXPIRATION = CREATE_FANCY_TIME(getConfig('auto_purge'));
@@ -796,12 +801,12 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
 			//* DEBUG: */ print __FUNCTION__."(".__LINE__."):NICKNAME!
\n"; // Load nickname $result = SQL_QUERY_ESC("SELECT surname, family, gender, email, nickname FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1", - array(bigintval($UID)), __FILE__, __LINE__); + array(bigintval($UID)), __FUNCTION__, __LINE__); } else { //* DEBUG: */ print __FUNCTION__."(".__LINE__."):NO-NICK!
\n"; /// Load normal data $result = SQL_QUERY_ESC("SELECT surname, family, gender, email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1", - array(bigintval($UID)), __FILE__, __LINE__); + array(bigintval($UID)), __FUNCTION__, __LINE__); } // Fetch and merge data @@ -823,60 +828,60 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") { $DATA['email'] = $email; // Base directory - $BASE = sprintf("%stemplates/%s/emails/", PATH, GET_LANGUAGE()); + $BASE = sprintf("%stemplates/%s/emails/", constant('PATH'), GET_LANGUAGE()); // Check for admin/guest/member templates if (strpos($template, "admin_") > -1) { // Admin template found - $file = $BASE."admin/".$template.".tpl"; + $FQFN = $BASE."admin/".$template.".tpl"; } elseif (strpos($template, "guest_") > -1) { // Guest template found - $file = $BASE."guest/".$template.".tpl"; + $FQFN = $BASE."guest/".$template.".tpl"; } elseif (strpos($template, "member_") > -1) { // Member template found - $file = $BASE."member/".$template.".tpl"; + $FQFN = $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"; + $FQFN = $BASE.$test."/".$template.".tpl"; } else { // No special filename - $file = $BASE.$template.".tpl"; + $FQFN = $BASE.$template.".tpl"; } } // Does the special template exists? - if (!FILE_READABLE($file)) { + if (!FILE_READABLE($FQFN)) { // Reset to default template - $file = $BASE.$template.".tpl"; + $FQFN = $BASE.$template.".tpl"; } // END - if // Now does the final template exists? $newContent = ""; - if (FILE_READABLE($file)) { + if (FILE_READABLE($FQFN)) { // The local file does exists so we load it. :) - $tmpl_file = READ_FILE($file); - $tmpl_file = addslashes($tmpl_file); + $tmpl_file = READ_FILE($FQFN); + $tmpl_file = SQL_ESCAPE($tmpl_file); // Run code - $tmpl_file = "\$newContent=html_entity_decode(\"".COMPILE_CODE($tmpl_file)."\");"; - @eval($tmpl_file); + $tmpl_file = "\$newContent = decodeEntities(\"".COMPILE_CODE($tmpl_file)."\");"; + eval($tmpl_file); } elseif (!empty($template)) { // Template file not found! - $newContent = TEMPLATE_404.": ".$template."
-".TEMPLATE_CONTENT." + $newContent = "{--TEMPLATE_404--}: ".$template."
+{--TEMPLATE_CONTENT--}
".print_r($content, true)."
-".TEMPLATE_DATA." +{--TEMPLATE_DATA--}
".print_r($DATA, true)."


"; // Debug mode not active? Then remove the HTML tags - if (!DEBUG_MODE) $newContent = strip_tags($newContent); + if (!isDebugModeEnabled()) $newContent = strip_tags($newContent); } else { // No template name supplied! - $newContent = NO_TEMPLATE_SUPPLIED; + $newContent = getMessage('NO_TEMPLATE_SUPPLIED'); } // Is there some content? @@ -895,7 +900,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") { 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); @@ -905,11 +910,9 @@ function MAKE_TIME($H, $M, $S, $stamp) { return mktime($H, $M, $S, $MONTH, $DAY, $YEAR); } // -function LOAD_URL($URL, $addUrlData=true) { - global $CSS, $footer; - +function LOAD_URL ($URL, $addUrlData=true) { // Compile out URI codes - $URL = COMPILE_CODE($URL); + $URL = compileUriCode($URL); // Check if http(s):// is there if ((substr($URL, 0, 7) != "http://") && (substr($URL, 0, 8) != "https://")) { @@ -918,11 +921,8 @@ function LOAD_URL($URL, $addUrlData=true) { } // Get output buffer - /* - print "
";
-	debug_print_backtrace();
-	die("
"); - */ + //* DEBUG: */ debug_report_bug(sprintf("%s[%s:] URL=%s", __FUNCTION__, __LINE__, $URL)); + //* DEBUG: */ DEBUG_LOG(__FUNCTION__, __LINE__, $URL); $OUTPUT = ob_get_contents(); // Clear it only if there is content @@ -931,7 +931,7 @@ function LOAD_URL($URL, $addUrlData=true) { } // END - if // Add some data to URL if cookies are not accepted - if (((!defined('__COOKIES')) || (!__COOKIES)) && ($addUrlData)) $URL = ADD_URL_DATA($URL); + if (((!defined('__COOKIES')) || (!constant('__COOKIES'))) && ($addUrlData)) $URL = ADD_URL_DATA($URL); // Probe for bot from search engine if ((eregi("spider", GET_USER_AGENT())) || (eregi("bot", GET_USER_AGENT()))) { @@ -942,19 +942,15 @@ 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}"); - */ + //* DEBUG: */ debug_report_bug("URL={$URL}"); header ("Location: ".str_replace("&", "&", $URL)); } else { // Output error message - require(PATH."inc/header.php"); + LOAD_INC("inc/header.php"); LOAD_TEMPLATE("redirect_url", false, str_replace("&", "&", $URL)); - require(PATH."inc/footer.php"); + LOAD_INC("inc/footer.php"); } - exit(); + shutdown(); } // Wrapper for LOAD_URL but URL comes from a configuration entry @@ -973,18 +969,17 @@ function LOAD_CONFIGURED_URL ($configEntry) { } // -function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) { - global $SEC_CHARS, $URL_CHARS; +function COMPILE_CODE ($code, $simple = false, $constants = true, $full = true) { // Is the code a string? if (!is_string($code)) { // Silently return it return $code; } // END - if - $ARRAY = $SEC_CHARS; + $ARRAY = $GLOBALS['security_chars']; // Select smaller set of chars to replace when we e.g. want to compile URLs - if (!$full) $ARRAY = $URL_CHARS; + if (!$full) $ARRAY = $GLOBALS['url_chars']; // Compile constants if ($constants) { @@ -1072,8 +1067,7 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) { * Sie, dass es doch nicht so schwer ist! :-) * * * ************************************************************************/ -function array_pk_sort(&$array, $a_sort, $primary_key = 0, $order = -1, $nums = false) -{ +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) { @@ -1107,9 +1101,9 @@ function array_pk_sort(&$array, $a_sort, $primary_key = 0, $order = -1, $nums = // Write back sorted array $array = $dummy; } + // -function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { - global $MONTH_DESCR; +function ADD_SELECTION ($type, $DEFAULT, $prefix="", $id="0") { $OUT = ""; if ($type == "yn") { @@ -1134,7 +1128,7 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { break; case "month": // Month - foreach ($MONTH_DESCR as $month => $descr) { + foreach ($GLOBALS['month_descr'] as $month => $descr) { $OUT .= "
"); - DEBUG_LOG(__FUNCTION__, __LINE__, " num={$num},ret={$ret}"); + debug_report_bug("{$ret}<>{$num}"); } // END - if // Return result return $ret; } + // Insert the code in $img_code into jpeg or PNG image -function GENERATE_IMAGE($img_code, $header=true) { +function GENERATE_IMAGE ($img_code, $headerSent=true) { if ((strlen($img_code) > 6) || (empty($img_code)) || (getConfig('code_length') == 0)) { // Stop execution of function here because of over-sized code length return; - } elseif (!$header) { + } elseif (!$headerSent) { // Return in an HTML code code - return "\n"; + return "\"Image\"\n"; } // Load image - $img = sprintf("%s/theme/%s/images/code_bg.%s", PATH, GET_CURR_THEME(), getConfig('img_type')); + $img = sprintf("%s/theme/%s/images/code_bg.%s", constant('PATH'), GET_CURR_THEME(), getConfig('img_type')); if (FILE_READABLE($img)) { // Switch image type switch (getConfig('img_type')) @@ -1336,6 +1338,7 @@ function GENERATE_IMAGE($img_code, $header=true) { } } else { // Exit function here + DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("File for image type %s not found.", getConfig('img_type'))); return; } @@ -1421,31 +1424,31 @@ function CREATE_TIME_SELECTIONS ($timestamp, $prefix="", $display="", $align="ce $OUT .= "\n"; if (ereg('Y', $display) || (empty($display))) { - $OUT .= "
"._YEARS."\n"; + $OUT .= "
{--_YEARS--}\n"; } if (ereg("M", $display) || (empty($display))) { - $OUT .= "
"._MONTHS."\n"; + $OUT .= "
{--_MONTHS--}\n"; } if (ereg("W", $display) || (empty($display))) { - $OUT .= "
"._WEEKS."\n"; + $OUT .= "
{--_WEEKS--}\n"; } if (ereg("D", $display) || (empty($display))) { - $OUT .= "
"._DAYS."\n"; + $OUT .= "
{--_DAYS--}\n"; } if (ereg("h", $display) || (empty($display))) { - $OUT .= "
"._HOURS."\n"; + $OUT .= "
{--_HOURS--}\n"; } if (ereg("m", $display) || (empty($display))) { - $OUT .= "
"._MINUTES."\n"; + $OUT .= "
{--_MINUTES--}\n"; } if (ereg("s", $display) || (empty($display))) { - $OUT .= "
"._SECONDS."\n"; + $OUT .= "
{--_SECONDS--}\n"; } $OUT .= "\n"; @@ -1456,7 +1459,7 @@ function CREATE_TIME_SELECTIONS ($timestamp, $prefix="", $display="", $align="ce $OUT .= " \n"; @@ -1470,7 +1473,7 @@ function CREATE_TIME_SELECTIONS ($timestamp, $prefix="", $display="", $align="ce for ($idx = 0; $idx <= 11; $idx++) { $OUT .= "