X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=inc%2Ffunctions.php;h=66324337f68d134e09d79940aba79f6620e04568;hb=f03cb5d87e69bb2efc885b5c5f5f3026b24c06f6;hp=73b15f55152c5c57495f721568788e44541d8a60;hpb=2305bb069ede07db6227ab5e51960e501e75d7e6;p=mailer.git
diff --git a/inc/functions.php b/inc/functions.php
index 73b15f5515..a515308c03 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -10,7 +10,12 @@
* -------------------------------------------------------------------- *
* Kurzbeschreibung : Viele Nicht-MySQL-Funktionen (auch Dateizugriff) *
* -------------------------------------------------------------------- *
- * *
+ * $Revision:: $ *
+ * $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,112 +42,94 @@ if (!defined('__SECURITY')) {
}
// Check if our config file is writeable or not
-function is_INCWritable($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);
- }
-}
-
-// Open a table (you may want to add some header stuff here)
-function OPEN_TABLE($PERCENT = "", $CLASS = "", $ALIGN="left", $VALIGN="", $td_only=false) {
- global $table_cnt;
-
- // Count tables so we can generate CSS classes for every table... :-)
- if (empty($CLASS)) {
- // Class is empty so count one up and create a class
- $table_cnt++; $CLASS = "class".$table_cnt;
- }
- $OUT = "
";
- OUTPUT_HTML($OUT);
-}
-
-// Close a table (you may want to add some footer stuff here)
-function CLOSE_TABLE($ADD="") {
- OUTPUT_HTML(" \n");
- if (!empty($ADD)) OUTPUT_HTML($ADD);
- OUTPUT_HTML("
");
+ // 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 ???
- 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
+ debug_report_bug("Headers are already sent!");
+ } // END - if
+
// Output cached HTML code
$OUTPUT = ob_get_contents();
- // Clear output buffer for later output
- ob_end_clean();
+ // Clear output buffer for later output if output is found
+ if (!empty($OUTPUT)) {
+ clearOutputBuffer();
+ } // END - if
+
+ // Send HTTP header
+ header("HTTP/1.1 200");
+
+ // Used later
+ $now = gmdate('D, d M Y H:i:s') . ' GMT';
+
+ // General headers for no caching
+ header("Expired: " . $now); // RFC2616 - Section 14.21
+ header("Last-Modified: " . $now);
+ header("Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0"); // HTTP/1.1
+ header("Pragma: no-cache"); // HTTP/1.0
+ header("Connection: Close");
// Extension "rewrite" installed?
- if ((EXT_IS_ACTIVE("rewrite")) && (function_exists('REWRITE_LINKS')) && ($CSS != "1") && ($CSS != "-1")) {
+ if ((EXT_IS_ACTIVE("rewrite")) && ($GLOBALS['output_mode'] != "1") && ($GLOBALS['output_mode'] != "-1")) {
$OUTPUT = REWRITE_LINKS($OUTPUT);
} // END - if
@@ -151,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")) && (function_exists('REWRITE_LINKS')) && ($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
@@ -186,32 +172,58 @@ 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 ADD_FATAL ($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="") {
+ debug_report_bug($message);
+ 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 () {
+ // Init coun
+ $count = 0;
+
+ // Do we have at least the first entry?
+ if (!empty($GLOBALS['fatal_messages'][0])) {
+ // Get total count
+ $count = count($GLOBALS['fatal_messages']);
+ } // END - if
+
+ // Return value
+ return $count;
}
// Load a template file and return it's content (only it's name; do not use ' or ")
-function LOAD_TEMPLATE($template, $return=false, $content=array()) {
+function LOAD_TEMPLATE ($template, $return=false, $content=array()) {
// Add more variables which you want to use in your template files
global $DATA, $_CONFIG, $username;
@@ -219,32 +231,39 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) {
$template = strtolower($template);
// Count the template load
- if (!isset($_CONFIG['num_templates'])) $_CONFIG['num_templates'] = 0;
- $_CONFIG['num_templates']++;
+ incrementConfigEntry('num_templates');
+
+ // Prepare IP number and User Agent
+ $REMOTE_ADDR = GET_REMOTE_ADDR();
+ if (!defined('REMOTE_ADDR')) define('REMOTE_ADDR', $REMOTE_ADDR);
+ $HTTP_USER_AGENT = GET_USER_AGENT();
// Init some data
$ret = "";
if (empty($GLOBALS['refid'])) $GLOBALS['refid'] = 0;
- // @DEPRECATED Try to remove this if() block
+ // @DEPRECATED Try to rewrite the if() condition
if ($template == "member_support_form") {
// Support request of a member
- $result = SQL_QUERY_ESC("SELECT gender, surname, family, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
- array($GLOBALS['userid']), __FILE__, __LINE__);
+ $result = SQL_QUERY_ESC("SELECT userid, gender, surname, family, email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
+ array(getUserId()), __FUNCTION__, __LINE__);
// Is content an array?
if (is_array($content)) {
// Merge data
- $content = array_merge($content, SQL_FETCHARRAY($result));
+ $content = merge_array($content, SQL_FETCHARRAY($result));
// 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
$gender = TRANSLATE_GENDER($gender);
+ DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("DEPRECATION-WARNING: content is not array (%s).", gettype($content)));
}
// Free result
@@ -255,7 +274,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
@@ -289,7 +308,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
@@ -301,31 +320,31 @@ 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 = implode("", 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); }
+ while (strpos($tmpl_file, "'") !== false) { $tmpl_file = str_replace("'", '{QUOT}', $tmpl_file); }
// Do we have to compile the code?
$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
@@ -334,10 +353,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).")
+ $ret = " ".TEMPLATE_404."
+(".basename($FQFN).")
".TEMPLATE_CONTENT."
".print_r($content, true)."
@@ -353,141 +372,139 @@ 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";
}
}
// Send mail out to an email address
-function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
- //* DEBUG: */ print __FUNCTION__."(".__LINE__."):TO={$TO},SUBJECT={$SUBJECT} \n";
+function SEND_EMAIL($toEmail, $subject, $message, $HTML = "N", $mailHeader = "") {
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):TO={$toEmail},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
- if ((!eregi("@", $TO)) && ($TO > 0)) {
+ if ((!eregi("@", $toEmail)) && ($toEmail > 0)) {
// Value detected, is the message extension installed?
if (EXT_IS_ACTIVE("msg")) {
- ADD_MESSAGE_TO_BOX($TO, $SUBJECT, $MSG, $HTML);
+ ADD_MESSAGE_TO_BOX($toEmail, $subject, $message, $HTML);
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($toEmail)), __FUNCTION__, __LINE__);
//* DEBUG: */ print __FUNCTION__."(".__LINE__."):numRows=".SQL_NUMROWS($result_email)." \n";
// Does the user exist?
if (SQL_NUMROWS($result_email)) {
// Load email address
- list($TO) = SQL_FETCHROW($result_email);
+ list($toEmail) = SQL_FETCHROW($result_email);
} else {
// Set webmaster
- $TO = WEBMASTER;
+ $toEmail = constant('WEBMASTER');
}
// Free result
SQL_FREERESULT($result_email);
}
- } elseif ("$TO" == "0") {
+ } elseif ("$toEmail" == "0") {
// Is the webmaster!
- $TO = WEBMASTER;
+ $toEmail = constant('WEBMASTER');
}
- //* DEBUG: */ print __FUNCTION__."(".__LINE__."):TO={$TO} \n";
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):TO={$toEmail} \n";
// Check for PHPMailer or debug-mode
if (!CHECK_PHPMAILER_USAGE()) {
// Not in PHPMailer-Mode
- if (empty($FROM)) {
+ if (empty($mailHeader)) {
// Load email header template
- $FROM = LOAD_EMAIL_TEMPLATE("header");
+ $mailHeader = LOAD_EMAIL_TEMPLATE("header");
} else {
// Append header
- $FROM .= LOAD_EMAIL_TEMPLATE("header");
+ $mailHeader .= LOAD_EMAIL_TEMPLATE("header");
}
- } elseif (isBooleanConstantAndTrue('DEBUG_MODE')) {
- if (empty($FROM)) {
+ } elseif (isDebugModeEnabled()) {
+ if (empty($mailHeader)) {
// Load email header template
- $FROM = LOAD_EMAIL_TEMPLATE("header");
+ $mailHeader = LOAD_EMAIL_TEMPLATE("header");
} else {
// Append header
- $FROM .= LOAD_EMAIL_TEMPLATE("header");
+ $mailHeader .= LOAD_EMAIL_TEMPLATE("header");
}
}
// Compile "TO"
- $eval = "\$TO = \"".COMPILE_CODE(addslashes($TO))."\";";
+ $eval = "\$toEmail = \"".COMPILE_CODE(smartAddSlashes($toEmail))."\";";
eval($eval);
// Compile "MSG"
- $eval = "\$MSG = \"".COMPILE_CODE(addslashes($MSG))."\";";
+ $eval = "\$message = \"".COMPILE_CODE(smartAddSlashes($message))."\";";
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
- echo "
\n");
} elseif (($HTML == "Y") && (EXT_IS_ACTIVE("html_mail"))) {
// Send mail as HTML away
- SEND_HTML_EMAIL($TO, $SUBJECT, $MSG, $FROM);
- } elseif (!empty($TO)) {
+ SEND_HTML_EMAIL($toEmail, $subject, $message, $mailHeader);
+ } elseif (!empty($toEmail)) {
// Send Mail away
- SEND_RAW_EMAIL($TO, $SUBJECT, $MSG, $FROM);
+ SEND_RAW_EMAIL($toEmail, $subject, $message, $mailHeader);
} elseif ($HTML == "N") {
// Problem found!
- SEND_RAW_EMAIL(WEBMASTER, "[PROBLEM:]".$SUBJECT, $MSG, $FROM);
+ SEND_RAW_EMAIL(constant('WEBMASTER'), "[PROBLEM:]".$subject, $message, $mailHeader);
}
}
// 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') != ""));
}
/*
* Send out a raw email with PHPMailer class or legacy mail() command
*/
-function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
+function SEND_RAW_EMAIL ($toEmail, $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 = WEBMASTER;
+ $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;
@@ -495,42 +512,39 @@ 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->AddAddress($toEmail, "");
+ $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($toEmail, $subject, decodeEntities($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'];
+function GEN_PASS ($LEN = 0) {
+ // Auto-fix invalid length of zero
+ if ($LEN == 0) $LEN = getConfig('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)];
- }
+ $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
if (strlen($PASS) <= 40) {
// Also scramble the password
$PASS = scrambleString($PASS);
- }
+ } // END - if
// Return the password
return $PASS;
@@ -554,6 +568,9 @@ function MAKE_DATETIME ($time, $mode="0")
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;
+ default:
+ DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid date mode %s detected.", $mode));
+ break;
}
break;
@@ -563,6 +580,9 @@ function MAKE_DATETIME ($time, $mode="0")
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;
+ default:
+ DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid date mode %s detected.", $mode));
+ break;
}
}
return $ret;
@@ -570,35 +590,27 @@ 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 (empty($_CONFIG['max_comma'])) $_CONFIG['max_comma'] = "3";
+ if (!isConfigEntrySet('max_comma')) setConfigEntry('max_comma', "3");
// Use from config is default
- $maxComma = $_CONFIG['max_comma'];
+ $maxComma = getConfig('max_comma');
// Use from parameter?
if ($max > 0) $maxComma = $max;
// Cut zeros off?
- if ($cut) {
+ if (($cut) && ($max == 0)) {
// Test for commata if in cut-mode
$com = explode(".", $dotted);
- if (count($com) > 1) {
- // Commata found, so only zeros?
- if ($com[1] == str_repeat("0", strlen($com[1]))) {
- // Only zeros, so display only one
- $maxComma = 1;
- } // END - if
- } else {
+ if (count($com) < 2) {
// Don't display commatas even if there are none... ;-)
$maxComma = 0;
}
} // END - if
// Debug log
- //DEBUG_LOG(__FUNCTION__.":dotted={$dotted},maxComma={$maxComma}");
+ //* DEBUG: */ DEBUG_LOG(__FUNCTION__, __LINE__, "dotted={$dotted},maxComma={$maxComma}");
// Translate it now
switch (GET_LANGUAGE()) {
@@ -620,91 +632,98 @@ function DEREFERER ($URL) {
// Don't de-refer our own links!
if (substr($URL, 0, strlen(URL)) != URL) {
// De-refer this link
- $URL = 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))))
+ $frametesterUrl = sprintf("{!URL!}/modules.php?module=frametester&url=%s",
+ 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;
}
//
function IMG_CODE ($code, $type, $DATA, $uid) {
- return "";
+ return "";
}
//
-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:
- $ret = UNKNOWN_STATUS_1.$status.UNKNOWN_STATUS_2;
+ DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Unknown status %s detected.", $status));
+ $ret = sprintf(getMessage('UNKNOWN_STATUS'), $status);
break;
}
+
+ // Return it
return $ret;
}
//
function GET_LANGUAGE() {
- 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;
+ $ret = constant('DEFAULT_LANG');
- // Check GET variable and cookie
- if (!empty($lang)) {
+ // Init variable
+ $lang = "";
+
+ // Is the variable set
+ if (REQUEST_ISSET_GET(('mx_lang'))) {
+ // Accept only first 2 chars
+ $lang = substr(REQUEST_GET('mx_lang'), 0, 2);
+ } elseif (isset($GLOBALS['cache_array']['language'])) {
+ // Use cached
+ $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);
}
@@ -713,23 +732,26 @@ 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
+ $GLOBALS['cache_array']['language'] = $ret;
+
+ // Return value
return $ret;
}
//
-function SET_LANGUAGE($lang) {
- global $_CONFIG;
-
+function SET_LANGUAGE ($lang) {
// Accept only first 2 chars!
$lang = substr(SQL_ESCAPE(strip_tags($lang)), 0, 2);
// Set cookie
- set_session("mx_lang", $lang);
+ set_session('mx_lang', $lang);
}
//
function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
- global $DATA, $_CONFIG, $REPLACER;
+ global $DATA, $_CONFIG;
// Make sure all template names are lowercase!
$template = strtolower($template);
@@ -737,38 +759,32 @@ 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 = URL; $WEBMASTER = 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()) {
// Get admin id
- $aid = GET_ADMIN_ID(get_session('admin_login'));
+ $aid = GET_CURRENT_ADMIN_ID();
// Load Admin data
$ADMIN = GET_ADMIN_EMAIL($aid);
} // END - if
// Neutral email address is default
- $email = WEBMASTER;
+ $email = constant('WEBMASTER');
// Expiration in a nice output format
- if ($_CONFIG['auto_purge'] == 0) {
+ if (getConfig('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']);
+ $EXPIRATION = getMessage('MAIL_WILL_NEVER_EXPIRE');
} else {
- // Display days only
- $EXPIRATION = round($_CONFIG['auto_purge']/60/60/24)." "._DAYS;
+ // Create nice date string
+ $EXPIRATION = CREATE_FANCY_TIME(getConfig('auto_purge'));
}
// Is content an array?
@@ -778,28 +794,25 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
} // END - if
// Load user's data
- //* DEBUG: */ print __FUNCTION__."(".__LINE__."):UID={$UID},template={$template} \n";
- if ($UID > 0) {
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):UID={$UID},template={$template},content[]=".gettype($content)." \n";
+ if (($UID > 0) && (is_array($content))) {
+ // If nickname extension is installed, fetch nickname as well
if (EXT_IS_ACTIVE("nickname")) {
//* 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__);
+ $result = SQL_QUERY_ESC("SELECT surname, family, gender, email, nickname FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
+ 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__);
+ $result = SQL_QUERY_ESC("SELECT surname, family, gender, email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1",
+ array(bigintval($UID)), __FUNCTION__, __LINE__);
}
- // Is content an array?
- //* DEBUG: */ print __FUNCTION__."(".__LINE__."):content[]=".gettype($content)." \n";
- if (is_array($content)) {
- // Fetch and migrate data
- //* DEBUG: */ print __FUNCTION__."(".__LINE__."):content()=".count($content)." - PRE \n";
- $content = array_merge($content, SQL_FETCHARRAY($result));
- //* DEBUG: */ print __FUNCTION__."(".__LINE__."):content()=".count($content)." - AFTER \n";
- } // END - if
+ // Fetch and merge data
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):content()=".count($content)." - PRE \n";
+ $content = merge_array($content, SQL_FETCHARRAY($result));
+ //* DEBUG: */ print __FUNCTION__."(".__LINE__."):content()=".count($content)." - AFTER \n";
// Free result
SQL_FREERESULT($result);
@@ -809,72 +822,73 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") {
if (isset($content['gender'])) $content['gender'] = TRANSLATE_GENDER($content['gender']);
// Overwrite email from data if present
- if (isset($content['email'])) $email = $content['email'];
+ if (isset($content['email'])) $email = $content['email'];
// Store email for some functions in global data array
$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 = implode("", 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?
if (empty($newContent)) {
// Compiling failed
$newContent = "Compiler error for template {$template}!\nUncompiled content:\n".$tmpl_file;
+ // Add last error if the required function exists
if (function_exists('error_get_last')) $newContent .= "\n--------------------------------------\nDebug:\n".print_r(error_get_last(), true)."--------------------------------------\nPlease don't alter these informations!\nThanx.";
} // END - if
@@ -886,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);
@@ -896,68 +910,80 @@ function MAKE_TIME($H, $M, $S, $stamp) {
return mktime($H, $M, $S, $MONTH, $DAY, $YEAR);
}
//
-function LOAD_URL($URL, $addUrlData=true) {
- global $CSS, $_CONFIG, $footer;
+function LOAD_URL ($URL, $addUrlData=true) {
+ // Compile out URI codes
+ $URL = compileUriCode($URL);
// Check if http(s):// is there
if ((substr($URL, 0, 7) != "http://") && (substr($URL, 0, 8) != "https://")) {
// Make all URLs full-qualified
- $URL = URL."/".$URL;
+ $URL = "".$URL;
}
- // Compile out URI codes
- $URL = COMPILE_CODE($URL);
-
// Get output buffer
+ //* 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
if (!empty($OUTPUT)) {
- ob_end_clean();
+ clearOutputBuffer();
} // 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())) || (eregi("spider", GET_USER_AGENT()))) {
+ if ((eregi("spider", GET_USER_AGENT())) || (eregi("bot", GET_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."");
+ OUTPUT_HTML("".$URL."");
} elseif (!headers_sent()) {
// Load URL when headers are not sent
- /*
- print("
");
- debug_print_backtrace();
- die("
URL={$URL}");
- */
- @header ("Location: ".str_replace("&", "&", $URL));
+ //* DEBUG: */ debug_report_bug("URL={$URL}");
+ header ("Location: ".str_replace("&", "&", $URL));
} else {
// Output error message
- include(PATH."inc/header.php");
+ LOAD_INC("inc/header.php");
LOAD_TEMPLATE("redirect_url", false, str_replace("&", "&", $URL));
- include(PATH."inc/footer.php");
+ LOAD_INC("inc/footer.php");
}
- exit();
+ shutdown();
}
+
+// Wrapper for LOAD_URL but URL comes from a configuration entry
+function LOAD_CONFIGURED_URL ($configEntry) {
+ // Get the URL
+ $URL = getConfig($configEntry);
+
+ // Is this URL set?
+ if (is_null($URL)) {
+ // Then abort here
+ trigger_error(sprintf("Configuration entry %s is not set!", $configEntry));
+ } // END - if
+
+ // Load the URL
+ LOAD_URL($URL);
+}
+
//
-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;
+ // Init replacement-array with full security characters
+ $secChars = $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) $secChars = $GLOBALS['url_chars'];
// Compile constants
- if ($constants) {
+ if ($constants === true) {
// BEFORE 0.2.1 : Language and data constants
// WITH 0.2.1+ : Only language constants
$code = str_replace('{--','".', str_replace('--}','."', $code));
@@ -968,16 +994,16 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) {
} // END - if
// Compile QUOT and other non-HTML codes
- foreach ($ARRAY['to'] as $k => $to) {
+ foreach ($secChars['to'] as $k => $to) {
// Do the reversed thing as in inc/libs/security_functions.php
- $code = str_replace($to, $ARRAY['from'][$k], $code);
+ $code = str_replace($to, $secChars['from'][$k], $code);
} // END - foreach
// But shall I keep simple quotes for later use?
- if ($simple) $code = str_replace("\'", '{QUOT}', $code);
+ if ($simple) $code = str_replace("'", '{QUOT}', $code);
// Find $content[bla][blub] entries
- @preg_match_all('/\$(content|DATA)((\[([a-zA-Z0-9-_]+)\])*)/', $code, $matches);
+ preg_match_all('/\$(content|DATA)((\[([a-zA-Z0-9-_]+)\])*)/', $code, $matches);
// Are some matches found?
if ((count($matches) > 0) && (count($matches[0]) > 0)) {
@@ -1034,7 +1060,7 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) {
* $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 *
+ * $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 *
@@ -1042,8 +1068,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) {
@@ -1077,77 +1102,87 @@ 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; $OUT = "";
- if ($type == "yn")
- {
+function ADD_SELECTION ($type, $DEFAULT, $prefix="", $id="0") {
+ $OUT = "";
+
+ if ($type == "yn") {
// This is a yes/no selection only!
if ($id > 0) $prefix .= "[".$id."]";
- $OUT .= "