// Check if our config file is writeable or not
function is_INCWritable($inc) {
- $fp = @fopen(PATH."inc/".$inc.".php", 'a');
+ // Generate FQFN
+ $fqfn = sprintf("%sinc/%s.php", PATH, $inc);
+
+ // Abort by simple test
+ 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(PATH."inc/dummy.php");
+ return @unlink($fqfn);
} else {
// Close all other files
return @fclose($fp);
ob_end_clean();
// Extension "rewrite" installed?
- if ((EXT_IS_ACTIVE("rewrite", true)) && (function_exists('REWRITE_LINKS')) && ($CSS != "1") && ($CSS != "-1")) {
+ if ((EXT_IS_ACTIVE("rewrite")) && (function_exists('REWRITE_LINKS')) && ($CSS != "1") && ($CSS != "-1")) {
$OUTPUT = REWRITE_LINKS($OUTPUT);
} // END - if
OUTPUT_RAW($OUTPUT);
} elseif ((OUTPUT_MODE == "render") && (!empty($OUTPUT))) {
// Rewrite links when rewrite extension is active
- if ((EXT_IS_ACTIVE("rewrite", true)) && (function_exists('REWRITE_LINKS')) && ($CSS != "1") && ($CSS != "-1")) {
+ if ((EXT_IS_ACTIVE("rewrite")) && (function_exists('REWRITE_LINKS')) && ($CSS != "1") && ($CSS != "-1")) {
$OUTPUT = REWRITE_LINKS($OUTPUT);
} // END - if
// Add a fatal error message to the queue array
function ADD_FATAL ($message, $extra="") {
global $FATAL;
+
if (empty($extra)) {
// Regular text message to add to $FATAL
$FATAL[] = $message;
} else {
// $message is text with a mask plus extras to insert into the text
- $FATAL[] = sprintf($message, $extra);
+ $message = sprintf($message, $extra);
+ $FATAL[] = $message;
}
+
+ // Log fatal messages away
+ DEBUG_LOG(__FUNCTION__."(".__LINE__."): message={$message}");
}
// Load a template file and return it's content (only it's name; do not use ' or ")
$result = SQL_QUERY_ESC("SELECT gender, surname, family, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
array($GLOBALS['userid']), __FILE__, __LINE__);
- // @TODO Merge this data into $content
- list($gender, $surname, $family, $email) = SQL_FETCHROW($result);
+ // Is content an array?
+ if (is_array($content)) {
+ // Merge data
+ $content = array_merge($content, SQL_FETCHARRAY($result));
- // Translate gender
- $gender = TRANSLATE_GENDER($gender);
+ // Translate gender
+ $content['gender'] = TRANSLATE_GENDER($content['gender']);
+ } else {
+ // DEPRECATED: Load data in direct variables
+ list($gender, $surname, $family, $email) = SQL_FETCHROW($result);
- // Insert data if content is an array
- if (is_array($content)) {
- // Please switch to $content[bla] in all your templates! Direct
- // variables are deprecated as of 09/13/2008.
- $content['gender'] = $gender;
- $content['surname'] = $surname;
- $content['family'] = $family;
- $content['email'] = $email;
- } // END - if
+ // Translate gender
+ $gender = TRANSLATE_GENDER($gender);
+ }
// Free result
SQL_FREERESULT($result);
- }
+ } // END - if
// Generate date/time string
$date_time = MAKE_DATETIME(time(), "1");
<br /><br />";
}
+ // Remove content and data
+ unset($content);
+ unset($DATA);
+
// Do we have some content to output or return?
if (!empty($ret)) {
// Not empty so let's put it out! ;)
// Send mail out to an email address
function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
- //* DEBUG: */ echo __FUNCTION__.":TO={$TO},SUBJECT={$SUBJECT}<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):TO={$TO},SUBJECT={$SUBJECT}<br />\n";
// Compile subject line (for POINTS constant etc.)
$eval = "\$SUBJECT = html_entity_decode(\"".COMPILE_CODE(addslashes($SUBJECT))."\");";
} 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__);
- //* DEBUG: */ echo __FUNCTION__.":numRows=".SQL_NUMROWS($result_email)."<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):numRows=".SQL_NUMROWS($result_email)."<br />\n";
// Does the user exist?
if (SQL_NUMROWS($result_email)) {
// Is the webmaster!
$TO = WEBMASTER;
}
- //* DEBUG: */ echo __FUNCTION__.":TO={$TO}<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):TO={$TO}<br />\n";
// Check for PHPMailer or debug-mode
if (!CHECK_PHPMAILER_USAGE()) {
$eval = "\$TO = \"".COMPILE_CODE(addslashes($TO))."\";";
eval($eval);
+ // Compile "MSG"
+ $eval = "\$MSG = \"".COMPILE_CODE(addslashes($MSG))."\";";
+ eval($eval);
+
// Fix HTML parameter (default is no!)
if (empty($HTML)) $HTML = "N";
if (isBooleanConstantAndTrue('DEBUG_MODE')) {
Subject : ".$SUBJECT."
Message : ".$MSG."
</pre>\n";
- } elseif (($HTML == "Y") && (EXT_IS_ACTIVE("html_mail", true))) {
+
+ // Log the mail away
+ if (defined('DEBUG_MAIL')) DEBUG_LOG(__FUNCTION__.":to={$TO},subject={$SUBJECT},msg={$MSG}");
+ } elseif (($HTML == "Y") && (EXT_IS_ACTIVE("html_mail"))) {
// Send mail as HTML away
SEND_HTML_EMAIL($TO, $SUBJECT, $MSG, $FROM);
} elseif (!empty($TO)) {
// Send Mail away
- SEND_RAW_EMAIL($TO, COMPILE_CODE($SUBJECT), COMPILE_CODE($MSG), $FROM);
+ SEND_RAW_EMAIL($TO, $SUBJECT, $MSG, $FROM);
} elseif ($HTML == "N") {
// Problem found!
- SEND_RAW_EMAIL(WEBMASTER, COMPILE_CODE($SUBJECT), COMPILE_CODE($MSG), $FROM);
+ SEND_RAW_EMAIL(WEBMASTER, "[PROBLEM:]".$SUBJECT, $MSG, $FROM);
}
}
$mail->WordWrap = 70;
$mail->IsHTML(true);
} else {
- $mail->Body = $msg;
+ $mail->Body = html_entity_decode($msg);
}
$mail->AddAddress($to, "");
$mail->AddReplyTo(WEBMASTER,MAIN_TITLE);
$mail->Send();
} else {
// Use legacy mail() command
- @mail($to, $subject, $msg, $from);
+ @mail($to, $subject, html_entity_decode($msg), $from);
}
}
//
}
// Translates the american decimal dot into a german comma
-function TRANSLATE_COMMA ($dotted, $cut=true) {
+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";
+
+ // Use from config is default
$maxComma = $_CONFIG['max_comma'];
+ // Use from parameter?
+ if ($max > 0) $maxComma = $max;
+
// Cut zeros off?
if ($cut) {
// Test for commata if in cut-mode
if (count($com) > 1) {
// Commata found, so only zeros?
if ($com[1] == str_repeat("0", strlen($com[1]))) {
- // Only zeros, so don't display them
- $maxComma = 0;
+ // Only zeros, so display only one
+ $maxComma = 1;
} // END - if
} else {
// Don't display commatas even if there are none... ;-)
//
function DEREFERER ($URL) {
- $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(gzcompress($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)));
+ } // END - if
+
+ // Return link
return $URL;
}
$ret = ACCOUNT_LOCKED;
break;
+ case "":
+ case null:
+ $ret = ACCOUNT_DELETED;
+ break;
+
default:
$ret = UNKNOWN_STATUS_1.$status.UNKNOWN_STATUS_2;
break;
// No longer used: $MAIN_TITLE = MAIN_TITLE; $URL = URL; $WEBMASTER = WEBMASTER;
// Prepare IP number and User Agent
- $REMOTE_ADDR = getenv('REMOTE_ADDR');
- $HTTP_USER_AGENT = getenv('HTTP_USER_AGENT');
+ $REMOTE_ADDR = GET_REMOTE_ADDR();
+ $HTTP_USER_AGENT = GET_USER_AGENT();
// Default admin
$ADMIN = MAIN_TITLE;
} // END - if
// Load user's data
- //* DEBUG: */ echo __FUNCTION__.":UID={$UID},template={$template}<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):UID={$UID},template={$template}<br />\n";
if ($UID > 0) {
if (EXT_IS_ACTIVE("nickname")) {
- //* DEBUG: */ echo __FUNCTION__.":NICKNAME!<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):NICKNAME!<br />\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__);
} else {
- //* DEBUG: */ echo __FUNCTION__.":NO-NICK!<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):NO-NICK!<br />\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__);
}
// Is content an array?
- //* DEBUG: */ echo __FUNCTION__.":content[]=".gettype($content)."<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):content[]=".gettype($content)."<br />\n";
if (is_array($content)) {
// Fetch and migrate data
- //* DEBUG: */ echo __FUNCTION__.":content()=".count($content)." - PRE<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):content()=".count($content)." - PRE<br />\n";
$content = array_merge($content, SQL_FETCHARRAY($result));
- //* DEBUG: */ echo __FUNCTION__.":content()=".count($content)." - AFTER<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):content()=".count($content)." - AFTER<br />\n";
} // END - if
// Free result
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
+ // Remove content and data
+ unset($content);
+ unset($DATA);
+
// Return compiled content
return COMPILE_CODE($newContent);
}
if (((!defined('__COOKIES')) || (!__COOKIES)) && ($addUrlData)) $URL = ADD_URL_DATA($URL);
// Probe for bot from search engine
- if ((eregi("spider", getenv('HTTP_USER_AGENT'))) || (eregi("bot", getenv('HTTP_USER_AGENT'))) || (eregi("spider", getenv('HTTP_USER_AGENT')))) {
+ if ((eregi("spider", GET_USER_AGENT())) || (eregi("bot", GET_USER_AGENT())) || (eregi("spider", GET_USER_AGENT()))) {
// Search engine bot detected so let's rewrite many chars for the link
$URL = htmlentities(strip_tags($URL), ENT_QUOTES);
//
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;
// Select smaller set of chars to replace when we e.g. want to compile URLs
$test = substr($found, 0, strlen($match));
// Does this entry exist?
- //* DEBUG: */ echo __FUNCTION__.":found={$found},match={$match},set={$set}<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):found={$found},match={$match},set={$set}<br />\n";
if ($test == $match) {
// Match found!
- //* DEBUG: */ echo __FUNCTION__.":fuzzyFound!<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):fuzzyFound!<br />\n";
$fuzzyFound = true;
break;
} // END - if
// Take all string elements
if ((is_string($matches[4][$key])) && (!isset($matchesFound[$match])) && (!isset($matchesFound[$key."_".$matches[4][$key]]))) {
// Replace it in the code
- //* DEBUG: */ echo __FUNCTION__.":key={$key},match={$match}<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):key={$key},match={$match}<br />\n";
$newMatch = str_replace("[".$matches[4][$key]."]", "['".$matches[4][$key]."']", $match);
$code = str_replace($match, "\".".$newMatch.".\"", $code);
$matchesFound[$key."_".$matches[4][$key]] = 1;
$matchesFound[$match] = 1;
} elseif (!isset($matchesFound[$match])) {
// Not yet replaced!
- //* DEBUG: */ echo __FUNCTION__.":match={$match}<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):match={$match}<br />\n";
$code = str_replace($match, "\".".$match.".\"", $code);
$matchesFound[$match] = 1;
}
if (!defined('_MAX')) define('_MAX', 15235);
// Build server string
- $server = $_SERVER['PHP_SELF'].":".getenv('HTTP_USER_AGENT').":".getenv('SERVER_SOFTWARE').":".getenv('REMOTE_ADDR').":".":".filemtime(PATH."inc/databases.php");
+ $server = $_SERVER['PHP_SELF'].":".GET_USER_AGENT().":".getenv('SERVER_SOFTWARE').":".GET_REMOTE_ADDR().":".":".filemtime(PATH."inc/databases.php");
// Build key string
$keys = SITE_KEY.":".DATE_KEY;
global $_CONFIG;
// Calculate 2-seconds timestamp
- $stamp = round($timestamp / 2) * 2;
+ $stamp = round($timestamp);
// Do we have a leap year?
$SWITCH = 0;
if (ereg("/", $host)) $host = substr($host, 0, strpos($host, "/"));
// Generate relative URL
- //* DEBUG */ print("SCRIPT=".$script."<br />\n");
+ //* DEBUG: */ print("SCRIPT=".$script."<br />\n");
if (substr(strtolower($script), 0, 7) == "http://") {
// But only if http:// is in front!
$script = substr($script, (strlen($url) + 7));
$script = substr($script, (strlen($url) + 8));
}
- //* DEBUG */ print("SCRIPT=".$script."<br />\n");
+ //* DEBUG: */ print("SCRIPT=".$script."<br />\n");
if (substr($script, 0, 1) == "/") $script = substr($script, 1);
// Return host name
} // END - if
// Open connection
- //* DEBUG */ die("SCRIPT=".$script."<br />\n");
+ //* DEBUG: */ die("SCRIPT=".$script."<br />\n");
if ($useProxy) {
$fp = @fsockopen(COMPILE_CODE($_CONFIG['proxy_host']), $_CONFIG['proxy_port'], $errno, $errdesc, 30);
} else {
if ((EXT_IS_ACTIVE("admins")) && ($table == "admins")) {
// Create email link for contacting admin in guest area
$EMAIL = ADMINS_CREATE_EMAIL_LINK($email);
- } elseif ((EXT_IS_ACTIVE("user", true)) && (GET_EXT_VERSION("user") >= "0.3.3") && ($table == "user_data")) {
+ } elseif ((EXT_IS_ACTIVE("user")) && (GET_EXT_VERSION("user") >= "0.3.3") && ($table == "user_data")) {
// Create email link for contacting a member within admin area (or later in other areas, too?)
$EMAIL = USER_CREATE_EMAIL_LINK($email);
} elseif ((EXT_IS_ACTIVE("sponsor")) && ($table == "sponsor_data")) {
global $_CONFIG, $_SERVER;
// Is the required extension "sql_patches" there and a salt is not given?
- if (((EXT_VERSION_IS_OLDER("sql_patches", "0.3.6")) || (GET_EXT_VERSION("sql_patches") == "")) && (empty($salt))) {
+ if (((EXT_VERSION_IS_OLDER("sql_patches", "0.3.6")) || (!EXT_IS_ACTIVE("sql_patches"))) && (empty($salt))) {
// Extension sql_patches is missing/outdated so we return the plain text
return $plainText;
} // END - if
} // END - if
// When the salt is empty build a new one, else use the first x configured characters as the salt
- if ($salt == "") {
+ if (empty($salt)) {
// Build server string
- $server = $_SERVER['PHP_SELF'].":".getenv('HTTP_USER_AGENT').":".getenv('SERVER_SOFTWARE').":".getenv('REMOTE_ADDR').":".":".filemtime(PATH."inc/databases.php");
+ $server = $_SERVER['PHP_SELF'].":".GET_USER_AGENT().":".getenv('SERVER_SOFTWARE').":".GET_REMOTE_ADDR().":".":".filemtime(PATH."inc/databases.php");
// Build key string
$keys = SITE_KEY.":".DATE_KEY.":".$_CONFIG['secret_key'].":".$_CONFIG['file_hash'].":".date("d-m-Y (l-F-T)", bigintval($_CONFIG['patch_ctime'])).":".$_CONFIG['master_salt'];
$scrambleString = implode(":", $scrambleNumbers);
return $scrambleString;
}
-// Append data like session ID referral ID to the given URL which would
+// Append data like session ID or referal ID to the given URL which would
// normally be stored in cookies
function ADD_URL_DATA($URL) {
global $_CONFIG;
// In cache?
if (isset($constCache[$constName])) {
// Use cache
- //* DEBUG: */ echo __FUNCTION__.": ".$constName."-CACHE!<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$constName."-CACHE!<br />\n";
$res = $constCache[$constName];
} else {
// Check constant
- //* DEBUG: */ echo __FUNCTION__.": ".$constName."-RESOLVE!<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$constName."-RESOLVE!<br />\n";
if (defined($constName)) $res = (constant($constName) === true);
// Set cache
// Check wether a session variable is set
function isSessionVariableSet($var) {
- //* DEBUG: */ echo __FUNCTION__.":var={$var}<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):var={$var}<br />\n";
return (isset($_SESSION[$var]));
}
// Returns wether the value of the session variable or NULL if not set
if ((isBooleanConstantAndTrue('DEBUG_MODE')) || ($force)) {
// Log this message away
$fp = fopen(PATH."inc/cache/debug.log", 'a') or mxchange_die("Cannot write logfile debug.log!");
- fwrite($fp, date("d.m.Y|H:i:s", time())."|{$message}\n");
+ fwrite($fp, date("d.m.Y|H:i:s", time())."|".strip_tags($message)."\n");
fclose($fp);
} // END - if
}
$file = $baseDir.$baseFile;
// Is this a valid reset file?
- //* DEBUG: */ echo __FUNCTION__.":baseDir={$baseDir},prefix={$prefix},baseFile={$baseFile}<br />\n";
- if ((is_file($file)) && (is_readable($file)) && (substr($baseFile, 0, strlen($prefix)) == $prefix) && (substr($baseFile, -4, 4) == ".php")) {
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):baseDir={$baseDir},prefix={$prefix},baseFile={$baseFile}<br />\n";
+ if ((FILE_READABLE($file)) && (substr($baseFile, 0, strlen($prefix)) == $prefix) && (substr($baseFile, -4, 4) == ".php")) {
// Remove both for extension name
$extName = substr($baseFile, strlen($prefix), -4);
// Close directory
closedir($dirPointer);
+ // Sort array
+ asort($INCs);
+
// Return array with include files
return $INCs;
}
// Get more daily reset scripts
$INC_POOL = GET_DIR_AS_ARRAY(PATH."inc/reset/", "reset_");
+ // Update database
+ if (!defined('DEBUG_RESET')) UPDATE_CONFIG("last_update", time());
+
// Create current week mark
$currWeek = date("W", time());
$INC_POOL = array_merge($INC_POOL, GET_DIR_AS_ARRAY(PATH."inc/weekly/", "weekly_"));
// Update config
- UPDATE_CONFIG("last_week", $currWeek);
+ if (!defined('DEBUG_WEEKLY')) UPDATE_CONFIG("last_week", $currWeek);
} // END - if
// Create current month mark
$INC_POOL = array_merge($INC_POOL, GET_DIR_AS_ARRAY(PATH."inc/monthly/", "monthly_"));
// Update config
- UPDATE_CONFIG("last_month", $currMonth);
+ if (!defined('DEBUG_MONTHLY')) UPDATE_CONFIG("last_month", $currMonth);
} // END - if
// Return array
// Ignore zero values
if (get_session('mxchange_'.$accessLevel.'_failtures') > 0) {
// Non-guest has login failtures found, get both data and prepare it for template
- //* DEBUG: */ echo __FUNCTION__.":accessLevel={$accessLevel}<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):accessLevel={$accessLevel}<br />\n";
$content = array(
'login_failtures' => get_session('mxchange_'.$accessLevel.'_failtures'),
'last_failture' => MAKE_DATETIME(get_session('mxchange_'.$accessLevel.'_last_fail'), "2")
}
// Rebuild cache
function REBUILD_CACHE ($cache, $inc="") {
- global $cacheInstance;
+ global $cacheInstance, $_CONFIG, $CSS;
// Shall I remove the cache file?
if ((EXT_IS_ACTIVE("cache")) && (is_object($cacheInstance))) {
if ($cacheInstance->cache_file($cache, true)) {
// Destroy it
$cacheInstance->cache_destroy();
+ } // END - if
+
+ // Include file given?
+ if (!empty($inc)) {
+ // Construct FQFN
+ $fqfn = sprintf("%sinc/loader/load_cache-%s.php", PATH, $inc);
- // Include file given?
- if (!empty($inc)) {
+ // Is the include there?
+ if (FILE_READABLE($fqfn)) {
// And rebuild it from scratch
- require_once(PATH."inc/loader/load_cache-".$inc.".php");
- } // END - if
+ require($fqfn);
+ } else {
+ // Include not found!
+ DEBUG_LOG(__FUNCTION__.":Include {$inc} not found. cache={$cache}");
+ }
} // END - if
} // END - if
}
// Return "translation"
return $translated;
}
-//
+// "Getter" for remote IP number
+function GET_REMOTE_ADDR () {
+ // Get remote ip from environment
+ $remoteAddr = getenv('REMOTE_ADDR');
+
+ // Is removeip installed?
+ if (EXT_IS_ACTIVE("removeip")) {
+ // Then anonymize it
+ $remoteAddr = GET_ANONYMOUS_REMOTE_ADDR($remoteAddr);
+ } // END - if
+
+ // Return it
+ return $remoteAddr;
+}
+// "Getter" for remote hostname
+function GET_REMOTE_HOST () {
+ // Get remote ip from environment
+ $remoteHost = getenv('REMOTE_HOST');
+
+ // Is removeip installed?
+ if (EXT_IS_ACTIVE("removeip")) {
+ // Then anonymize it
+ $remoteHost = GET_ANONYMOUS_REMOTE_HOST($remoteHost);
+ } // END - if
+
+ // Return it
+ return $remoteHost;
+}
+// "Getter" for user agent
+function GET_USER_AGENT () {
+ // Get remote ip from environment
+ $userAgent = getenv('HTTP_USER_AGENT');
+
+ // Is removeip installed?
+ if (EXT_IS_ACTIVE("removeip")) {
+ // Then anonymize it
+ $userAgent = GET_ANONYMOUS_USER_AGENT($userAgent);
+ } // END - if
+
+ // Return it
+ return $userAgent;
+}
+// "Getter" for referer
+function GET_REFERER () {
+ // Get remote ip from environment
+ $referer = getenv('HTTP_REFERER');
+
+ // Is removeip installed?
+ if (EXT_IS_ACTIVE("removeip")) {
+ // Then anonymize it
+ $referer = GET_ANONYMOUS_REFERER($referer);
+ } // END - if
+
+ // Return it
+ return $referer;
+}
+
+// Adds a bonus mail to the queue
+// This is a high-level function!
+function ADD_NEW_BONUS_MAIL ($data, $mode="", $output=true) {
+ // Use mode from data if not set and availble ;-)
+ if ((empty($mode)) && (isset($data['mode']))) $mode = $data['mode'];
+
+ // Generate receiver list
+ $RECEIVER = GENERATE_RECEIVER_LIST($data['cat'], $data['receiver'], $mode);
+
+ // Receivers added?
+ if (!empty($RECEIVER)) {
+ // Add bonus mail to queue
+ ADD_BONUS_MAIL_TO_QUEUE(
+ $data['subject'],
+ $data['text'],
+ $RECEIVER,
+ $data['points'],
+ $data['seconds'],
+ $data['url'],
+ $data['cat'],
+ $mode,
+ $data['receiver']
+ );
+
+ // Mail inserted into bonus pool
+ if ($output) LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_BONUS_SEND);
+ } elseif ($output) {
+ // More entered than can be reached!
+ LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_MORE_SELECTED);
+ } else {
+ // Debug log
+ DEBUG_LOG(__FUNCTION__."(".__LINE__."): cat={$data['cat']},receiver={$data['receiver']},data=".base64_encode(serialize($data))." More selected, than available!");
+ }
+}
+
//////////////////////////////////////////////////
// //
// AUTOMATICALLY RE-GENERATED MISSING FUNCTIONS //