X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fwrapper-functions.php;h=df22a69ec048c2be90c1dedc38bd08ec5b937f1d;hb=29385a0483bbcbbe940a32a49d488b1d5add15c5;hp=2127a208e7e62d1e6b70ade8346aa97d1f12fdd9;hpb=e45e218c4f629ec63f0788cab231bfc88b3fa46e;p=mailer.git diff --git a/inc/wrapper-functions.php b/inc/wrapper-functions.php index 2127a208e7..df22a69ec0 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 @@ -393,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; @@ -437,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 @@ -457,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 @@ -555,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 @@ -563,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 @@ -590,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 @@ -626,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 @@ -661,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 @@ -678,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 @@ -697,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 @@ -716,10 +716,13 @@ 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)); - } // END - if + } else { + // Cache hits should be incremented twice + incrementStatsEntry('cache_hits', 2); + } // Return it - //* DEBUG: */ print __FUNCTION__.':'.$ext_name.'=>'.$version.':'.intval($GLOBALS['ext_installed_newer'][$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]; } @@ -728,10 +731,13 @@ 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))); - } // END - if + } else { + // Cache hits should be incremented twice + incrementStatsEntry('cache_hits', 2); + } // Return it - //* DEBUG: */ print __FUNCTION__.':'.$ext_name.'<'.$version.':'.intval($GLOBALS['ext_installed_older'][$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]; } @@ -745,7 +751,7 @@ function getUsername () { // User name set? if (!isset($GLOBALS['username'])) { // No, so it has to be a guest - $GLOBALS['username'] = getMessage('USERNAME_GUEST'); + $GLOBALS['username'] = '{--USERNAME_GUEST--}'; } // END - if // Return it @@ -801,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 @@ -879,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 @@ -901,7 +907,7 @@ function getFetchedUserData ($keyColumn, $userid, $valueColumn) { // Is it cached? if (!isset($GLOBALS['user_data_cache'][$userid][$keyColumn][$valueColumn])) { // Default is 'guest' - $data = getMessage('USERNAME_GUEST'); + $data = '{--USERNAME_GUEST--}'; // Can we fetch the user data? if (($userid > 0) && (fetchUserData($userid, $keyColumn))) { @@ -935,5 +941,149 @@ function ifFatalErrorsDetected () { 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]; +} + +// Encodes entities +function encodeEntities ($str) { + // Secure it first + $str = secureString($str); + + // Encode dollar sign as well + $str = str_replace('$', '$', $str); + + // Return it + return $str; +} + +// "Fixes" an empty string into three dashes (use for templates) +function fixEmptyContentToDashes ($str) { + // Trim the string + $str = trim($str); + + // Is the string empty? + if (empty($str)) $str = '---'; + + // Return string + return $str; +} + // [EOF] ?>