X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Ffunctions.php;h=6d414a53865611bdec27ee2af04646c29c66fff6;hb=af59daf6541b279989547829c95adc5bee8ca11d;hp=74cef5493551f8a770cf405d2de2fa5cd914ec03;hpb=cc7c700143bca2420ff0497e648d31a18cc9add2;p=mailer.git diff --git a/inc/functions.php b/inc/functions.php index 74cef54935..6d414a5386 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -62,7 +62,7 @@ function IS_INC_WRITEABLE($inc) { // 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)) { @@ -98,10 +98,10 @@ function OUTPUT_HTML ($HTML, $newLine = true) { default: // Huh, something goes wrong or maybe you have edited config.php ??? DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid renderer %s detected.", constant('OUTPUT_MODE'))); - mxchange_die("{!FATAL_ERROR!}: {!LANG_NO_RENDER_DIRECT!}"); + mxchange_die("{--FATAL_ERROR--}: {--LANG_NO_RENDER_DIRECT--}"); break; } - } elseif ((constant('_OB_CACHING') == "on") && ($footer == 1)) { + } elseif ((constant('_OB_CACHING') == "on") && ($GLOBALS['footer_sent'] == 1)) { // Headers already sent? if (headers_sent()) { // Log this error @@ -131,7 +131,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,7 +139,7 @@ function OUTPUT_HTML ($HTML, $newLine = true) { while (strpos($OUTPUT, '{!') > 0) { // Prepare the content and eval() it... $newContent = ""; - $eval = "\$newContent = \"".COMPILE_CODE(addslashes($OUTPUT))."\";"; + $eval = "\$newContent = \"".COMPILE_CODE(SQL_ESCAPE($OUTPUT))."\";"; @eval($eval); // Was that eval okay? @@ -154,13 +154,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(addslashes($OUTPUT))."\";"; + $eval = "\$OUTPUT = \"".COMPILE_CODE(SQL_ESCAPE($OUTPUT))."\";"; eval($eval); } // END - while @@ -181,34 +181,37 @@ function OUTPUT_RAW ($HTML) { } // END - if } +// Init fatal message array +function initFatalMessages () { + $GLOBALS['fatal_messages'] = array(); +} + // Add a fatal error message to the queue array function addFatalMessage ($message, $extra="") { - global $FATAL; - - if (empty($extra)) { - // Regular text message to add to $FATAL - $FATAL[] = $message; - } else { + 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}"); } // 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 @@ -249,7 +252,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 @@ -299,7 +304,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 +316,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 +340,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(SQL_ESCAPE($tmpl_file))."\";"; eval($tmpl_file); } else { // Simply return loaded code @@ -347,7 +352,7 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { } elseif ((IS_ADMIN()) || ((isBooleanConstantAndTrue('mxchange_installing')) && (!isBooleanConstantAndTrue('mxchange_installed')))) { // 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)."
@@ -381,7 +386,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(SQL_ESCAPE($SUBJECT))."\");"; eval($eval); // Set from header @@ -434,11 +439,11 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") { } // Compile "TO" - $eval = "\$TO = \"".COMPILE_CODE(addslashes($TO))."\";"; + $eval = "\$TO = \"".COMPILE_CODE(SQL_ESCAPE($TO))."\";"; eval($eval); // Compile "MSG" - $eval = "\$MSG = \"".COMPILE_CODE(addslashes($MSG))."\";"; + $eval = "\$MSG = \"".COMPILE_CODE(SQL_ESCAPE($MSG))."\";"; eval($eval); // Fix HTML parameter (default is no!) @@ -502,7 +507,7 @@ 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(constant('WEBMASTER'), constant('MAIN_TITLE')); @@ -511,7 +516,7 @@ function SEND_RAW_EMAIL ($to, $subject, $msg, $from) { $mail->Send(); } else { // Use legacy mail() command - @mail($to, $subject, html_entity_decode($msg), $from); + @mail($to, $subject, decodeEntities($msg), $from); } } // @@ -622,35 +627,45 @@ 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) { @@ -664,37 +679,31 @@ 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 = constant('DEFAULT_LANG'); @@ -702,15 +711,15 @@ 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(PATH."inc/language/".$lang.".php")) { + if (FILE_READABLE(constant('PATH')."inc/language/".$lang.".php")) { // Okay found, so let's update cookies SET_LANGUAGE($lang); } @@ -723,7 +732,7 @@ function GET_LANGUAGE() { } // Cache entry - $cacheArray['language'] = $ret; + $GLOBALS['cache_array']['language'] = $ret; // Return value return $ret; @@ -738,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); @@ -768,7 +777,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')); @@ -820,47 +829,47 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") { // 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)."\");"; + $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)."


"; @@ -898,10 +907,8 @@ function MAKE_TIME($H, $M, $S, $stamp) { } // function LOAD_URL($URL, $addUrlData=true) { - global $CSS, $footer; - // 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://")) { @@ -958,17 +965,16 @@ function LOAD_CONFIGURED_URL ($configEntry) { // function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) { - global $SEC_CHARS, $URL_CHARS; // 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) { @@ -1197,9 +1203,9 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { case "yn": $OUT .= "