+ if (getConfig($configEntry) > 0) {
+ $_CONFIG[$configEntry] += $value;
+ } else {
+ $_CONFIG[$configEntry] = $value;
+ }
+}
+
+// Read a given file
+function READ_FILE ($FQFN, $sqlPrepare = false) {
+ // Load the file
+ if (function_exists('file_get_contents')) {
+ // Use new function
+ $content = file_get_contents($FQFN);
+ } else {
+ // Fall-back to implode-file chain
+ $content = implode("", file($FQFN));
+ }
+
+ // Prepare SQL queries?
+ if ($sqlPrepare === true) {
+ // Remove some unwanted chars
+ $content = str_replace("\r", "", $content);
+ $content = str_replace("\n\n", "\n", $content);
+ } // END - if
+
+ // Return the content
+ return $content;
+}
+
+// Writes content to a file
+function WRITE_FILE ($FQFN, $content) {
+ // Is the function there?
+ if (function_exists('file_put_contents')) {
+ // Write it directly
+ file_put_contents($FQFN, $content);
+ } else {
+ // Write it with fopen
+ $fp = fopen($FQFN, 'w') or mxchange_die("Cannot write file ".basename($FQFN)."!");
+ fwrite($fp, $content);
+ fclose($fp);
+
+ // Set CHMOD rights
+ chmod($FQFN, 0644);
+ }
+}
+
+// Generates an error code from given account status
+function GEN_ERROR_CODE_FROM_ACCOUNT_STATUS ($status) {
+ // Default error code if unknown account status
+ $ERROR = CODE_UNKNOWN_STATUS;
+
+ // Generate constant name
+ $constantName = sprintf("CODE_ID_%s", $status);
+
+ // Is the constant there?
+ if (defined($constantName)) {
+ // Then get it!
+ $ERROR = constant($constantName);
+ } else {
+ // Unknown status
+ DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Unknown error status %s detected.", $status));
+ }
+
+ // Return error code
+ return $ERROR;
+}
+
+// Clears the output buffer. This function does *NOT* backup sent content.
+function clearOutputBuffer () {
+ // Trigger an error on failure
+ if (!ob_end_clean()) {
+ // Failed!
+ trigger_error(__FUNCTION__.": Failed to clean output buffer.");
+ } // END - if
+}
+
+// "Getter" for revision/version data
+function getActualVersion ($type = 0) {
+ // By default nothing is new... ;-)
+ $new = false;
+
+ // FQFN of revision file
+ $FQFN = sprintf("%sinc/cache/.revision", constant('PATH'));
+
+ // Check for revision file
+ if (!FILE_READABLE($FQFN)) {
+ // Not found, so we need to create it
+ $new = true;
+ } else {
+ // Revision file found
+ $ins_vers = explode("\n", READ_FILE($FQFN));
+
+ // Is the content valid?
+ if ((!is_array($ins_vers)) || (count($ins_vers) <= 0) || (!isset($ins_vers[$type])) || ($ins_vers[0]) == "new") {
+ // File needs update!
+ $new = true;
+ } else {
+ // Revision-File has valid Data and isn't 'new' so return the Rev-Number
+ return trim($ins_vers[$type]);
+ }
+ }
+
+ if ($new) {
+ // no Revision-File or has no valid Data so read the Revision from the Server.
+ $version = GET_URL("check-updates3.php");
+
+ // Prepare content
+ $akt_vers[] = trim($version[10]);
+ $akt_vers[] = trim($version[9]);
+ $akt_vers[] = trim($version[8]);
+
+ // Write file
+ WRITE_FILE($FQFN, implode("\n", $akt_vers));
+
+ // Return requested content
+ return trim($akt_vers[$type]);
+ }
+}
+
+// Loads an include file and logs any missing files for debug purposes
+function LOAD_INC ($INC) {
+ // Get constant path
+ $PATH = constant('PATH');
+
+ // Use the include file name directly
+ // @TODO Try to find all locations where an FQFN is given to these two
+ // @TODO functions and avoid it.
+ $FQFN = $INC;
+
+ // Check if PATH is in $INC
+ if (substr($INC, 0, $PATH) != $PATH) {
+ // Add it. This is why we need a trailing slash in config.php
+ $FQFN = $PATH . $INC;
+ } // END - if
+
+ // Is the include file there?
+ if (!FILE_READABLE($FQFN)) {
+ // Not there so log it
+ DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Include file %s not found.", basename($INC)));
+ return false;
+ } // END - if
+
+ // Try to load it
+ require($FQFN);
+}
+
+// Loads an include file once
+function LOAD_INC_ONCE ($INC) {
+ global $cacheArray;
+
+ // Is it not loaded?
+ if (!isset($cacheArray['load_once'][$INC])) {
+ // Then try to load it
+ LOAD_INC($INC);
+
+ // And mark it as loaded
+ $cacheArray['load_once'][$INC] = true;
+ } // END - if