<?php
/************************************************************************
- * MXChange v0.2.1 Start: 04/04/2009 *
- * =============== Last change: 04/04/2009 *
+ * Mailer v0.2.1-FINAL Start: 04/04/2009 *
+ * =================== Last change: 04/04/2009 *
* *
* -------------------------------------------------------------------- *
* File : wrapper-functions.php *
* 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 *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009, 2010 by Mailer Developer Team *
* For more information visit: http://www.mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
// Some security stuff...
if (!defined('__SECURITY')) {
- $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), '/inc') + 4) . '/security.php';
- require($INC);
+ die();
} // END - if
// Read a given file
-function readFromFile ($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));
- }
+function readFromFile ($FQFN) {
+ // Sanity-check if file is there (should be there, but just to make it sure)
+ if (!isFileReadable($FQFN)) {
+ // This should not happen
+ debug_report_bug(__FUNCTION__, __LINE__, 'File ' . basename($FQFN) . ' is not readable!');
+ } // END - if
- // Prepare SQL queries?
- if ($sqlPrepare === true) {
- // Remove some unwanted chars
- $content = str_replace("\r", '', $content);
- $content = str_replace("\n\n", "\n", $content);
+ // Is it cached?
+ if (!isset($GLOBALS['file_content'][$FQFN])) {
+ // Load the file
+ if (function_exists('file_get_contents')) {
+ // Use new function
+ $GLOBALS['file_content'][$FQFN] = file_get_contents($FQFN);
+ } else {
+ // Fall-back to implode-file chain
+ $GLOBALS['file_content'][$FQFN] = implode('', file($FQFN));
+ }
} // END - if
// Return the content
- return $content;
+ return $GLOBALS['file_content'][$FQFN];
}
// Writes content to a file
-function writeToFile ($FQFN, $content) {
+function writeToFile ($FQFN, $content, $aquireLock = false) {
// Is the file writeable?
if ((isFileReadable($FQFN)) && (!is_writeable($FQFN)) && (!changeMode($FQFN, 0644))) {
// Not writeable!
- DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("File %s not writeable.", basename($FQFN)));
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf("File %s not writeable.", basename($FQFN)));
// Failed! :(
return false;
// Is the function there?
if (function_exists('file_put_contents')) {
- // Write it directly
- $return = file_put_contents($FQFN, $content);
+ // With lock?
+ if ($aquireLock === true) {
+ // Write it directly with lock
+ $return = file_put_contents($FQFN, $content, LOCK_EX);
+ } else {
+ // Write it directly
+ $return = file_put_contents($FQFN, $content);
+ }
} else {
// Write it with fopen
- $fp = fopen($FQFN, 'w') or app_die(__FUNCTION__, __LINE__, "Cannot write file ".basename($FQFN).'!');
+ $fp = fopen($FQFN, 'w') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write to file ' . basename($FQFN) . '!');
+
+ // Aquire lock
+ if ($aquireLock === true) flock($fp, LOCK_EX);
+
+ // Write content
fwrite($fp, $content);
- fclose($fp);
- // Set CHMOD rights
- $return = changeMode($FQFN, 0644);
+ // Close stream
+ fclose($fp);
}
+ // Mark it as readable
+ $GLOBALS['file_readable'][$FQFN] = true;
+
+ // Remember content in cache
+ $GLOBALS['file_content'][$FQFN] = $content;
+
// Return status
- return $return;
+ return changeMode($FQFN, 0644);
}
// Clears the output buffer. This function does *NOT* backup sent content.
function clearOutputBuffer () {
// Trigger an error on failure
- if (!ob_end_clean()) {
+ if ((ob_get_length() > 0) && (!ob_end_clean())) {
// Failed!
- debug_report_bug(__FUNCTION__.': Failed to clean output buffer.');
- } // END - if
-}
-
-// Loads an include file and logs any missing files for debug purposes
-function loadInclude ($INC) {
- // Add the path. This is why we need a trailing slash in config.php
- $FQFN = constant('PATH') . $INC;
-
- // Is the include file there?
- if (!isIncludeReadable($INC)) {
- // Not there so log it
- debug_report_bug(sprintf("Include file %s not found.", $INC));
- return false;
- } // END - if
-
- // Try to load it
- require($FQFN);
-}
-
-// Loads an include file once
-function loadIncludeOnce ($INC) {
- // Is it not loaded?
- if (!isset($GLOBALS['load_once'][$INC])) {
- // Mark it as loaded
- $GLOBALS['load_once'][$INC] = "loaded";
-
- // Then try to load it
- loadInclude($INC);
+ debug_report_bug(__FUNCTION__, __LINE__, 'Failed to clean output buffer.');
} // END - if
}
-// Checks wether an include file (non-FQFN better) is readable
-function isIncludeReadable ($INC) {
- // Construct FQFN
- $FQFN = constant('PATH') . $INC;
-
- // Is it readable?
- return isFileReadable($FQFN);
-}
-
// Encode strings
// @TODO Implement $compress
function encodeString ($str, $compress = true) {
return $str;
}
-// Smartly adds slashes
-function smartAddSlashes ($unquoted) {
- $unquoted = str_replace("\\", '', $unquoted);
- return addslashes($unquoted);
-}
-
// Decode entities in a nicer way
-function decodeEntities ($str) {
+function decodeEntities ($str, $quote = ENT_NOQUOTES) {
// Decode the entities to UTF-8 now
- $decodedString = html_entity_decode($str, ENT_NOQUOTES, 'UTF-8');
+ $decodedString = html_entity_decode($str, $quote, 'UTF-8');
// Return decoded string
return $decodedString;
// Merges an array together but only if both are arrays
function merge_array ($array1, $array2) {
// Are both an array?
- if ((is_array($array1)) && (is_array($array2))) {
- // Merge all together
- return array_merge($array1, $array2);
- } elseif (is_array($array1)) {
- // Return left array
- DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("array2 is not an array. array != %s", gettype($array2)));
- return $array1;
- } elseif (is_array($array2)) {
- // Return right array
- DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("array1 is not an array. array != %s", gettype($array1)));
- return $array2;
+ if ((!is_array($array1)) && (!is_array($array2))) {
+ // Both are not arrays
+ debug_report_bug(__FUNCTION__, __LINE__, 'No arrays provided!');
+ } elseif (!is_array($array1)) {
+ // Left one is not an array
+ debug_report_bug(__FILE__, __LINE__, sprintf("array1 is not an array. array != %s", gettype($array1)));
+ } elseif (!is_array($array2)) {
+ // Right one is not an array
+ debug_report_bug(__FILE__, __LINE__, sprintf("array2 is not an array. array != %s", gettype($array2)));
}
- // Both are not arrays
- debug_report_bug(__FUNCTION__.": No arrays provided!");
+ // Merge all together
+ return array_merge($array1, $array2);
}
// Check if given FQFN is a readable file
function isFileReadable ($FQFN) {
- // Check all...
- return ((file_exists($FQFN)) && (is_file($FQFN)) && (is_readable($FQFN)));
+ // Do we have cache?
+ if (!isset($GLOBALS['file_readable'][$FQFN])) {
+ // Check all...
+ $GLOBALS['file_readable'][$FQFN] = ((file_exists($FQFN)) && (is_file($FQFN)) && (is_readable($FQFN)));
+
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'file=' . basename($FQFN) . ' - CHECK! (' . intval($GLOBALS['file_readable'][$FQFN]) . ')');
+ } else {
+ // Cache used
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'file=' . basename($FQFN) . ' - CACHE! (' . intval($GLOBALS['file_readable'][$FQFN]) . ')');
+ }
+
+ // Return result
+ return $GLOBALS['file_readable'][$FQFN];
}
-// Checks wether the given FQFN is a directory and not .,.. or .svn
+// Checks wether the given FQFN is a directory and not ., .. or .svn
function isDirectory ($FQFN) {
- // Generate baseName
- $baseName = basename($FQFN);
+ // Do we have cache?
+ if (!isset($GLOBALS['is_directory'][$FQFN])) {
+ // Generate baseName
+ $baseName = basename($FQFN);
- // Check it
- $isDirectory = ((is_dir($FQFN)) && ($baseName != '.') && ($baseName != '..') && ($baseName != '.svn'));
+ // Check it
+ $GLOBALS['is_directory'][$FQFN] = ((is_dir($FQFN)) && ($baseName != '.') && ($baseName != '..') && ($baseName != '.svn'));
+ } // END - if
// Return the result
- return $isDirectory;
+ return $GLOBALS['is_directory'][$FQFN];
}
// "Getter" for remote IP number
$remoteAddr = determineRealRemoteAddress();
// Is removeip installed?
- if (EXT_IS_ACTIVE('removeip')) {
+ if (isExtensionActive('removeip')) {
// Then anonymize it
- $remoteAddr = GET_ANONYMOUS_REMOTE_ADDR($remoteAddr);
+ $remoteAddr = getAnonymousRemoteAddress($remoteAddr);
} // END - if
// Return it
$remoteHost = getenv('REMOTE_HOST');
// Is removeip installed?
- if (EXT_IS_ACTIVE('removeip')) {
+ if (isExtensionActive('removeip')) {
// Then anonymize it
- $remoteHost = GET_ANONYMOUS_REMOTE_HOST($remoteHost);
+ $remoteHost = getAnonymousRemoteHost($remoteHost);
} // END - if
// Return it
}
// "Getter" for user agent
-function detectUserAgent () {
+function detectUserAgent ($alwaysReal = false) {
// Get remote ip from environment
$userAgent = getenv('HTTP_USER_AGENT');
// Is removeip installed?
- if (EXT_IS_ACTIVE('removeip')) {
+ if ((isExtensionActive('removeip')) && ($alwaysReal === false)) {
// Then anonymize it
- $userAgent = GET_ANONYMOUS_USER_AGENT($userAgent);
+ $userAgent = getAnonymousUserAgent($userAgent);
} // END - if
// Return it
$referer = getenv('HTTP_REFERER');
// Is removeip installed?
- if (EXT_IS_ACTIVE('removeip')) {
+ if (isExtensionActive('removeip')) {
// Then anonymize it
- $referer = GET_ANONYMOUS_REFERER($referer);
+ $referer = getAnonymousReferer($referer);
} // END - if
// Return it
return $referer;
}
+// "Getter" for request URI
+function detectRequestUri () {
+ // Return it
+ return (getenv('REQUEST_URI'));
+}
+
+// "Getter" for query string
+function detectQueryString () {
+ return str_replace('&', '&', (getenv('QUERY_STRING')));
+}
+
+// "Getter" for SERVER_NAME
+function detectServerName () {
+ // Return it
+ return (getenv('SERVER_NAME'));
+}
+
// Check wether we are installing
function isInstalling () {
- $installing = ((isset($GLOBALS['mxchange_installing'])) || (REQUEST_ISSET_GET('installing')));
- //* DEBUG: */ var_dump($installing);
- return $installing;
+ // Determine wether we are installing
+ if (!isset($GLOBALS['mailer_installing'])) {
+ // Check URL (css.php/js.php need this)
+ $GLOBALS['mailer_installing'] = isGetRequestParameterSet('installing');
+ } // END - if
+
+ // Return result
+ return $GLOBALS['mailer_installing'];
}
// Check wether this script is installed
function isInstalled () {
- return (
- (
- // New config file found and loaded
- getConfig('MXCHANGE_INSTALLED') == 'Y'
- ) || (
- // Fall-back!
- isIncludeReadable('inc/config.php')
- ) || (
- (
- // New config file found, but not yet read
- isIncludeReadable('inc/cache/config-local.php')
- ) && (
- (
- // Only new config file is found
- !isIncludeReadable('inc/config.php')
- ) || (
- // Is installation mode
- isInstalling()
- )
- )
- )
- );
+ // Do we have cache?
+ if (!isset($GLOBALS['is_installed'])) {
+ // Determine wether this script is installed
+ $GLOBALS['is_installed'] = (
+ (
+ // First is config
+ (
+ (
+ isConfigEntrySet('MXCHANGE_INSTALLED')
+ ) && (
+ getConfig('MXCHANGE_INSTALLED') == 'Y'
+ )
+ )
+ ) || (
+ // New config file found and loaded
+ isIncludeReadable(getCachePath() . 'config-local.php')
+ ) || (
+ (
+ // New config file found, but not yet read
+ isIncludeReadable(getCachePath() . 'config-local.php')
+ ) && (
+ (
+ // Only new config file is found
+ !isIncludeReadable('inc/config.php')
+ ) || (
+ // Is installation mode
+ !isInstalling()
+ )
+ )
+ ));
+ } // END - if
+
+ // Then use the cache
+ return $GLOBALS['is_installed'];
}
// Check wether an admin is registered
function isAdminRegistered () {
- return (getConfig('ADMIN_REGISTERED') == 'Y');
+ // Is cache set?
+ if (!isset($GLOBALS['is_admin_registered'])) {
+ // Simply check it
+ $GLOBALS['is_admin_registered'] = ((isConfigEntrySet('ADMIN_REGISTERED')) && (getConfig('ADMIN_REGISTERED') == 'Y'));
+ } // END - if
+
+ // Return it
+ return $GLOBALS['is_admin_registered'];
}
// Checks wether the reset mode is active
// Checks wether the debug mode is enabled
function isDebugModeEnabled () {
- // Simply check it
- return (getConfig('DEBUG_MODE') == 'Y');
+ // Is cache set?
+ if (!isset($GLOBALS['is_debugmode_enabled'])) {
+ // Simply check it
+ $GLOBALS['is_debugmode_enabled'] = ((isConfigEntrySet('DEBUG_MODE')) && (getConfig('DEBUG_MODE') == 'Y'));
+ } // END - if
+
+ // Return it
+ return $GLOBALS['is_debugmode_enabled'];
+}
+
+// Checks wether SQL debugging is enabled
+function isSqlDebuggingEnabled () {
+ // Is cache set?
+ if (!isset($GLOBALS['is_sql_debug_enabled'])) {
+ // Determine if SQL debugging is enabled
+ $GLOBALS['is_sql_debug_enabled'] = ((isConfigEntrySet('DEBUG_SQL')) && (getConfig('DEBUG_SQL') == 'Y'));
+ } // END - if
+
+ // Return it
+ return $GLOBALS['is_sql_debug_enabled'];
+}
+
+// Checks wether we shall debug regular expressions
+function isDebugRegularExpressionEnabled () {
+ // Is cache set?
+ if (!isset($GLOBALS['is_regular_exp_debug_enabled'])) {
+ // Simply check it
+ $GLOBALS['is_regular_exp_debug_enabled'] = ((isConfigEntrySet('DEBUG_REGEX')) && (getConfig('DEBUG_REGEX') == 'Y'));
+ } // END - if
+
+ // Return it
+ return $GLOBALS['is_regular_exp_debug_enabled'];
}
// Checks wether the cache instance is valid
// Is the source file there?
if (!isFileReadable($source)) {
// Then abort here
- debug_report_bug('Cannot read from source file ' . basename($source) . '.');
+ debug_report_bug(__FUNCTION__, __LINE__, 'Cannot read from source file ' . basename($source) . '.');
} // END - if
// Is the target directory there?
if (!isDirectory(dirname($dest))) {
// Then abort here
- debug_report_bug('Cannot find directory ' . str_replace(constant('PATH'), '', dirname($dest)) . '.');
+ debug_report_bug(__FUNCTION__, __LINE__, 'Cannot find directory ' . str_replace(getPath(), '', dirname($dest)) . '.');
} // END - if
// Now try to copy it
if (!copy($source, $dest)) {
// Something went wrong
- debug_report_bug('copy() has failed to copy the file.');
- } // END - if
+ debug_report_bug(__FUNCTION__, __LINE__, 'copy() has failed to copy the file.');
+ } else {
+ // Reset cache
+ $GLOBALS['file_readable'][$dest] = true;
+ }
// If there are chmod rights set, apply them
if (!empty($chmod)) {
// Wrapper function for header()
// Send a header but checks before if we can do so
function sendHeader ($header) {
+ // Send the header
+ //* DEBUG: */ logDebugMessage(__FUNCTION__ . ': header=' . $header);
+ $GLOBALS['header'][] = trim($header);
+}
+
+// Flushes all headers
+function flushHeaders () {
// Is the header already sent?
if (headers_sent()) {
// Then abort here
- debug_report_bug('Headers already sent!');
+ debug_report_bug(__FUNCTION__, __LINE__, 'Headers already sent!');
} // END - if
- // Send the header
- header($header);
+ // Flush all headers if found
+ if ((isset($GLOBALS['header'])) && (is_array($GLOBALS['header']))) {
+ foreach ($GLOBALS['header'] as $header) {
+ header($header);
+ } // END - foreach
+ } // END - if
+
+ // Mark them as flushed
+ $GLOBALS['header'] = array();
}
// Wrapper function for chmod()
// Is the file/directory there?
if ((!isFileReadable($FQFN)) && (!isDirectory($FQFN))) {
// Neither, so abort here
- debug_report_bug('Cannot chmod() on ' . basename($FQFN) . '.');
+ debug_report_bug(__FUNCTION__, __LINE__, 'Cannot chmod() on ' . basename($FQFN) . '.');
} // END - if
// Try to set them
function removeFile ($FQFN) {
// Is the file there?
if (isFileReadable($FQFN)) {
+ // Reset cache first
+ $GLOBALS['file_readable'][$FQFN] = false;
+
// Yes, so remove it
return unlink($FQFN);
} // END - if
}
// Wrapper for $_POST['sel']
-function countPostSelection () {
- return countSelection(REQUEST_POST('sel'));
+function countPostSelection ($element = 'sel') {
+ // Is it set?
+ if (isPostRequestParameterSet($element)) {
+ // Return counted elements
+ return countSelection(postRequestParameter($element));
+ } else {
+ // Return zero if not found
+ return 0;
+ }
}
// Checks wether the config-local.php is loaded
return ((isset($GLOBALS['config_local_loaded'])) && ($GLOBALS['config_local_loaded'] === true));
}
+// Checks wether a nickname or userid was entered and caches the result
+function isNicknameUsed ($userid) {
+ // Is the cache there
+ if (!isset($GLOBALS['is_nickname_used'][$userid])) {
+ // Determine it
+ $GLOBALS['is_nickname_used'][$userid] = (('' . round($userid) . '') != $userid);
+ } // END - if
+
+ // Return the result
+ return $GLOBALS['is_nickname_used'][$userid];
+}
+
+// Getter for 'what' value
+function getWhat () {
+ // Default is null
+ $what = null;
+
+ // Is the value set?
+ if (isWhatSet(true)) {
+ // Then use it
+ $what = $GLOBALS['what'];
+ } // END - if
+
+ // Return it
+ return $what;
+}
+
+// Setter for 'what' value
+function setWhat ($newWhat) {
+ $GLOBALS['what'] = SQL_ESCAPE($newWhat);
+}
+
+// Setter for 'what' from configuration
+function setWhatFromConfig ($configEntry) {
+ // Get 'what' from config
+ $what = getConfig($configEntry);
+
+ // Set it
+ setWhat($what);
+}
+
+// Checks wether what is set and optionally aborts on miss
+function isWhatSet ($strict = false) {
+ // Check for it
+ $isset = isset($GLOBALS['what']);
+
+ // Should we abort here?
+ if (($strict === true) && ($isset === false)) {
+ // Output backtrace
+ debug_report_bug(__FUNCTION__, __LINE__, 'what is empty.');
+ } // END - if
+
+ // Return it
+ return $isset;
+}
+
+// Getter for 'action' value
+function getAction ($strict = true) {
+ // Default is null
+ $action = null;
+
+ // Is the value set?
+ if (isActionSet(($strict) && (getScriptOutputMode() == 0))) {
+ // Then use it
+ $action = $GLOBALS['action'];
+ } // END - if
+
+ // Return it
+ return $action;
+}
+
+// Setter for 'action' value
+function setAction ($newAction) {
+ $GLOBALS['action'] = SQL_ESCAPE($newAction);
+}
+
+// Checks wether action is set and optionally aborts on miss
+function isActionSet ($strict = false) {
+ // Check for it
+ $isset = ((isset($GLOBALS['action'])) && (!empty($GLOBALS['action'])));
+
+ // Should we abort here?
+ if (($strict === true) && ($isset === false)) {
+ // Output backtrace
+ debug_report_bug(__FUNCTION__, __LINE__, 'action is empty.');
+ } // END - if
+
+ // Return it
+ return $isset;
+}
+
+// Getter for 'module' value
+function getModule ($strict = true) {
+ // Default is null
+ $module = null;
+
+ // Is the value set?
+ if (isModuleSet($strict)) {
+ // Then use it
+ $module = $GLOBALS['module'];
+ } // END - if
+
+ // Return it
+ return $module;
+}
+
+// Setter for 'module' value
+function setModule ($newModule) {
+ // Secure it and make all modules lower-case
+ $GLOBALS['module'] = SQL_ESCAPE(strtolower($newModule));
+}
+
+// Checks wether module is set and optionally aborts on miss
+function isModuleSet ($strict = false) {
+ // Check for it
+ $isset = (!empty($GLOBALS['module']));
+
+ // Should we abort here?
+ if (($strict === true) && ($isset === false)) {
+ // Output backtrace
+ debug_report_bug(__FUNCTION__, __LINE__, 'module is empty.');
+ } // END - if
+
+ // Return it
+ return (($isset === true) && ($GLOBALS['module'] != 'unknown')) ;
+}
+
+// Getter for 'output_mode' value
+function getScriptOutputMode () {
+ // Default is null
+ $output_mode = null;
+
+ // Is the value set?
+ if (isOutputModeSet(true)) {
+ // Then use it
+ $output_mode = $GLOBALS['output_mode'];
+ } // END - if
+
+ // Return it
+ return $output_mode;
+}
+
+// Setter for 'output_mode' value
+function setOutputMode ($newOutputMode) {
+ $GLOBALS['output_mode'] = (int) $newOutputMode;
+}
+
+// Checks wether output_mode is set and optionally aborts on miss
+function isOutputModeSet ($strict = false) {
+ // Check for it
+ $isset = (isset($GLOBALS['output_mode']));
+
+ // Should we abort here?
+ if (($strict === true) && ($isset === false)) {
+ // Output backtrace
+ debug_report_bug(__FUNCTION__, __LINE__, 'Output_mode is empty.');
+ } // END - if
+
+ // Return it
+ return $isset;
+}
+
+// Enables block-mode
+function enableBlockMode ($enabled = true) {
+ $GLOBALS['block_mode'] = $enabled;
+}
+
+// Checks wether block-mode is enabled
+function isBlockModeEnabled () {
+ // Abort if not set
+ if (!isset($GLOBALS['block_mode'])) {
+ // Needs to be fixed
+ debug_report_bug(__FUNCTION__, __LINE__, 'Block_mode is not set.');
+ } // END - if
+
+ // Return it
+ return $GLOBALS['block_mode'];
+}
+
+// Wrapper function for addPointsThroughReferalSystem()
+function addPointsDirectly ($subject, $userid, $points) {
+ // Reset level here
+ unset($GLOBALS['ref_level']);
+
+ // Call more complicated method (due to more parameters)
+ return addPointsThroughReferalSystem($subject, $userid, $points, false, 0, false, 'direct');
+}
+
+// Wrapper for redirectToUrl but URL comes from a configuration entry
+function redirectToConfiguredUrl ($configEntry) {
+ // Load the URL
+ redirectToUrl(getConfig($configEntry));
+}
+
+// Wrapper function to redirect from member-only modules to index
+function redirectToIndexMemberOnlyModule () {
+ // Do the redirect here
+ redirectToUrl('modules.php?module=index&code=' . getCode('MODULE_MEMBER_ONLY') . '&mod=' . getModule());
+}
+
+// Wrapper function to redirect to current URL
+function redirectToRequestUri () {
+ redirectToUrl(basename(detectRequestUri()));
+}
+
+// Wrapper function to redirect to de-refered URL
+function redirectToDereferedUrl ($URL) {
+ // Redirect to to
+ redirectToUrl(generateDerefererUrl($URL));
+}
+
+// Wrapper function for checking if extension is installed and newer or same version
+function isExtensionInstalledAndNewer ($ext_name, $version) {
+ // Is an cache entry found?
+ if (!isset($GLOBALS['ext_installed_newer'][$ext_name][$version])) {
+ $GLOBALS['ext_installed_newer'][$ext_name][$version] = ((isExtensionInstalled($ext_name)) && (getExtensionVersion($ext_name) >= $version));
+ } else {
+ // Cache hits should be incremented twice
+ incrementStatsEntry('cache_hits', 2);
+ }
+
+ // Return it
+ //* DEBUG: */ debugOutput(__FUNCTION__.':'.$ext_name.'=>'.$version.':'.intval($GLOBALS['ext_installed_newer'][$ext_name][$version]));
+ return $GLOBALS['ext_installed_newer'][$ext_name][$version];
+}
+
+// Wrapper function for checking if extension is installed and older than given version
+function isExtensionInstalledAndOlder ($ext_name, $version) {
+ // Is an cache entry found?
+ if (!isset($GLOBALS['ext_installed_older'][$ext_name][$version])) {
+ $GLOBALS['ext_installed_older'][$ext_name][$version] = ((isExtensionInstalled($ext_name)) && (isExtensionOlder($ext_name, $version)));
+ } else {
+ // Cache hits should be incremented twice
+ incrementStatsEntry('cache_hits', 2);
+ }
+
+ // Return it
+ //* DEBUG: */ debugOutput(__FUNCTION__.':'.$ext_name.'<'.$version.':'.intval($GLOBALS['ext_installed_older'][$ext_name][$version]));
+ return $GLOBALS['ext_installed_older'][$ext_name][$version];
+}
+
+// Set username
+function setUsername ($userName) {
+ $GLOBALS['username'] = (string) $userName;
+}
+
+// Get username
+function getUsername () {
+ // User name set?
+ if (!isset($GLOBALS['username'])) {
+ // No, so it has to be a guest
+ $GLOBALS['username'] = '{--USERNAME_GUEST--}';
+ } // END - if
+
+ // Return it
+ return $GLOBALS['username'];
+}
+
+// Wrapper function for installation phase
+function isInstallationPhase () {
+ // Do we have cache?
+ if (!isset($GLOBALS['installation_phase'])) {
+ // Determine it
+ $GLOBALS['installation_phase'] = ((!isInstalled()) || (isInstalling()));
+ } // END - if
+
+ // Return result
+ return $GLOBALS['installation_phase'];
+}
+
+// Checks wether the extension demo is actuve and the admin login is demo (password needs to be demo, too!)
+function isDemoModeActive () {
+ // Is cache set?
+ if (!isset($GLOBALS['demo_mode_active'])) {
+ // Simply check it
+ $GLOBALS['demo_mode_active'] = ((isExtensionActive('demo')) && (getAdminLogin(getSession('admin_id')) == 'demo'));
+ } // END - if
+
+ // Return it
+ return $GLOBALS['demo_mode_active'];
+}
+
+// Getter for PHP caching value
+function getPhpCaching () {
+ return $GLOBALS['php_caching'];
+}
+
+// Checks wether the admin hash is set
+function isAdminHashSet ($adminId) {
+ // Is the array there?
+ if (!isset($GLOBALS['cache_array']['admin'])) {
+ // Missing array should be reported
+ debug_report_bug(__FUNCTION__, __LINE__, 'Cache not set.');
+ } // END - if
+
+ // Check for admin hash
+ return isset($GLOBALS['cache_array']['admin']['password'][$adminId]);
+}
+
+// Setter for admin hash
+function setAdminHash ($adminId, $hash) {
+ $GLOBALS['cache_array']['admin']['password'][$adminId] = $hash;
+}
+
+// Init user data array
+function initUserData () {
+ // User id should not be zero
+ if (getCurrentUserId() < 1) debug_report_bug(__FUNCTION__, __LINE__, 'User id is zero.');
+
+ // Init the user
+ $GLOBALS['user_data'][getCurrentUserId()] = array();
+}
+
+// Getter for user data
+function getUserData ($column) {
+ // User id should not be zero
+ if (getCurrentUserId() < 1) debug_report_bug(__FUNCTION__, __LINE__, 'User id is zero.');
+
+ // Return the value
+ return $GLOBALS['user_data'][getCurrentUserId()][$column];
+}
+
+// Geter for whole user data array
+function getUserDataArray () {
+ // Get user id
+ $uid = getCurrentUserId();
+
+ // User id should not be zero
+ if ($uid < 1) debug_report_bug(__FUNCTION__, __LINE__, 'User id is zero.');
+
+ // Get the whole array if found
+ if (isset($GLOBALS['user_data'][$uid])) {
+ // Found, so return it
+ return $GLOBALS['user_data'][$uid];
+ } else {
+ // Return empty array
+ return array();
+ }
+}
+
+// Checks if the user data is valid, this may indicate that the user has logged
+// in, but you should use isMember() if you want to find that out.
+function isUserDataValid () {
+ // User id should not be zero so abort here
+ if (!isCurrentUserIdSet()) return false;
+
+ // Is it cached?
+ if (!isset($GLOBALS['is_userdata_valid'][getCurrentUserId()])) {
+ // Determine it
+ $GLOBALS['is_userdata_valid'][getCurrentUserId()] = ((isset($GLOBALS['user_data'][getCurrentUserId()])) && (count($GLOBALS['user_data'][getCurrentUserId()]) > 1));
+ } // END - if
+
+ // Return the result
+ return $GLOBALS['is_userdata_valid'][getCurrentUserId()];
+}
+
+// Setter for current userid
+function setCurrentUserId ($userid) {
+ // Set userid
+ $GLOBALS['current_userid'] = bigintval($userid);
+
+ // Unset it to re-determine the actual state
+ unset($GLOBALS['is_userdata_valid'][$userid]);
+}
+
+// Getter for current userid
+function getCurrentUserId () {
+ // Userid must be set before it can be used
+ if (!isCurrentUserIdSet()) {
+ // Not set
+ debug_report_bug(__FUNCTION__, __LINE__, 'User id is not set.');
+ } // END - if
+
+ // Return the userid
+ return $GLOBALS['current_userid'];
+}
+
+// Checks if current userid is set
+function isCurrentUserIdSet () {
+ return ((isset($GLOBALS['current_userid'])) && (isValidUserId($GLOBALS['current_userid'])));
+}
+
+// Checks wether we are debugging template cache
+function isDebuggingTemplateCache () {
+ // Do we have cache?
+ if (!isset($GLOBALS['debug_template_cache'])) {
+ // Determine it
+ $GLOBALS['debug_template_cache'] = (getConfig('DEBUG_TEMPLATE_CACHE') == 'Y');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['debug_template_cache'];
+}
+
+// Wrapper for fetchUserData() and getUserData() calls
+function getFetchedUserData ($keyColumn, $userid, $valueColumn) {
+ // Is it cached?
+ if (!isset($GLOBALS['user_data_cache'][$userid][$keyColumn][$valueColumn])) {
+ // Default is 'guest'
+ $data = '{--USERNAME_GUEST--}';
+
+ // Can we fetch the user data?
+ if ((isValidUserId($userid)) && (fetchUserData($userid, $keyColumn))) {
+ // Now get the data back
+ $data = getUserData($valueColumn);
+ } // END - if
+
+ // Cache it
+ $GLOBALS['user_data_cache'][$userid][$keyColumn][$valueColumn] = $data;
+ } // END - if
+
+ // Return it
+ return $GLOBALS['user_data_cache'][$userid][$keyColumn][$valueColumn];
+}
+
+// Wrapper for strpos() to ease porting from deprecated ereg() function
+function isInString ($needle, $haystack) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'needle=' . $needle . ', haystack=' . $haystack . ', returned=' . intval(strpos($haystack, $needle) !== false));
+ return (strpos($haystack, $needle) !== false);
+}
+
+// Wrapper for strpos() to ease porting from deprecated eregi() function
+// This function is case-insensitive
+function isInStringIgnoreCase ($needle, $haystack) {
+ return (isInString(strtolower($needle), strtolower($haystack)));
+}
+
+// Wrapper to check for if fatal errors where detected
+function ifFatalErrorsDetected () {
+ // Just call the inner function
+ return (getTotalFatalErrors() > 0);
+}
+
+// Setter for HTTP status
+function setHttpStatus ($status) {
+ $GLOBALS['http_status'] = (string) $status;
+}
+
+// Getter for HTTP status
+function getHttpStatus () {
+ return $GLOBALS['http_status'];
+}
+
+/**
+ * Send a HTTP redirect to the browser. This function was taken from DokuWiki
+ * (GNU GPL 2; http://www.dokuwiki.org) and modified to fit into mailer project.
+ *
+ * ----------------------------------------------------------------------------
+ * If you want to redirect, please use redirectToUrl(); instead
+ * ----------------------------------------------------------------------------
+ *
+ * Works arround Microsoft IIS cookie sending bug. Does exit the script.
+ *
+ * @link http://support.microsoft.com/kb/q176113/
+ * @author Andreas Gohr <andi@splitbrain.org>
+ * @access private
+ */
+function sendRawRedirect ($url) {
+ // always close the session
+ session_write_close();
+
+ // Revert entity &
+ $url = str_replace('&', '&', $url);
+
+ // check if running on IIS < 6 with CGI-PHP
+ if ((isset($_SERVER['SERVER_SOFTWARE'])) && (isset($_SERVER['GATEWAY_INTERFACE'])) &&
+ (strpos($_SERVER['GATEWAY_INTERFACE'],'CGI') !== false) &&
+ (preg_match('|^Microsoft-IIS/(\d)\.\d$|', trim($_SERVER['SERVER_SOFTWARE']), $matches)) &&
+ ($matches[1] < 6)) {
+ // Send the IIS header
+ sendHeader('Refresh: 0;url=' . $url);
+ } else {
+ // Send generic header
+ sendHeader('Location: ' . $url);
+ }
+
+ // Shutdown here
+ shutdown();
+}
+
+// Determines the country of the given user id
+function determineCountry ($userid) {
+ // Default is 'invalid'
+ $country = 'invalid';
+
+ // Is extension country active?
+ if (isExtensionActive('country')) {
+ // Determine the right country code through the country id
+ $id = getUserData('country_code');
+
+ // Then handle it over
+ $country = generateCountryInfo($id);
+ } else {
+ // Get raw code from user data
+ $country = getUserData('country');
+ }
+
+ // Return it
+ return $country;
+}
+
+// "Getter" for total confirmed user accounts
+function getTotalConfirmedUser () {
+ // Is it cached?
+ if (!isset($GLOBALS['total_confirmed_users'])) {
+ // Then do it
+ $GLOBALS['total_confirmed_users'] = countSumTotalData('CONFIRMED', 'user_data', 'userid', 'status', true);
+ } // END - if
+
+ // Return cached value
+ return $GLOBALS['total_confirmed_users'];
+}
+
+// "Getter" for total unconfirmed user accounts
+function getTotalUnconfirmedUser () {
+ // Is it cached?
+ if (!isset($GLOBALS['total_unconfirmed_users'])) {
+ // Then do it
+ $GLOBALS['total_unconfirmed_users'] = countSumTotalData('UNCONFIRMED', 'user_data', 'userid', 'status', true);
+ } // END - if
+
+ // Return cached value
+ return $GLOBALS['total_unconfirmed_users'];
+}
+
+// "Getter" for total locked user accounts
+function getTotalLockedUser () {
+ // Is it cached?
+ if (!isset($GLOBALS['total_locked_users'])) {
+ // Then do it
+ $GLOBALS['total_locked_users'] = countSumTotalData('LOCKED', 'user_data', 'userid', 'status', true);
+ } // END - if
+
+ // Return cached value
+ return $GLOBALS['total_locked_users'];
+}
+
+// Is given userid valid?
+function isValidUserId ($userid) {
+ // Do we have cache?
+ if (!isset($GLOBALS['is_valid_userid'][$userid])) {
+ // Check it out
+ $GLOBALS['is_valid_userid'][$userid] = ((!is_null($userid)) && (!empty($userid)) && ($userid > 0));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['is_valid_userid'][$userid];
+}
+
+// Encodes entities
+function encodeEntities ($str) {
+ // Secure it first
+ $str = secureString($str);
+
+ // Encode dollar sign as well
+ $str = str_replace('$', '$', $str);
+
+ // Return it
+ return $str;
+}
+
+// "Getter" for date from patch_ctime
+function getDateFromPatchTime () {
+ // Is it cached?
+ if (!isset($GLOBALS[__FUNCTION__])) {
+ // Then set it
+ $GLOBALS[__FUNCTION__] = generateDateTime(getConfig('patch_ctime'), '5');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__];
+}
+
+// Getter for current year (default)
+function getYear ($timestamp = null) {
+ // Is it cached?
+ if (!isset($GLOBALS['year'][$timestamp])) {
+ // null is time()
+ if (is_null($timestamp)) $timestamp = time();
+
+ // Then create it
+ $GLOBALS['year'][$timestamp] = date('Y', $timestamp);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['year'][$timestamp];
+}
+
+// Getter for current month (default)
+function getMonth ($timestamp = null) {
+ // Is it cached?
+ if (!isset($GLOBALS['month'][$timestamp])) {
+ // null is time()
+ if (is_null($timestamp)) $timestamp = time();
+
+ // Then create it
+ $GLOBALS['month'][$timestamp] = date('m', $timestamp);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['month'][$timestamp];
+}
+
+// Getter for current day (default)
+function getDay ($timestamp = null) {
+ // Is it cached?
+ if (!isset($GLOBALS['day'][$timestamp])) {
+ // null is time()
+ if (is_null($timestamp)) $timestamp = time();
+
+ // Then create it
+ $GLOBALS['day'][$timestamp] = date('d', $timestamp);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['day'][$timestamp];
+}
+
+// Getter for current week (default)
+function getWeek ($timestamp = null) {
+ // Is it cached?
+ if (!isset($GLOBALS['week'][$timestamp])) {
+ // null is time()
+ if (is_null($timestamp)) $timestamp = time();
+
+ // Then create it
+ $GLOBALS['week'][$timestamp] = date('W', $timestamp);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['week'][$timestamp];
+}
+
+// Getter for current short_hour (default)
+function getShortHour ($timestamp = null) {
+ // Is it cached?
+ if (!isset($GLOBALS['short_hour'][$timestamp])) {
+ // null is time()
+ if (is_null($timestamp)) $timestamp = time();
+
+ // Then create it
+ $GLOBALS['short_hour'][$timestamp] = date('G', $timestamp);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['short_hour'][$timestamp];
+}
+
+// Getter for current long_hour (default)
+function getLongHour ($timestamp = null) {
+ // Is it cached?
+ if (!isset($GLOBALS['long_hour'][$timestamp])) {
+ // null is time()
+ if (is_null($timestamp)) $timestamp = time();
+
+ // Then create it
+ $GLOBALS['long_hour'][$timestamp] = date('H', $timestamp);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['long_hour'][$timestamp];
+}
+
+// Getter for current second (default)
+function getSecond ($timestamp = null) {
+ // Is it cached?
+ if (!isset($GLOBALS['second'][$timestamp])) {
+ // null is time()
+ if (is_null($timestamp)) $timestamp = time();
+
+ // Then create it
+ $GLOBALS['second'][$timestamp] = date('s', $timestamp);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['second'][$timestamp];
+}
+
+// Getter for current minute (default)
+function getMinute ($timestamp = null) {
+ // Is it cached?
+ if (!isset($GLOBALS['minute'][$timestamp])) {
+ // null is time()
+ if (is_null($timestamp)) $timestamp = time();
+
+ // Then create it
+ $GLOBALS['minute'][$timestamp] = date('i', $timestamp);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['minute'][$timestamp];
+}
+
+// Checks wether the title decoration is enabled
+function isTitleDecorationEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['title_deco_enabled'])) {
+ // Just check it
+ $GLOBALS['title_deco_enabled'] = (getConfig('enable_title_deco') == 'Y');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['title_deco_enabled'];
+}
+
+// Checks wether filter usage updates are enabled (expensive queries!)
+function isFilterUsageUpdateEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['filter_usage_updates'])) {
+ // Determine it
+ $GLOBALS['filter_usage_updates'] = ((isExtensionInstalledAndNewer('sql_patches', '0.6.0')) && (isConfigEntrySet('update_filter_usage')) && (getConfig('update_filter_usage') == 'Y'));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['filter_usage_updates'];
+}
+
+// Checks wether debugging of weekly resets is enabled
+function isWeeklyResetDebugEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['weekly_reset_debug'])) {
+ // Determine it
+ $GLOBALS['weekly_reset_debug'] = ((isConfigEntrySet('DEBUG_WEEKLY')) && (getConfig('DEBUG_WEEKLY') == 'Y'));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['weekly_reset_debug'];
+}
+
+// Checks wether debugging of monthly resets is enabled
+function isMonthlyResetDebugEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['monthly_reset_debug'])) {
+ // Determine it
+ $GLOBALS['monthly_reset_debug'] = ((isConfigEntrySet('DEBUG_MONTHLY')) && (getConfig('DEBUG_MONTHLY') == 'Y'));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['monthly_reset_debug'];
+}
+
+// Checks wether displaying of debug SQLs are enabled
+function isDisplayDebugSqlEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['display_debug_sql'])) {
+ // Determine it
+ $GLOBALS['display_debug_sql'] = ((isExtensionInstalledAndNewer('other', '0.2.2')) && (getConfig('display_debug_sqls') == 'Y'));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['display_debug_sql'];
+}
+
+// Checks wether module title is enabled
+function isModuleTitleEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['mod_title_enabled'])) {
+ // Determine it
+ $GLOBALS['mod_title_enabled'] = (getConfig('enable_mod_title') == 'Y');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['mod_title_enabled'];
+}
+
+// Checks wether what title is enabled
+function isWhatTitleEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['mod_title_enabled'])) {
+ // Determine it
+ $GLOBALS['mod_title_enabled'] = (getConfig('enable_what_title') == 'Y');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['mod_title_enabled'];
+}
+
+// Checks wether stats are enabled
+function ifStatsAreEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['stats_enabled'])) {
+ // Then determine it
+ $GLOBALS['stats_enabled'] = (getConfig('stats_enabled') == 'Y');
+ } // END - if
+
+ // Return cached value
+ return $GLOBALS['stats_enabled'];
+}
+
+// Checks wether admin-notification of certain user actions is enabled
+function isAdminNotificationEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['admin_notification_enabled'])) {
+ // Determine it
+ $GLOBALS['admin_notification_enabled'] = (getConfig('admin_notify') == 'Y');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['admin_notification_enabled'];
+}
+
+// Checks wether random referal id selection is enabled
+function isRandomReferalIdEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['select_user_zero_refid'])) {
+ // Determine it
+ $GLOBALS['select_user_zero_refid'] = (getConfig('select_user_zero_refid') == 'Y');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['select_user_zero_refid'];
+}
+
+// "Getter" for default language
+function getDefaultLanguage () {
+ // Do we have cache?
+ if (!isset($GLOBALS['default_language'])) {
+ // Determine it
+ $GLOBALS['default_language'] = getConfig('DEFAULT_LANG');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['default_language'];
+}
+
+// "Getter" for path
+function getPath () {
+ // Do we have cache?
+ if (!isset($GLOBALS['path'])) {
+ // Determine it
+ $GLOBALS['path'] = getConfig('PATH');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['path'];
+}
+
+// "Getter" for url
+function getUrl () {
+ // Do we have cache?
+ if (!isset($GLOBALS['url'])) {
+ // Determine it
+ $GLOBALS['url'] = getConfig('URL');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['url'];
+}
+
+// "Getter" for cache_path
+function getCachePath () {
+ // Do we have cache?
+ if (!isset($GLOBALS['cache_path'])) {
+ // Determine it
+ $GLOBALS['cache_path'] = getConfig('CACHE_PATH');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['cache_path'];
+}
+
+// "Getter" for secret_key
+function getSecretKey () {
+ // Do we have cache?
+ if (!isset($GLOBALS['secret_key'])) {
+ // Determine it
+ $GLOBALS['secret_key'] = getConfig('secret_key');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['secret_key'];
+}
+
+// "Getter" for master_salt
+function getMasterSalt () {
+ // Do we have cache?
+ if (!isset($GLOBALS['master_salt'])) {
+ // Determine it
+ $GLOBALS['master_salt'] = getConfig('master_salt');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['master_salt'];
+}
+
+// "Getter" for prime
+function getPrime () {
+ // Do we have cache?
+ if (!isset($GLOBALS['prime'])) {
+ // Determine it
+ $GLOBALS['prime'] = getConfig('_PRIME');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['prime'];
+}
+
+// "Getter" for encrypt_seperator
+function getEncryptSeperator () {
+ // Do we have cache?
+ if (!isset($GLOBALS['encrypt_seperator'])) {
+ // Determine it
+ $GLOBALS['encrypt_seperator'] = getConfig('ENCRYPT_SEPERATOR');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['encrypt_seperator'];
+}
+
+// "Getter" for mysql_prefix
+function getMysqlPrefix () {
+ // Do we have cache?
+ if (!isset($GLOBALS['mysql_prefix'])) {
+ // Determine it
+ $GLOBALS['mysql_prefix'] = getConfig('_MYSQL_PREFIX');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['mysql_prefix'];
+}
+
+// "Getter" for table_type
+function getTableType () {
+ // Do we have cache?
+ if (!isset($GLOBALS['table_type'])) {
+ // Determine it
+ $GLOBALS['table_type'] = getConfig('_TABLE_TYPE');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['table_type'];
+}
+
+// "Getter" for salt_length
+function getSaltLength () {
+ // Do we have cache?
+ if (!isset($GLOBALS['salt_length'])) {
+ // Determine it
+ $GLOBALS['salt_length'] = getConfig('salt_length');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['salt_length'];
+}
+
+// "Getter" for output_mode
+function getOutputMode () {
+ // Do we have cache?
+ if (!isset($GLOBALS['cached_output_mode'])) {
+ // Determine it
+ $GLOBALS['cached_output_mode'] = getConfig('OUTPUT_MODE');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['cached_output_mode'];
+}
+
+// "Getter" for full_version
+function getFullVersion () {
+ // Do we have cache?
+ if (!isset($GLOBALS['full_version'])) {
+ // Determine it
+ $GLOBALS['full_version'] = getConfig('FULL_VERSION');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['full_version'];
+}
+
+// "Getter" for title
+function getTitle () {
+ // Do we have cache?
+ if (!isset($GLOBALS['title'])) {
+ // Determine it
+ $GLOBALS['title'] = getConfig('TITLE');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['title'];
+}
+
+// "Getter" for curr_svn_revision
+function getCurrSvnRevision () {
+ // Do we have cache?
+ if (!isset($GLOBALS['curr_svn_revision'])) {
+ // Determine it
+ $GLOBALS['curr_svn_revision'] = getConfig('CURR_SVN_REVISION');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['curr_svn_revision'];
+}
+
+// "Getter" for server_url
+function getServerUrl () {
+ // Do we have cache?
+ if (!isset($GLOBALS['server_url'])) {
+ // Determine it
+ $GLOBALS['server_url'] = getConfig('SERVER_URL');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['server_url'];
+}
+
+// "Getter" for mt_word
+function getMtWord () {
+ // Do we have cache?
+ if (!isset($GLOBALS['mt_word'])) {
+ // Determine it
+ $GLOBALS['mt_word'] = getConfig('mt_word');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['mt_word'];
+}
+
+// "Getter" for main_title
+function getMainTitle () {
+ // Do we have cache?
+ if (!isset($GLOBALS['main_title'])) {
+ // Determine it
+ $GLOBALS['main_title'] = getConfig('MAIN_TITLE');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['main_title'];
+}
+
+// "Getter" for file_hash
+function getFileHash () {
+ // Do we have cache?
+ if (!isset($GLOBALS['file_hash'])) {
+ // Determine it
+ $GLOBALS['file_hash'] = getConfig('file_hash');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['file_hash'];
+}
+
+// "Getter" for pass_scramble
+function getPassScramble () {
+ // Do we have cache?
+ if (!isset($GLOBALS['pass_scramble'])) {
+ // Determine it
+ $GLOBALS['pass_scramble'] = getConfig('pass_scramble');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['pass_scramble'];
+}
+
+// "Getter" for ap_inactive_since
+function getApInactiveSince () {
+ // Do we have cache?
+ if (!isset($GLOBALS['ap_inactive_since'])) {
+ // Determine it
+ $GLOBALS['ap_inactive_since'] = getConfig('ap_inactive_since');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['ap_inactive_since'];
+}
+
+// "Getter" for user_min_confirmed
+function getUserMinConfirmed () {
+ // Do we have cache?
+ if (!isset($GLOBALS['user_min_confirmed'])) {
+ // Determine it
+ $GLOBALS['user_min_confirmed'] = getConfig('user_min_confirmed');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['user_min_confirmed'];
+}
+
+// "Getter" for auto_purge
+function getAutoPurge () {
+ // Do we have cache?
+ if (!isset($GLOBALS['auto_purge'])) {
+ // Determine it
+ $GLOBALS['auto_purge'] = getConfig('auto_purge');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['auto_purge'];
+}
+
+// "Getter" for bonus_userid
+function getBonusUserid () {
+ // Do we have cache?
+ if (!isset($GLOBALS['bonus_userid'])) {
+ // Determine it
+ $GLOBALS['bonus_userid'] = getConfig('bonus_userid');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['bonus_userid'];
+}
+
+// "Getter" for ap_inactive_time
+function getApInactiveTime () {
+ // Do we have cache?
+ if (!isset($GLOBALS['ap_inactive_time'])) {
+ // Determine it
+ $GLOBALS['ap_inactive_time'] = getConfig('ap_inactive_time');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['ap_inactive_time'];
+}
+
+// "Getter" for ap_dm_timeout
+function getApDmTimeout () {
+ // Do we have cache?
+ if (!isset($GLOBALS['ap_dm_timeout'])) {
+ // Determine it
+ $GLOBALS['ap_dm_timeout'] = getConfig('ap_dm_timeout');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['ap_dm_timeout'];
+}
+
+// "Getter" for ap_tasks_time
+function getApTasksTime () {
+ // Do we have cache?
+ if (!isset($GLOBALS['ap_tasks_time'])) {
+ // Determine it
+ $GLOBALS['ap_tasks_time'] = getConfig('ap_tasks_time');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['ap_tasks_time'];
+}
+
+// "Getter" for ap_unconfirmed_time
+function getApUnconfirmedTime () {
+ // Do we have cache?
+ if (!isset($GLOBALS['ap_unconfirmed_time'])) {
+ // Determine it
+ $GLOBALS['ap_unconfirmed_time'] = getConfig('ap_unconfirmed_time');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['ap_unconfirmed_time'];
+}
+
+// "Getter" for points
+function getPoints () {
+ // Do we have cache?
+ if (!isset($GLOBALS['points'])) {
+ // Determine it
+ $GLOBALS['points'] = getConfig('POINTS');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['points'];
+}
+
+// "Getter" for slogan
+function getSlogan () {
+ // Do we have cache?
+ if (!isset($GLOBALS['slogan'])) {
+ // Determine it
+ $GLOBALS['slogan'] = getConfig('SLOGAN');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['slogan'];
+}
+
+// "Getter" for copy
+function getCopy () {
+ // Do we have cache?
+ if (!isset($GLOBALS['copy'])) {
+ // Determine it
+ $GLOBALS['copy'] = getConfig('COPY');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['copy'];
+}
+
+// "Getter" for webmaster
+function getWebmaster () {
+ // Do we have cache?
+ if (!isset($GLOBALS['webmaster'])) {
+ // Determine it
+ $GLOBALS['webmaster'] = getConfig('WEBMASTER');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['webmaster'];
+}
+
+// "Getter" for sql_count
+function getSqlCount () {
+ // Do we have cache?
+ if (!isset($GLOBALS['sql_count'])) {
+ // Determine it
+ $GLOBALS['sql_count'] = getConfig('sql_count');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['sql_count'];
+}
+
+// "Getter" for num_templates
+function getNumTemplates () {
+ // Do we have cache?
+ if (!isset($GLOBALS['num_templates'])) {
+ // Determine it
+ $GLOBALS['num_templates'] = getConfig('num_templates');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['num_templates'];
+}
+
+// "Getter" for dns_cache_timeout
+function getDnsCacheTimeout () {
+ // Do we have cache?
+ if (!isset($GLOBALS['dns_cache_timeout'])) {
+ // Determine it
+ $GLOBALS['dns_cache_timeout'] = getConfig('dns_cache_timeout');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['dns_cache_timeout'];
+}
+
+// "Getter" for menu_blur_spacer
+function getMenuBlurSpacer () {
+ // Do we have cache?
+ if (!isset($GLOBALS['menu_blur_spacer'])) {
+ // Determine it
+ $GLOBALS['menu_blur_spacer'] = getConfig('menu_blur_spacer');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['menu_blur_spacer'];
+}
+
+// "Getter" for points_register
+function getPointsRegister () {
+ // Do we have cache?
+ if (!isset($GLOBALS['points_register'])) {
+ // Determine it
+ $GLOBALS['points_register'] = getConfig('points_register');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['points_register'];
+}
+
+// "Getter" for points_ref
+function getPointsRef () {
+ // Do we have cache?
+ if (!isset($GLOBALS['points_ref'])) {
+ // Determine it
+ $GLOBALS['points_ref'] = getConfig('points_ref');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['points_ref'];
+}
+
+// "Getter" for ref_payout
+function getRefPayout () {
+ // Do we have cache?
+ if (!isset($GLOBALS['ref_payout'])) {
+ // Determine it
+ $GLOBALS['ref_payout'] = getConfig('ref_payout');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['ref_payout'];
+}
+
+// "Getter" for online_timeout
+function getOnlineTimeout () {
+ // Do we have cache?
+ if (!isset($GLOBALS['online_timeout'])) {
+ // Determine it
+ $GLOBALS['online_timeout'] = getConfig('online_timeout');
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['online_timeout'];
+}
+
+// Checks wether proxy configuration is used
+function isProxyUsed () {
+ // Do we have cache?
+ if (!isset($GLOBALS['is_proxy_used'])) {
+ // Determine it
+ $GLOBALS['is_proxy_used'] = ((isExtensionInstalledAndNewer('sql_patches', '0.4.3')) && (getConfig('proxy_host') != '') && (getConfig('proxy_port') > 0));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['is_proxy_used'];
+}
+
+// Checks wether POST data contains selections
+function ifPostContainsSelections ($element = 'sel') {
+ // Do we have cache?
+ if (!isset($GLOBALS['post_contains_selections'][$element])) {
+ // Determine it
+ $GLOBALS['post_contains_selections'][$element] = (countPostSelection($element) > 0);
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['post_contains_selections'][$element];
+}
+
+// Checks wether verbose_sql is Y and returns true/false if so
+function isVerboseSqlEnabled () {
+ // Do we have cache?
+ if (!isset($GLOBALS['is_verbose_sql_enabled'])) {
+ // Determine it
+ $GLOBALS['is_verbose_sql_enabled'] = ((isExtensionInstalledAndNewer('sql_patches', '0.0.7')) && (getConfig('verbose_sql') == 'Y'));
+ } // END - if
+
+ // Return cache
+ return $GLOBALS['is_verbose_sql_enabled'];
+}
+
// [EOF]
?>