X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fwrapper-functions.php;h=8e7ae4c14e8c415e0d501d64beb44129b1d0a966;hp=bb570f585aeee4b92253ce8aef94166df8c36d45;hb=19b197c32c96ce8eea26561fb7b40e87c57716ae;hpb=1135eca961b9e2b4deb1ff6a17adebaf7e8f889f diff --git a/inc/wrapper-functions.php b/inc/wrapper-functions.php index bb570f585a..8e7ae4c14e 100644 --- a/inc/wrapper-functions.php +++ b/inc/wrapper-functions.php @@ -92,7 +92,7 @@ function writeToFile ($FQFN, $content, $aquireLock = false) { } } 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); @@ -117,7 +117,7 @@ function writeToFile ($FQFN, $content, $aquireLock = false) { // 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 @@ -151,13 +151,13 @@ function merge_array ($array1, $array2) { // Are both an array? if ((!is_array($array1)) && (!is_array($array2))) { // Both are not arrays - debug_report_bug(__FUNCTION__ . ': No arrays provided!'); + debug_report_bug(__FUNCTION__, __LINE__, 'No arrays provided!'); } elseif (!is_array($array1)) { // Left one is not an array - debug_report_bug(sprintf("[%s:%s] array1 is not an array. array != %s", __FUNCTION__, __LINE__, gettype($array1))); + 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(sprintf("[%s:%s] array2 is not an array. array != %s", __FUNCTION__, __LINE__, gettype($array2))); + debug_report_bug(__FILE__, __LINE__, sprintf("array2 is not an array. array != %s", gettype($array2))); } // Merge all together @@ -277,13 +277,13 @@ function detectServerName () { // Check wether we are installing function isInstalling () { // Determine wether we are installing - if (!isset($GLOBALS['mxchange_installing'])) { + if (!isset($GLOBALS['mailer_installing'])) { // Check URL (css.php/js.php need this) - $GLOBALS['mxchange_installing'] = isGetRequestParameterSet('installing'); + $GLOBALS['mailer_installing'] = isGetRequestParameterSet('installing'); } // END - if // Return result - return $GLOBALS['mxchange_installing']; + return $GLOBALS['mailer_installing']; } // Check wether this script is installed @@ -326,7 +326,14 @@ function isInstalled () { // Check wether an admin is registered function isAdminRegistered () { - return ((isConfigEntrySet('ADMIN_REGISTERED')) && (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 @@ -337,19 +344,38 @@ function isResetModeEnabled () { // Checks wether the debug mode is enabled function isDebugModeEnabled () { - // Simply check it - return ((isConfigEntrySet('DEBUG_MODE')) && (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 () { - return ((isConfigEntrySet('DEBUG_SQL')) && (getConfig('DEBUG_SQL') == 'Y')); + // 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 isDebugRegExpressionEnabled () { - // Simply check it - return ((isConfigEntrySet('DEBUG_REGEX')) && (getConfig('DEBUG_REGEX') == 'Y')); +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 @@ -367,19 +393,19 @@ function copyFileVerified ($source, $dest, $chmod = '') { // 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(getConfig('PATH'), '', dirname($dest)) . '.'); + debug_report_bug(__FUNCTION__, __LINE__, 'Cannot find directory ' . str_replace(getConfig('PATH'), '', 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.'); + debug_report_bug(__FUNCTION__, __LINE__, 'copy() has failed to copy the file.'); } else { // Reset cache $GLOBALS['file_readable'][$dest] = true; @@ -411,7 +437,7 @@ 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 // Flush all headers if found @@ -431,7 +457,7 @@ function changeMode ($FQFN, $mode) { // 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 @@ -529,7 +555,7 @@ function isWhatSet ($strict = false) { // Should we abort here? if (($strict === true) && ($isset === false)) { // Output backtrace - debug_report_bug('what is empty.'); + debug_report_bug(__FUNCTION__, __LINE__, 'what is empty.'); } // END - if // Return it @@ -537,12 +563,12 @@ function isWhatSet ($strict = false) { } // Getter for 'action' value -function getAction () { +function getAction ($strict = true) { // Default is null $action = null; // Is the value set? - if (isActionSet(true)) { + if (isActionSet(($strict) && (getOutputMode() == 0))) { // Then use it $action = $GLOBALS['action']; } // END - if @@ -564,7 +590,7 @@ function isActionSet ($strict = false) { // Should we abort here? if (($strict === true) && ($isset === false)) { // Output backtrace - debug_report_bug('action is empty.'); + debug_report_bug(__FUNCTION__, __LINE__, 'action is empty.'); } // END - if // Return it @@ -600,7 +626,7 @@ function isModuleSet ($strict = false) { // Should we abort here? if (($strict === true) && ($isset === false)) { // Output backtrace - debug_report_bug('module is empty.'); + debug_report_bug(__FUNCTION__, __LINE__, 'module is empty.'); } // END - if // Return it @@ -635,7 +661,7 @@ function isOutputModeSet ($strict = false) { // Should we abort here? if (($strict === true) && ($isset === false)) { // Output backtrace - debug_report_bug('output_mode is empty.'); + debug_report_bug(__FUNCTION__, __LINE__, 'Output_mode is empty.'); } // END - if // Return it @@ -652,7 +678,7 @@ function isBlockModeEnabled () { // Abort if not set if (!isset($GLOBALS['block_mode'])) { // Needs to be fixed - debug_report_bug(__FUNCTION__ . ': block_mode is not set.'); + debug_report_bug(__FUNCTION__, __LINE__, 'Block_mode is not set.'); } // END - if // Return it @@ -671,7 +697,7 @@ function addPointsDirectly ($subject, $userid, $points) { // 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()); + redirectToUrl('modules.php?module=index&code=' . getCode('MODULE_MEMBER_ONLY') . '&mod=' . getModule()); } // Wrapper function to redirect to current URL @@ -687,16 +713,32 @@ function redirectToDereferedUrl ($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: */ print __FUNCTION__.':'.$ext_name.'=>'.$version.'
'; - return ((isExtensionInstalled($ext_name)) && (getExtensionVersion($ext_name) >= $version)); + //* 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: */ print __FUNCTION__.':'.$ext_name.'<'.$version.'
'; - return ((isExtensionInstalled($ext_name)) && (isExtensionOlder($ext_name, $version))); + //* DEBUG: */ debugOutput(__FUNCTION__.':'.$ext_name.'<'.$version.':'.intval($GLOBALS['ext_installed_older'][$ext_name][$version])); + return $GLOBALS['ext_installed_older'][$ext_name][$version]; } // Set username @@ -706,17 +748,14 @@ function setUsername ($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']; + if (!isset($GLOBALS['username'])) { + // No, so it has to be a guest + $GLOBALS['username'] = getMessage('USERNAME_GUEST'); } // END - if // Return it - return $username; + return $GLOBALS['username']; } // Wrapper function for installation phase @@ -733,7 +772,14 @@ function isInstallationPhase () { // 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')); + // Is cache set? + if (!isset($GLOBALS['demo_mode_active'])) { + // Simply check it + $GLOBALS['demo_mode_active'] = ((isExtensionActive('demo')) && (getSession('admin_login') == 'demo')); + } // END - if + + // Return it + return $GLOBALS['demo_mode_active']; } // Getter for PHP caching value @@ -761,7 +807,7 @@ function isAdminHashSet ($admin) { * 14.:js.php:57, require(1) */ if (!isset($GLOBALS['cache_array']['admin'])) { - debug_report_bug('Cache not set.'); + debug_report_bug(__FUNCTION__, __LINE__, 'Cache not set.'); } // END - if // Check for admin hash @@ -815,13 +861,23 @@ 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)); + // 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 @@ -829,7 +885,7 @@ function getCurrentUserId () { // Userid must be set before it can be used if (!isCurrentUserIdSet()) { // Not set - debug_report_bug('User id is not set.'); + debug_report_bug(__FUNCTION__, __LINE__, 'User id is not set.'); } // END - if // Return the userid @@ -838,7 +894,7 @@ function getCurrentUserId () { // Checks if current userid is set function isCurrentUserIdSet () { - return isset($GLOBALS['current_userid']); + return ((isset($GLOBALS['current_userid'])) && ($GLOBALS['current_userid'] > 0)); } // Checks wether we are debugging template cache @@ -847,18 +903,24 @@ function isDebuggingTemplateCache () { } // 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); +function getFetchedUserData ($keyColumn, $userid, $valueColumn) { + // Is it cached? + if (!isset($GLOBALS['user_data_cache'][$userid][$keyColumn][$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 + + // Cache it + $GLOBALS['user_data_cache'][$userid][$keyColumn][$valueColumn] = $data; } // END - if // Return it - return $data; + return $GLOBALS['user_data_cache'][$userid][$keyColumn][$valueColumn]; } // Wrapper for strpos() to ease porting from deprecated ereg() function @@ -873,5 +935,131 @@ 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); +} + +// Wrapper until we merged to the EL branch +function preCompileCode ($code, $template = '', $compiled = false, $full = true, $overwrite = false) { + return compileCode($code, false, true, $full); +} + +// Setter for HTTP status +function setHttpStatus ($status) { + $GLOBALS['http_status'] = (string) $status; +} + +// Getter for HTTP status +function getHttpStatus () { + return $GLOBALS['http_status']; +} + +// Setter for 'is_template_html' +function enableTemplateHtml ($enable = true) { + $GLOBALS['is_template_html'] = (bool) $enable; +} + +// Checks wether the template is HTML or not by previously set flag +// Default: true +function isTemplateHtml () { + // Is the output_mode other than 0 (HTML), then no comments are enabled + if (getOutputMode() != 0) { + // No HTML + return false; + } else { + // Maybe HTML? + return $GLOBALS['is_template_html']; + } +} + +/** + * 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 + * @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']; +} + +// Wrapper for writing debug informations to the browser +function debugOutput ($message) { + outputHtml('
' . $message . '
'); +} + +// 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]; +} + // [EOF] ?>