+// Checks wether a nickname or userid was entered and caches the result
+function isNicknameUsed ($userid) {
+ // Default is false
+ $isUsed = false;
+
+ // Is the cache there
+ if (isset($GLOBALS['is_nickname_used'][$userid])) {
+ // Then use it
+ $isUsed = $GLOBALS['is_nickname_used'][$userid];
+ } else {
+ // Determine it
+ $isUsed = (('' . round($userid) . '') != $userid);
+
+ // And write it to the cache
+ $GLOBALS['is_nickname_used'][$userid] = $isUsed;
+ }
+
+ // Return the result
+ return $isUsed;
+}
+
+// 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('what is empty.');
+ } // END - if
+
+ // Return it
+ return $isset;
+}
+
+// Getter for 'action' value
+function getAction () {
+ // Default is null
+ $action = null;
+
+ // Is the value set?
+ if (isActionSet(true)) {
+ // 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('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('module is empty.');
+ } // END - if
+
+ // Return it
+ return (($isset === true) && ($GLOBALS['module'] != 'unknown')) ;
+}
+
+// Getter for 'output_mode' value
+function getOutputMode () {
+ // 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('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__ . ': 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 function to redirect from member-only modules to index
+function redirectToIndexMemberOnlyModule () {
+ // Do the redirect here
+ redirectToUrl('modules.php?module=index&code=' . getCode('MODULE_MEM_ONLY') . '&mod=' . getModule());
+}
+
+// Wrapper function for checking if extension is installed and newer or same version
+function isExtensionInstalledAndNewer ($ext_name, $version) {
+ // Return it
+ //* DEBUG: */ print __FUNCTION__.':'.$ext_name.'=>'.$version.'<br />';
+ return ((isExtensionInstalled($ext_name)) && (getExtensionVersion($ext_name) >= $version));
+}
+
+// Wrapper function for checking if extension is installed and older than given version
+function isExtensionInstalledAndOlder ($ext_name, $version) {
+ // Return it
+ //* DEBUG: */ print __FUNCTION__.':'.$ext_name.'<'.$version.'<br />';
+ return ((isExtensionInstalled($ext_name)) && (isExtensionOlder($ext_name, $version)));
+}
+
+// Set username
+function setUsername ($userName) {
+ $GLOBALS['username'] = (string) $userName;
+}
+
+// Get username
+function getUsername () {
+ // default is guest
+ $username = getMessage('USERNAME_GUEST');
+
+ // User name set?
+ if (isset($GLOBALS['username'])) {
+ // Use the set name
+ $username = $GLOBALS['username'];
+ } // END - if
+
+ // Return it
+ return $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 () {
+ return ((isExtensionActive('demo')) && (getSession('admin_login') == 'demo'));
+}
+
+// Wrapper function to redirect to de-refered URL
+function redirectToDereferedUrl ($URL) {
+ // De-refer the URL
+ $URL = generateDerefererUrl($URL);
+
+ // Redirect to to
+ redirectToUrl($URL);
+}
+
+// Getter for PHP caching value
+function getPhpCaching () {
+ return $GLOBALS['php_caching'];
+}
+
+// Checks wether the admin hash is set
+function isAdminHashSet ($admin) {
+ if (!isset($GLOBALS['cache_array']['admin'])) debug_report_bug('Cache not set.');
+ return isset($GLOBALS['cache_array']['admin']['password'][$admin]);
+}
+
+// Setter for admin hash
+function setAdminHash ($admin, $hash) {
+ $GLOBALS['cache_array']['admin']['password'][$admin] = $hash;
+}
+
+// Init user data array
+function initUserData () {
+ // User id should not be zero
+ if (getCurrentUserId() < 1) debug_report_bug(__FUNCTION__.': 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__.': User id is zero.');
+
+ // Return the value
+ return $GLOBALS['user_data'][getCurrentUserId()][$column];
+}
+
+// Geter for whole user data array
+function getUserDataArray () {
+ // User id should not be zero
+ if (getCurrentUserId() < 1) debug_report_bug(__FUNCTION__.': User id is zero.');
+
+ // Get the whole array
+ return $GLOBALS['user_data'][getCurrentUserId()];
+}
+
+// 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 the array there and filled?
+ return ((isset($GLOBALS['user_data'][getCurrentUserId()])) && (count($GLOBALS['user_data'][getCurrentUserId()]) > 1));
+}
+
+// Setter for current userid
+function setCurrentUserId ($userid) {
+ $GLOBALS['current_userid'] = bigintval($userid);
+}
+
+// Getter for current userid
+function getCurrentUserId () {
+ // Userid must be set before it can be used
+ if (!isCurrentUserIdSet()) {
+ // Not set
+ debug_report_bug('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']);
+}
+
+// Checks wether we are debugging template cache
+function isDebuggingTemplateCache () {
+ return (getConfig('DEBUG_TEMPLATE_CACHE') == 'Y');
+}
+
+// Wrapper for fetchUserData() and getUserData() calls
+function getFetchedUserData ($keyColumn, $userId, $valueColumn) {
+ // Default is 'guest'
+ $data = getMessage('USERNAME_GUEST');
+
+ // Can we fetch the user data?
+ if (($userId > 0) && (fetchUserData($userId, $keyColumn))) {
+ // Now get the data back
+ $data = getUserData($valueColumn);
+ } // END - if
+
+ // Return it
+ return $data;
+}
+