X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=dcdfdc6ea03845940ec3fa110573bb0b6d0564b3;hp=0f206df6d0b448c0c4c7200a2be7d9d2eb2bdf7b;hb=4001187f22197f55e5a1f211fc8defcc180f7c32;hpb=5375b5f32f309a426ff7bc9c928f526ba0139e19 diff --git a/inc/functions.php b/inc/functions.php index 0f206df6d0..dcdfdc6ea0 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -38,31 +38,23 @@ 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", constant('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 + return is_writeable($FQFN); } // Output HTML code directly or "render" it. You addionally switch the new-line character off function OUTPUT_HTML ($HTML, $newLine = true) { // Some global variables - global $OUTPUT, $footer, $CSS; + global $OUTPUT; // Do we have HTML-Code here? if (!empty($HTML)) { @@ -101,7 +93,7 @@ function OUTPUT_HTML ($HTML, $newLine = true) { mxchange_die("{--FATAL_ERROR--}: {--LANG_NO_RENDER_DIRECT--}"); break; } - } elseif ((constant('_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 @@ -114,8 +106,10 @@ function OUTPUT_HTML ($HTML, $newLine = true) { // 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 +125,7 @@ function OUTPUT_HTML ($HTML, $newLine = 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,8 +133,8 @@ function OUTPUT_HTML ($HTML, $newLine = true) { while (strpos($OUTPUT, '{!') > 0) { // Prepare the content and eval() it... $newContent = ""; - $eval = "\$newContent = \"".COMPILE_CODE(SQL_ESCAPE($OUTPUT))."\";"; - @eval($eval); + $eval = "\$newContent = \"".COMPILE_CODE(smartAddSlashes($OUTPUT))."\";"; + eval($eval); // Was that eval okay? if (empty($newContent)) { @@ -154,13 +148,13 @@ function OUTPUT_HTML ($HTML, $newLine = true) { OUTPUT_RAW($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(SQL_ESCAPE($OUTPUT))."\";"; + $eval = "\$OUTPUT = \"".COMPILE_CODE(smartAddSlashes($OUTPUT))."\";"; eval($eval); } // END - while @@ -181,10 +175,18 @@ function OUTPUT_RAW ($HTML) { } // 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(); +} +// 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); @@ -193,24 +195,22 @@ function addFatalMessage ($message, $extra="") { $message = sprintf($message, $extra); } - // Add message to $FATAL - $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 @@ -241,7 +241,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($GLOBALS['userid']), __FUNCTION__, __LINE__); // Is content an array? if (is_array($content)) { @@ -339,7 +339,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(SQL_ESCAPE($tmpl_file))."\";"; + $tmpl_file = "\$ret=\"".COMPILE_CODE(smartAddSlashes($tmpl_file))."\";"; eval($tmpl_file); } else { // Simply return loaded code @@ -348,7 +348,7 @@ 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($FQFN).")
@@ -367,14 +367,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"; } @@ -385,7 +385,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 = decodeEntities(\"".COMPILE_CODE(SQL_ESCAPE($SUBJECT))."\");"; + $eval = "\$SUBJECT = decodeEntities(\"".COMPILE_CODE(smartAddSlashes($SUBJECT))."\");"; eval($eval); // Set from header @@ -396,7 +396,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? @@ -427,7 +427,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"); @@ -438,16 +438,16 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") { } // Compile "TO" - $eval = "\$TO = \"".COMPILE_CODE(SQL_ESCAPE($TO))."\";"; + $eval = "\$TO = \"".COMPILE_CODE(smartAddSlashes($TO))."\";"; eval($eval); // Compile "MSG" - $eval = "\$MSG = \"".COMPILE_CODE(SQL_ESCAPE($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))."
@@ -468,9 +468,10 @@ Message : ".$MSG."
 }
 
 // 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') != ""));
 }
 
 /*
@@ -531,7 +532,7 @@ function GEN_PASS ($LEN = 0) {
 	// 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
@@ -667,8 +668,8 @@ function FRAMETESTER ($URL) {
 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;
@@ -703,8 +704,6 @@ function TRANSLATE_STATUS ($status) {
 }
 //
 function GET_LANGUAGE() {
-	global $cacheArray;
-
 	// Set default return value to default language from config
 	$ret = constant('DEFAULT_LANG');
 
@@ -712,12 +711,12 @@ function GET_LANGUAGE() {
 	$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(constant('PATH')."inc/language/".$lang.".php")) {
@@ -733,7 +732,7 @@ function GET_LANGUAGE() {
 	}
 
 	// Cache entry
-	$cacheArray['language'] = $ret;
+	$GLOBALS['cache_array']['language'] = $ret;
 
 	// Return value
 	return $ret;
@@ -748,7 +747,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);
@@ -798,12 +797,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 @@ -864,7 +863,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") { // Run code $tmpl_file = "\$newContent = decodeEntities(\"".COMPILE_CODE($tmpl_file)."\");"; - @eval($tmpl_file); + eval($tmpl_file); } elseif (!empty($template)) { // Template file not found! $newContent = "{--TEMPLATE_404--}: ".$template."
@@ -875,7 +874,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {

"; // Debug mode not active? Then remove the HTML tags - if (!isBooleanConstantAndTrue('DEBUG_MODE')) $newContent = strip_tags($newContent); + if (!isDebugModeEnabled()) $newContent = strip_tags($newContent); } else { // No template name supplied! $newContent = getMessage('NO_TEMPLATE_SUPPLIED'); @@ -897,7 +896,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); @@ -907,9 +906,7 @@ 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 = compileUriCode($URL); @@ -920,7 +917,8 @@ function LOAD_URL($URL, $addUrlData=true) { } // Get output buffer - //* DEBUG: */ debug_report_bug(); + //* 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 @@ -929,7 +927,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()))) { @@ -948,7 +946,7 @@ function LOAD_URL($URL, $addUrlData=true) { LOAD_TEMPLATE("redirect_url", false, str_replace("&", "&", $URL)); LOAD_INC("inc/footer.php"); } - exit(); + exit; } // Wrapper for LOAD_URL but URL comes from a configuration entry @@ -967,18 +965,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) { @@ -1066,8 +1063,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) { @@ -1101,9 +1097,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") { @@ -1128,7 +1124,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 .= "