+// Reverts the german decimal comma into Computer decimal dot
+function REVERT_COMMA ($str) {
+ // Default float is not a float... ;-)
+ $float = false;
+
+ // Which language is selected?
+ switch (GET_LANGUAGE()) {
+ case "de": // German language
+ // Remove german thousand dots first
+ $str = str_replace(".", "", $str);
+
+ // Replace german commata with decimal dot and cast it
+ $float = (float)str_replace(",", ".", $str);
+ break;
+
+ default: // US and so on
+ // Remove thousand dots first and cast
+ $float = (float)str_replace(",", "", $str);
+ break;
+ }
+
+ // Return float
+ return $float;
+}
+// Handle menu-depending failed logins and return the rendered content
+function HANDLE_LOGIN_FAILTURES ($accessLevel) {
+ // Default output is empty ;-)
+ $OUT = "";
+
+ // Is the session data set?
+ if ((isSessionVariableSet('mxchange_'.$accessLevel.'_failtures')) && (isSessionVariableSet('mxchange_'.$accessLevel.'_last_fail'))) {
+ // 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: */ 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")
+ );
+
+ // Load template
+ $OUT = LOAD_TEMPLATE("login_failtures", true, $content);
+ } // END - if
+
+ // Reset session data
+ set_session('mxchange_'.$accessLevel.'_failtures', "");
+ set_session('mxchange_'.$accessLevel.'_last_fail', "");
+ } // END - if
+
+ // Return rendered content
+ return $OUT;
+}
+// Rebuild cache
+function REBUILD_CACHE ($cache, $inc="") {
+ global $cacheInstance, $_CONFIG, $CSS;
+
+ // Shall I remove the cache file?
+ if ((EXT_IS_ACTIVE("cache")) && (is_object($cacheInstance))) {
+ // Rebuild cache
+ 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);
+
+ // Is the include there?
+ if (FILE_READABLE($fqfn)) {
+ // And rebuild it from scratch
+ require($fqfn);
+ } else {
+ // Include not found!
+ DEBUG_LOG(__FUNCTION__.":Include {$inc} not found. cache={$cache}");
+ }
+ } // END - if
+ } // END - if
+}
+// Purge admin menu cache
+function CACHE_PURGE_ADMIN_MENU ($id=0, $action="", $what="", $str="") {
+ global $_CONFIG, $cacheInstance;
+
+ // Is the cache extension enabled or no cache instance or admin menu cache disabled?
+ if (!EXT_IS_ACTIVE("cache")) {
+ // Cache extension not active
+ return false;
+ } elseif (!is_object($cacheInstance)) {
+ // No cache instance!
+ DEBUG_LOG(__FUNCTION__.": No cache instance found.");
+ return false;
+ } elseif ((!isset($_CONFIG['cache_admin_menu'])) || ($_CONFIG['cache_admin_menu'] == "N")) {
+ // Caching disabled (currently experiemental!)
+ return false;
+ }
+
+ // Experiemental feature!
+ trigger_error("You have to delete the admin_*.cache files by yourself at this point.");
+}
+// Translates the "pool type" into human-readable
+function TRANSLATE_POOL_TYPE ($type) {
+ // Default type is unknown
+ $translated = sprintf(POOL_TYPE_UNKNOWN, $type);
+
+ // Generate constant
+ $constName = sprintf("POOL_TYPE_%s", $type);
+
+ // Does it exist?
+ if (defined($constName)) {
+ // Then use it
+ $translated = constant($constName);
+ } // 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!");
+ }
+}
+