X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=049a0c58178fb5061742363a671ba4b3a9ae1c54;hp=67a149808f6a231ce91a6d12910edd2bc2bf5900;hb=c3b3af29e6e80926519ade146ac657c036782bd3;hpb=4bbd0f6ac8e11a702e000ffdfbd868a4e8a06ba3 diff --git a/inc/functions.php b/inc/functions.php index 67a149808f..049a0c5817 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -51,16 +51,17 @@ function IS_INC_WRITEABLE($inc) { $fp = @fopen($fqfn, 'a'); if ($inc == "dummy") { // Remove dummy file - @fclose($fp); - return @unlink($fqfn); + fclose($fp); + return unlink($fqfn); } else { // Close all other files - return @fclose($fp); + return fclose($fp); } } // Open a table (you may want to add some header stuff here) -function OPEN_TABLE($PERCENT = "", $CLASS = "", $ALIGN="left", $VALIGN="", $td_only=false) { +// @DEPRECATED +function OPEN_TABLE ($PERCENT = "", $CLASS = "", $ALIGN="left", $VALIGN="", $td_only=false) { global $table_cnt; // Count tables so we can generate CSS classes for every table... :-) @@ -88,14 +89,15 @@ function OPEN_TABLE($PERCENT = "", $CLASS = "", $ALIGN="left", $VALIGN="", $td_o } // Close a table (you may want to add some footer stuff here) -function CLOSE_TABLE($ADD="") { +// @DEPRECATED +function CLOSE_TABLE( $ADD="") { OUTPUT_HTML(" \n"); if (!empty($ADD)) OUTPUT_HTML($ADD); OUTPUT_HTML(""); } // Output HTML code directly or "render" it. You addionally switch the new-line character off -function OUTPUT_HTML($HTML, $NEW_LINE = true) { +function OUTPUT_HTML ($HTML, $NEW_LINE = true) { // Some global variables global $OUTPUT, $footer, $CSS; @@ -137,6 +139,18 @@ function OUTPUT_HTML($HTML, $NEW_LINE = true) { break; } } elseif ((_OB_CACHING == "on") && ($footer == 1)) { + // Headers already sent? + if (headers_sent()) { + // Log this error + DEBUG_LOG(__FUNCTION__, __LINE__, "Headers already sent! We need debug backtrace here."); + + // Output debug trace + print("Headers are already sent!
\n"); + print("Please report this error at bugs.mxchange.org:
");
+			debug_print_backtrace();
+			die("
Thank you for your help finding bugs."); + } // END - if + // Output cached HTML code $OUTPUT = ob_get_contents(); @@ -233,11 +247,7 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) { $template = strtolower($template); // Count the template load - if (getConfig('num_templates') == null) { - $_CONFIG['num_templates'] = 1; - } else { - $_CONFIG['num_templates']++; - } + incrementConfigEntry('num_templates'); // Prepare IP number and User Agent $REMOTE_ADDR = GET_REMOTE_ADDR(); @@ -339,7 +349,7 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) { // Now does the final template exists? if (FILE_READABLE($file)) { // The local file does exists so we load it. :) - $tmpl_file = implode("", file($file)); + $tmpl_file = READ_FILE($file); // Replace ' to our own chars to preventing them being quoted while (strpos($tmpl_file, "'") !== false) { $tmpl_file = str_replace("'", '{QUOT}', $tmpl_file); } @@ -530,8 +540,8 @@ function SEND_RAW_EMAIL ($to, $subject, $msg, $from) { // // Generate a password in a specified length or use default password length -function GEN_PASS($LEN = 0) { - global $_CONFIG; +function GEN_PASS ($LEN = 0) { + // Auto-fix invalid length of zero if ($LEN == 0) $LEN = getConfig('pass_len'); // Initialize array with all allowed chars @@ -640,7 +650,7 @@ function DEREFERER ($URL) { // Don't de-refer our own links! if (substr($URL, 0, strlen(URL)) != URL) { // De-refer this link - $URL = URL."/modules.php?module=loader&url=".urlencode(base64_encode(gzcompress($URL))); + $URL = "modules.php?module=loader&url=".urlencode(base64_encode(gzcompress($URL))); } // END - if // Return link @@ -747,18 +757,16 @@ function GET_LANGUAGE() { return $ret; } // -function SET_LANGUAGE($lang) { - global $_CONFIG; - +function SET_LANGUAGE ($lang) { // Accept only first 2 chars! $lang = substr(SQL_ESCAPE(strip_tags($lang)), 0, 2); // Set cookie - set_session("mx_lang", $lang); + set_session('mx_lang', $lang); } // function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") { - global $DATA, $_CONFIG, $REPLACER; + global $DATA, $REPLACER, $_CONFIG; // Make sure all template names are lowercase! $template = strtolower($template); @@ -875,7 +883,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") { $newContent = ""; if (FILE_READABLE($file)) { // The local file does exists so we load it. :) - $tmpl_file = implode("", file($file)); + $tmpl_file = READ_FILE($file); $tmpl_file = addslashes($tmpl_file); // Run code @@ -923,7 +931,7 @@ function MAKE_TIME($H, $M, $S, $stamp) { } // function LOAD_URL($URL, $addUrlData=true) { - global $CSS, $_CONFIG, $footer; + global $CSS, $footer; // Compile out URI codes $URL = COMPILE_CODE($URL); @@ -931,10 +939,15 @@ function LOAD_URL($URL, $addUrlData=true) { // Check if http(s):// is there if ((substr($URL, 0, 7) != "http://") && (substr($URL, 0, 8) != "https://")) { // Make all URLs full-qualified - $URL = URL."/".$URL; + $URL = "".$URL; } // Get output buffer + /* + print "
";
+	debug_print_backtrace();
+	die("
"); + */ $OUTPUT = ob_get_contents(); // Clear it only if there is content @@ -946,7 +959,7 @@ function LOAD_URL($URL, $addUrlData=true) { if (((!defined('__COOKIES')) || (!__COOKIES)) && ($addUrlData)) $URL = ADD_URL_DATA($URL); // Probe for bot from search engine - if ((eregi("spider", GET_USER_AGENT())) || (eregi("bot", GET_USER_AGENT())) || (eregi("spider", GET_USER_AGENT()))) { + if ((eregi("spider", GET_USER_AGENT())) || (eregi("bot", GET_USER_AGENT()))) { // Search engine bot detected so let's rewrite many chars for the link $URL = htmlentities(strip_tags($URL), ENT_QUOTES); @@ -1105,7 +1118,7 @@ function array_pk_sort(&$array, $a_sort, $primary_key = 0, $order = -1, $nums = } // function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { - global $MONTH_DESCR, $_CONFIG; + global $MONTH_DESCR; $OUT = ""; if ($type == "yn") { @@ -1233,8 +1246,6 @@ function TRANSLATE_YESNO($yn) // Optional : $DATA // function GEN_RANDOM_CODE($length, $code, $uid, $DATA="") { - global $_CONFIG; - // Fix missing _MAX constant if (!defined('_MAX')) define('_MAX', 15235); @@ -1254,7 +1265,6 @@ function GEN_RANDOM_CODE($length, $code, $uid, $DATA="") { // Add more additional data if (isSessionVariableSet('u_hash')) $data .= ":".get_session('u_hash'); if (isset($GLOBALS['userid'])) $data .= ":".$GLOBALS['userid']; - if (isSessionVariableSet('lifetime')) $data .= ":".get_session('lifetime'); if (isSessionVariableSet('mxchange_theme')) $data .= ":".get_session('mxchange_theme'); if (isSessionVariableSet('mx_lang')) $data .= ":".GET_LANGUAGE(); if (isset($GLOBALS['refid'])) $data .= ":".$GLOBALS['refid']; @@ -1309,8 +1319,6 @@ function bigintval($num, $castValue = true) { } // Insert the code in $img_code into jpeg or PNG image function GENERATE_IMAGE($img_code, $header=true) { - global $_CONFIG; - if ((strlen($img_code) > 6) || (empty($img_code)) || (getConfig('code_length') == 0)) { // Stop execution of function here because of over-sized code length return; @@ -1360,8 +1368,6 @@ function GENERATE_IMAGE($img_code, $header=true) { } // Create selection box or array of splitted timestamp function CREATE_TIME_SELECTIONS ($timestamp, $prefix="", $display="", $align="center", $return_array=false) { - global $_CONFIG; - // Calculate 2-seconds timestamp $stamp = round($timestamp); //* DEBUG: */ print("*".$stamp."/".$timestamp."*
"); @@ -1553,8 +1559,8 @@ function CREATE_TIME_SELECTIONS ($timestamp, $prefix="", $display="", $align="ce return $OUT; } // -function CREATE_TIMESTAMP_FROM_SELECTIONS($prefix, $POST) { - global $_CONFIG; +function CREATE_TIMESTAMP_FROM_SELECTIONS ($prefix, $POST) { + // Initial return value $ret = 0; // Do we have a leap year? @@ -1814,8 +1820,6 @@ function POST_URL ($script, $postData) { // Sends a raw request to another host function SEND_RAW_REQUEST ($host, $request) { - global $_CONFIG; - // Initialize array $response = array("", "", ""); @@ -2025,7 +2029,7 @@ function CREATE_EMAIL_LINK ($email, $table = "admins") { } // Generate a hash for extra-security for all passwords function generateHash ($plainText, $salt = "") { - global $_CONFIG, $_SERVER; + global $_SERVER; // Is the required extension "sql_patches" there and a salt is not given? if (((EXT_VERSION_IS_OLDER("sql_patches", "0.3.6")) || (!EXT_IS_ACTIVE("sql_patches"))) && (empty($salt))) { @@ -2077,8 +2081,6 @@ function generateHash ($plainText, $salt = "") { } // function scrambleString($str) { - global $_CONFIG; - // Init $scrambled = ""; @@ -2110,7 +2112,6 @@ function scrambleString($str) { } // function descrambleString($str) { - global $_CONFIG; // Scramble only 40 chars long strings if (strlen($str) != 40) return $str; @@ -2158,8 +2159,8 @@ function genScrambleString($len) { } // Append data like session ID or referal ID to the given URL which would // normally be stored in cookies -function ADD_URL_DATA($URL) { - global $_CONFIG; +function ADD_URL_DATA ($URL) { + // Init add $ADD = ""; // Determine URL binder @@ -2194,8 +2195,6 @@ function ADD_URL_DATA($URL) { } // Generate an PGP-like encrypted hash of given hash for e.g. cookies function generatePassString($passHash) { - global $_CONFIG; - // Return vanilla password hash $ret = $passHash; @@ -2263,8 +2262,6 @@ function mxchange_die ($msg) { // Display parsing time and number of SQL queries in footer function DISPLAY_PARSING_TIME_FOOTER() { - global $_CONFIG; - // Is the timer started? if (!isset($GLOBALS['startTime'])) { // Abort here @@ -2381,6 +2378,7 @@ function get_session ($var) { // Return the value return $value; } + // Send notification to admin function SEND_ADMIN_NOTIFICATION($subject, $templateName, $content=array(), $uid="0") { if (GET_EXT_VERSION("admins") >= "0.4.1") { @@ -2392,11 +2390,16 @@ function SEND_ADMIN_NOTIFICATION($subject, $templateName, $content=array(), $uid SEND_ADMIN_EMAILS($subject, $msg); } } + // Destroy user session function destroy_user_session () { + // Reset userid + $GLOBALS['userid'] = 0; + // Remove all user data from session - return ((set_session("userid", "")) && (set_session("u_hash", "")) && (set_session("lifetime", ""))); + return ((set_session('userid', "")) && (set_session('u_hash', ""))); } + // Merges an array together but only if both are arrays function merge_array ($array1, $array2) { // Are both an array? @@ -2413,6 +2416,7 @@ function merge_array ($array1, $array2) { debug_print_backtrace(); die(""); } + // Debug message logger function DEBUG_LOG ($file, $line, $message, $force=true) { // Is debug mode enabled? @@ -2423,6 +2427,7 @@ function DEBUG_LOG ($file, $line, $message, $force=true) { fclose($fp); } // END - if } + // Reads a directory with PHP files in and gets only files back function GET_DIR_AS_ARRAY ($baseDir, $prefix) { $INCs = array(); @@ -2467,8 +2472,6 @@ function GET_DIR_AS_ARRAY ($baseDir, $prefix) { } // Load more reset scripts function RESET_ADD_INCLUDES () { - global $_CONFIG; - // Is the reset set or old sql_patches? if ((!defined('__DAILY_RESET')) || (EXT_VERSION_IS_OLDER("sql_patches", "0.4.5"))) { // Then abort here @@ -2599,6 +2602,7 @@ function REVERT_COMMA ($str) { // Return float return $float; } + // Handle menu-depending failed logins and return the rendered content function HANDLE_LOGIN_FAILTURES ($accessLevel) { // Default output is empty ;-) @@ -2627,9 +2631,10 @@ function HANDLE_LOGIN_FAILTURES ($accessLevel) { // Return rendered content return $OUT; } + // Rebuild cache function REBUILD_CACHE ($cache, $inc="") { - global $cacheInstance, $_CONFIG, $CSS; + global $cacheInstance, $CSS; // Shall I remove the cache file? if ((EXT_IS_ACTIVE("cache")) && (is_object($cacheInstance))) { @@ -2656,6 +2661,7 @@ function REBUILD_CACHE ($cache, $inc="") { } // END - if } // END - if } + // Purge admin menu cache function CACHE_PURGE_ADMIN_MENU ($id=0, $action="", $what="", $str="") { global $cacheInstance; @@ -2674,8 +2680,9 @@ function CACHE_PURGE_ADMIN_MENU ($id=0, $action="", $what="", $str="") { } // Experiemental feature! - trigger_error("You have to delete the admin_*.cache files by yourself at this point."); + trigger_error("Experimental feature: You have to delete the admin_*.cache files by yourself at this point."); } + // Translates the "pool type" into human-readable function TRANSLATE_POOL_TYPE ($type) { // Default type is unknown @@ -2693,6 +2700,7 @@ function TRANSLATE_POOL_TYPE ($type) { // Return "translation" return $translated; } + // "Getter" for remote IP number function GET_REMOTE_ADDR () { // Get remote ip from environment @@ -2786,7 +2794,7 @@ function ADD_NEW_BONUS_MAIL ($data, $mode="", $output=true) { } // Determines referal id and sets it function DETERMINE_REFID () { - global $_CONFIG, $CLICK, $_SERVER; + global $CLICK, $_SERVER; // Check if refid is set if ((!empty($_GET['user'])) && ($CLICK == 1) && (basename($_SERVER['PHP_SELF']) == "click.php")) { @@ -2889,7 +2897,7 @@ function getMessage ($messageId) { // Get current theme name function GET_CURR_THEME() { - global $INC_POOL, $_CONFIG, $CSS, $cacheArray; + global $INC_POOL, $CSS, $cacheArray; // The default theme is 'default'... ;-) $ret = "default"; @@ -2899,7 +2907,7 @@ function GET_CURR_THEME() { if (!isSessionVariableSet('mxchange_theme')) { // Set default theme - set_session("mxchange_theme", $ret); + set_session('mxchange_theme', $ret); } elseif ((isSessionVariableSet('mxchange_theme')) && (GET_EXT_VERSION("sql_patches") >= "0.1.4")) { //die("
".print_r($cacheArray['themes'], true)."
"); // Get theme from cookie @@ -2917,17 +2925,17 @@ function GET_CURR_THEME() { // Installation mode active if ((!empty($_GET['theme'])) && (FILE_READABLE($theme))) { // Set cookie from URL data - set_session("mxchange_theme", SQL_ESCAPE($_GET['theme'])); + set_session('mxchange_theme', SQL_ESCAPE($_GET['theme'])); } elseif (FILE_READABLE(sprintf("%stheme/%s/theme.php", PATH, SQL_ESCAPE($_POST['theme'])))) { // Set cookie from posted data - set_session("mxchange_theme", SQL_ESCAPE($_POST['theme'])); + set_session('mxchange_theme', SQL_ESCAPE($_POST['theme'])); } // Set return value $ret = get_session('mxchange_theme'); } else { // Invalid design, reset cookie - set_session("mxchange_theme", $ret); + set_session('mxchange_theme', $ret); } // Add (maybe) found theme.php file to inclusion list @@ -2942,7 +2950,7 @@ function GET_CURR_THEME() { // Get id from theme function THEME_GET_ID ($name) { - global $cacheArray, $_CONFIG; + global $cacheArray; // Is the extension "theme" installed? if (!EXT_IS_ACTIVE("theme")) { @@ -2959,7 +2967,7 @@ function THEME_GET_ID ($name) { $id = $cacheArray['themes']['id'][$name]; // Count up - if (getConfig('cache_hits') > 0) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; } + incrementConfigEntry('cache_hits'); } elseif (GET_EXT_VERSION("cache") != "0.1.8") { // Check if current theme is already imported or not $result = SQL_QUERY_ESC("SELECT id FROM `"._MYSQL_PREFIX."_themes` WHERE theme_path='%s' LIMIT 1", @@ -2979,10 +2987,63 @@ function THEME_GET_ID ($name) { return $id; } +// Increment or init with given value or 1 as default the given config entry +function incrementConfigEntry ($configEntry, $value=1) { + global $_CONFIG; + + // Increment it if set or init it with 1 + if (getConfig($configEntry) > 0) { + $_CONFIG[$configEntry] += $value; + } else { + $_CONFIG[$configEntry] = $value; + } +} + +// Read a given file +function READ_FILE ($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)); + } + + // Prepare SQL queries? + if ($sqlPrepare === true) { + // Remove some unwanted chars + $content = str_replace("\r", "", $content); + $content = str_replace("\n\n", "\n", $content); + } // END - if + + // Return the content + return $content; +} + +// Generates an error code from given account status +function GEN_ERROR_CODE_FROM_ACCOUNT_STATUS ($status) { + // Default error code if unknown account status + $ERROR = CODE_UNKNOWN_STATUS; + + // Generate constant name + $constantName = sprintf("CODE_ID_%s", $status); + + // Is the constant there? + if (defined($constantName)) { + // Then get it! + $ERROR = constant($constantName); + } else { + // Unknown status + DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Unknown error status %s detected.", $status)); + } + + // Return error code + return $ERROR; +} + ////////////////////////////////////////////////// -// // // AUTOMATICALLY RE-GENERATED MISSING FUNCTIONS // -// // ////////////////////////////////////////////////// // if (!function_exists('html_entity_decode')) { @@ -2994,5 +3055,5 @@ if (!function_exists('html_entity_decode')) { } } // END - if -// +// [EOF] ?>