X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fwrapper-functions.php;h=236300372037b127ae81da81092a936139fb5aa3;hp=3622206589027c3680d34c714c2dfaacb03bbf3a;hb=d92d8b4ddd219b65df8e0bba5e4354c0bbfba5c9;hpb=a6f31d458bf99f570e5c5efe7ea5f072eb2ae41b diff --git a/inc/wrapper-functions.php b/inc/wrapper-functions.php index 3622206589..2363003720 100644 --- a/inc/wrapper-functions.php +++ b/inc/wrapper-functions.php @@ -17,7 +17,7 @@ * 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 * * For more information visit: http://www.mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -38,8 +38,7 @@ // 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 @@ -71,11 +70,11 @@ function readFromFile ($FQFN, $sqlPrepare = false) { } // 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; @@ -86,20 +85,33 @@ function writeToFile ($FQFN, $content) { // 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).'!'); + + // 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; + // Return status - return $return; + return changeMode($FQFN, 0644); } // Clears the output buffer. This function does *NOT* backup sent content. @@ -111,43 +123,6 @@ function clearOutputBuffer () { } // 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); - } // 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) { @@ -164,8 +139,17 @@ function decodeString ($str, $decompress = true) { // Smartly adds slashes function smartAddSlashes ($unquoted) { - $unquoted = str_replace("\\", '', $unquoted); - return addslashes($unquoted); + // Do we have cache? + if (!isset($GLOBALS['smart_addslashes'][$unquoted])) { + // Remove slashe + $unquoted = str_replace("\\", '', $unquoted); + + // Put it in cache and add slashes + $GLOBALS['smart_addslashes'][$unquoted] = addslashes($unquoted); + } // END - if + + // Return result + return $GLOBALS['smart_addslashes'][$unquoted]; } // Decode entities in a nicer way @@ -180,39 +164,46 @@ function decodeEntities ($str) { // 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__ . ': 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))); + } 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))); } - // 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))); + } // END - if + + // 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 @@ -221,9 +212,9 @@ function detectRemoteAddr () { $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 @@ -236,9 +227,9 @@ function detectRemoteHostname () { $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 @@ -251,9 +242,9 @@ function detectUserAgent () { $userAgent = getenv('HTTP_USER_AGENT'); // Is removeip installed? - if (EXT_IS_ACTIVE('removeip')) { + if (isExtensionActive('removeip')) { // Then anonymize it - $userAgent = GET_ANONYMOUS_USER_AGENT($userAgent); + $userAgent = getAnonymousUserAgent($userAgent); } // END - if // Return it @@ -266,9 +257,9 @@ function detectReferer () { $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 @@ -277,35 +268,46 @@ function detectReferer () { // 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['mxchange_installing'])) { + // Check URL (css.php/js.php need this) + $GLOBALS['mxchange_installing'] = isGetRequestElementSet('installing'); + } // END - if + + // Return result + return $GLOBALS['mxchange_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') - ) || ( + // Do we have cache? + if (!isset($GLOBALS['is_installed'])) { + // Determine wether this script is installed + $GLOBALS['is_installed'] = ( ( - // New config file found, but not yet read - isIncludeReadable('inc/cache/config-local.php') - ) && ( + // First is config + getConfig('MXCHANGE_INSTALLED') == 'Y' + ) || ( + // New config file found and loaded + isIncludeReadable(getConfig('CACHE_PATH') . 'config-local.php') + ) || ( ( - // Only new config file is found - !isIncludeReadable('inc/config.php') - ) || ( - // Is installation mode - isInstalling() + // New config file found, but not yet read + isIncludeReadable(getConfig('CACHE_PATH') . '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 @@ -352,14 +354,17 @@ function copyFileVerified ($source, $dest, $chmod = '') { // 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('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.'); - } // END - if + } else { + // Reset cache + $GLOBALS['file_readable'][$dest] = true; + } // If there are chmod rights set, apply them if (!empty($chmod)) { @@ -404,6 +409,9 @@ function changeMode ($FQFN, $mode) { 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 @@ -415,7 +423,7 @@ function removeFile ($FQFN) { // Wrapper for $_POST['sel'] function countPostSelection () { - return countSelection(REQUEST_POST('sel')); + return countSelection(postRequestElement('sel')); } // Checks wether the config-local.php is loaded @@ -434,7 +442,7 @@ function isNicknameUsed ($userid) { $isUsed = $GLOBALS['cache_probe_nicknames'][$userid]; } else { // Determine it - $isUsed = ((EXT_IS_ACTIVE('nickname')) && ((''.round($userid).'') != $userid)); + $isUsed = ((isExtensionActive('nickname')) && (('' . round($userid) . '') != $userid)); // And write it to the cache $GLOBALS['cache_probe_nicknames'][$userid] = $isUsed; @@ -511,7 +519,7 @@ function setAction ($newAction) { // Checks wether action is set and optionally aborts on miss function isActionSet ($abortOnMiss = false) { // Check for it - $isset = (!empty($GLOBALS['action'])); + $isset = (isset($GLOBALS['action'])); // Should we abort here? if (($abortOnMiss === true) && ($isset === false)) { @@ -540,7 +548,8 @@ function getModule () { // Setter for 'module' value function setModule ($newModule) { - $GLOBALS['module'] = SQL_ESCAPE($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 @@ -551,6 +560,9 @@ function isModuleSet ($abortOnMiss = false) { // Should we abort here? if (($abortOnMiss === true) && ($isset === false)) { // Output backtrace + print '
';
+		debug_print_backtrace();
+		die('