X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=1a863f6df84c45ade91a2d65f417dd434b6d1749;hp=73b15f55152c5c57495f721568788e44541d8a60;hb=7076b0bf4f326c0dcb87daa0e02e15b0f42e619e;hpb=2305bb069ede07db6227ab5e51960e501e75d7e6 diff --git a/inc/functions.php b/inc/functions.php index 73b15f5515..1a863f6df8 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -132,7 +132,8 @@ function OUTPUT_HTML($HTML, $NEW_LINE = true) { default: // Huh, something goes wrong or maybe you have edited config.php ??? - die ("".FATAL_ERROR.": ".LANG_NO_RENDER_DIRECT); + DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid renderer %s detected.", OUTPUT_MODE)); + MXCHANGE_DIE("".FATAL_ERROR.": ".LANG_NO_RENDER_DIRECT); break; } } elseif ((_OB_CACHING == "on") && ($footer == 1)) { @@ -142,6 +143,19 @@ function OUTPUT_HTML($HTML, $NEW_LINE = true) { // Clear output buffer for later output ob_end_clean(); + // Send HTTP header + header("HTTP/1.1 200"); + + // Used later + $now = gmdate('D, d M Y H:i:s') . ' GMT'; + + // General headers for no caching + header("Expired: " . $now); // RFC2616 - Section 14.21 + header("Last-Modified: " . $now); + header("Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0"); // HTTP/1.1 + header("Pragma: no-cache"); // HTTP/1.0 + header("Connection: Close"); + // Extension "rewrite" installed? if ((EXT_IS_ACTIVE("rewrite")) && (function_exists('REWRITE_LINKS')) && ($CSS != "1") && ($CSS != "-1")) { $OUTPUT = REWRITE_LINKS($OUTPUT); @@ -207,7 +221,7 @@ function ADD_FATAL ($message, $extra="") { } // Log fatal messages away - DEBUG_LOG(__FUNCTION__."(".__LINE__."): message={$message}"); + DEBUG_LOG(__FUNCTION__, __LINE__, " message={$message}"); } // Load a template file and return it's content (only it's name; do not use ' or ") @@ -226,11 +240,11 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) { $ret = ""; if (empty($GLOBALS['refid'])) $GLOBALS['refid'] = 0; - // @DEPRECATED Try to remove this if() block + // @DEPRECATED Try to rewrite the if() condition if ($template == "member_support_form") { // Support request of a member - $result = SQL_QUERY_ESC("SELECT gender, surname, family, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1", - array($GLOBALS['userid']), __FILE__, __LINE__); + $result = SQL_QUERY_ESC("SELECT userid, gender, surname, family, email FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1", + array($GLOBALS['userid']), __FILE__, __LINE__); // Is content an array? if (is_array($content)) { @@ -245,6 +259,7 @@ function LOAD_TEMPLATE($template, $return=false, $content=array()) { // Translate gender $gender = TRANSLATE_GENDER($gender); + DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("DEPRECATION-WARNING: content is not array (%s).", gettype($content))); } // Free result @@ -443,7 +458,7 @@ Message : ".$MSG." \n"; // Log the mail away - if (defined('DEBUG_MAIL')) DEBUG_LOG(__FUNCTION__.":to={$TO},subject={$SUBJECT},msg={$MSG}"); + if (defined('DEBUG_MAIL')) DEBUG_LOG(__FUNCTION__, __LINE__, "to={$TO},subject={$SUBJECT},msg={$MSG}"); } elseif (($HTML == "Y") && (EXT_IS_ACTIVE("html_mail"))) { // Send mail as HTML away SEND_HTML_EMAIL($TO, $SUBJECT, $MSG, $FROM); @@ -524,13 +539,13 @@ function GEN_PASS($LEN = 0) { $PASS = ""; for ($i = 0; $i < $LEN; $i++) { $PASS .= $ABC[mt_rand(0, sizeof($ABC) -1)]; - } + } // END - for // When the size is below 40 we can also add additional security by scrambling it if (strlen($PASS) <= 40) { // Also scramble the password $PASS = scrambleString($PASS); - } + } // END - if // Return the password return $PASS; @@ -554,6 +569,9 @@ function MAKE_DATETIME ($time, $mode="0") case "1": $ret = strtolower(date("d.m.Y - H:i", $time)); break; case "2": $ret = date("d.m.Y|H:i", $time); break; case "3": $ret = date("d.m.Y", $time); break; + default: + DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid date mode %s detected.", $mode)); + break; } break; @@ -563,6 +581,9 @@ function MAKE_DATETIME ($time, $mode="0") case "1": $ret = date("Y-m-d - g:i A", $time); break; case "2": $ret = date("y-m-d|H:i", $time); break; case "3": $ret = date("y-m-d", $time); break; + default: + DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid date mode %s detected.", $mode)); + break; } } return $ret; @@ -598,7 +619,7 @@ function TRANSLATE_COMMA ($dotted, $cut=true, $max=0) { } // END - if // Debug log - //DEBUG_LOG(__FUNCTION__.":dotted={$dotted},maxComma={$maxComma}"); + //DEBUG_LOG(__FUNCTION__, __LINE__, "dotted={$dotted},maxComma={$maxComma}"); // Translate it now switch (GET_LANGUAGE()) { @@ -683,6 +704,7 @@ function TRANSLATE_STATUS($status) { break; default: + DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Unknown status %s detected.", $status)); $ret = UNKNOWN_STATUS_1.$status.UNKNOWN_STATUS_2; break; } @@ -899,15 +921,15 @@ function MAKE_TIME($H, $M, $S, $stamp) { function LOAD_URL($URL, $addUrlData=true) { global $CSS, $_CONFIG, $footer; + // Compile out URI codes + $URL = COMPILE_CODE($URL); + // 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; } - // Compile out URI codes - $URL = COMPILE_CODE($URL); - // Get output buffer $OUTPUT = ob_get_contents(); @@ -1262,7 +1284,10 @@ function bigintval($num, $castValue = true) { // Has the whole value changed? if ("".$ret."" != "".$num."") { // Log the values - DEBUG_LOG(__FUNCTION__.": num={$num},ret={$ret}"); + print("
");
+		debug_print_backtrace();
+		die("
"); + DEBUG_LOG(__FUNCTION__, __LINE__, " num={$num},ret={$ret}"); } // END - if // Return result @@ -1734,6 +1759,7 @@ function POST_URL ($script, $postData) { // Is postData an array? if (!is_array($postData)) { // Abort here + DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("postData is not an array. Type: %s", gettype($postData))); return array("", "", ""); } // END - if @@ -1981,8 +2007,8 @@ function generateHash ($plainText, $salt = "") { // 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))) { - // Extension sql_patches is missing/outdated so we return the plain text - return $plainText; + // Extension sql_patches is missing/outdated so we hash the plain text with MD5 + return md5($plainText); } // END - if // Do we miss an arry element here? @@ -2002,7 +2028,7 @@ function generateHash ($plainText, $salt = "") { $keys = SITE_KEY.":".DATE_KEY.":".$_CONFIG['secret_key'].":".$_CONFIG['file_hash'].":".date("d-m-Y (l-F-T)", bigintval($_CONFIG['patch_ctime'])).":".$_CONFIG['master_salt']; // Additional data - $data = $plainText.":".uniqid(rand(), true).":".time(); + $data = $plainText.":".uniqid(mt_rand(), true).":".time(); // Calculate number for generating the code $a = time() + _ADD - 1; @@ -2215,7 +2241,7 @@ function mxchange_die ($msg) { // Display parsing time and number of SQL queries in footer function DISPLAY_PARSING_TIME_FOOTER() { - global $startTime, $_CONFIG; + global $_CONFIG; $endTime = microtime(true); // Is the timer started? @@ -2362,12 +2388,12 @@ function merge_array ($array1, $array2) { die(""); } // Debug message logger -function DEBUG_LOG ($message, $force=false) { +function DEBUG_LOG ($file, $line, $message, $force=true) { // Is debug mode enabled? if ((isBooleanConstantAndTrue('DEBUG_MODE')) || ($force)) { // Log this message away $fp = fopen(PATH."inc/cache/debug.log", 'a') or mxchange_die("Cannot write logfile debug.log!"); - fwrite($fp, date("d.m.Y|H:i:s", time())."|".strip_tags($message)."\n"); + fwrite($fp, date("d.m.Y|H:i:s", time())."|".basename(__FILE__)."|".__LINE__."|".strip_tags($message)."\n"); fclose($fp); } // END - if } @@ -2496,31 +2522,31 @@ function FILE_READABLE($fqfn) { // Converts timestamp selections into a timestamp function CONVERT_SELECTIONS_TO_TIMESTAMP(&$POST, &$DATA, &$id, &$skip) { // Init test variable - $TEST2 = ""; + $test2 = ""; // Get last three chars - $TEST = substr($id, -3); + $test = substr($id, -3); // Improved way of checking! :-) - if (in_array($TEST, array("_ye", "_mo", "_we", "_da", "_ho", "_mi", "_se"))) { + if (in_array($test, array("_ye", "_mo", "_we", "_da", "_ho", "_mi", "_se"))) { // Found a multi-selection for timings? - $TEST = substr($id, 0, -3); - if ((isset($POST[$TEST."_ye"])) && (isset($POST[$TEST."_mo"])) && (isset($POST[$TEST."_we"])) && (isset($POST[$TEST."_da"])) && (isset($POST[$TEST."_ho"])) && (isset($POST[$TEST."_mi"])) && (isset($POST[$TEST."_se"])) && ($TEST != $TEST2)) { + $test = substr($id, 0, -3); + if ((isset($POST[$test."_ye"])) && (isset($POST[$test."_mo"])) && (isset($POST[$test."_we"])) && (isset($POST[$test."_da"])) && (isset($POST[$test."_ho"])) && (isset($POST[$test."_mi"])) && (isset($POST[$test."_se"])) && ($test != $test2)) { // Generate timestamp - $POST[$TEST] = CREATE_TIMESTAMP_FROM_SELECTIONS($TEST, $POST); - $DATA[] = "$TEST='".$POST[$TEST]."'"; + $POST[$test] = CREATE_TIMESTAMP_FROM_SELECTIONS($test, $POST); + $DATA[] = sprintf("%s='%s'", $test, $POST[$test]); // Remove data from array foreach (array("ye", "mo", "we", "da", "ho", "mi", "se") as $rem) { - unset($POST[$TEST."_".$rem]); + unset($POST[$test."_".$rem]); } // END - foreach // Skip adding - unset($id); $skip = true; $TEST2 = $TEST; + unset($id); $skip = true; $test2 = $test; } // END - if } else { // Process this entry - $skip = false; $TEST2 = ""; + $skip = false; $test2 = ""; } } // Reverts the german decimal comma into Computer decimal dot @@ -2598,7 +2624,7 @@ function REBUILD_CACHE ($cache, $inc="") { require($fqfn); } else { // Include not found! - DEBUG_LOG(__FUNCTION__.":Include {$inc} not found. cache={$cache}"); + DEBUG_LOG(__FUNCTION__, __LINE__, "Include {$inc} not found. cache={$cache}"); } } // END - if } // END - if @@ -2613,7 +2639,7 @@ function CACHE_PURGE_ADMIN_MENU ($id=0, $action="", $what="", $str="") { return false; } elseif (!is_object($cacheInstance)) { // No cache instance! - DEBUG_LOG(__FUNCTION__.": No cache instance found."); + DEBUG_LOG(__FUNCTION__, __LINE__, " No cache instance found."); return false; } elseif ((!isset($_CONFIG['cache_admin_menu'])) || ($_CONFIG['cache_admin_menu'] == "N")) { // Caching disabled (currently experiemental!) @@ -2728,9 +2754,64 @@ function ADD_NEW_BONUS_MAIL ($data, $mode="", $output=true) { LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_MORE_SELECTED); } else { // Debug log - DEBUG_LOG(__FUNCTION__."(".__LINE__."): cat={$data['cat']},receiver={$data['receiver']},data=".base64_encode(serialize($data))." More selected, than available!"); + DEBUG_LOG(__FUNCTION__, __LINE__, " cat={$data['cat']},receiver={$data['receiver']},data=".base64_encode(serialize($data))." More selected, than available!"); } } +// Determines referal id and sets it +function DETERMINE_REFID () { + global $_CONFIG, $CLICK, $_SERVER; + + // Check if refid is set + if ((!empty($_GET['user'])) && ($CLICK == 1) && (basename($_SERVER['PHP_SELF']) == "click.php")) { + // The variable user comes from the click-counter script click.php and we only accept this here + $GLOBALS['refid'] = bigintval($_GET['user']); + } elseif (!empty($_POST['refid'])) { + // Get referal id from variable refid (so I hope this makes my script more compatible to other scripts) + $GLOBALS['refid'] = SQL_ESCAPE(strip_tags($_POST['refid'])); + } elseif (!empty($_GET['refid'])) { + // Get referal id from variable refid (so I hope this makes my script more compatible to other scripts) + $GLOBALS['refid'] = SQL_ESCAPE(strip_tags($_GET['refid'])); + } elseif (!empty($_GET['ref'])) { + // Set refid=ref (the referal link uses such variable) + $GLOBALS['refid'] = SQL_ESCAPE(strip_tags($_GET['ref'])); + } elseif ((isSessionVariableSet('refid')) && (get_session('refid') != 0)) { + // Set session refid als global + $GLOBALS['refid'] = bigintval(get_session('refid')); + } elseif ((GET_EXT_VERSION("sql_patches") != "") && ($_CONFIG['def_refid'] > 0)) { + // Set default refid as refid in URL + $GLOBALS['refid'] = bigintval($_CONFIG['def_refid']); + } elseif ((GET_EXT_VERSION("user") >= "0.3.4") && ($_CONFIG['select_user_zero_refid']) == "Y") { + // Select a random user which has confirmed enougth mails + $GLOBALS['refid'] = SELECT_RANDOM_REFID(); + } else { + // No default ID when sql_patches is not installed or none set + $GLOBALS['refid'] = 0; + } + + // Set cookie when default refid > 0 + if (!isSessionVariableSet('refid') || (!empty($GLOBALS['refid'])) || ((get_session('refid') == "0") && (isset($_CONFIG['def_refid'])) && ($_CONFIG['def_refid'] > 0))) { + // Set cookie + set_session('refid', $GLOBALS['refid']); + } // END - if +} + +// Destroys the admin session +function DESTROY_ADMIN_SESSION () { + // Kill maybe existing session variables including array elements + set_session('admin_login' , ""); + set_session('admin_md5' , ""); + set_session('admin_last' , ""); + set_session('admin_to' , ""); + + // Destroy session and return status + return @session_destroy(); +} + +// Checks if a given apache module is loaded +function IF_APACHE_MODULE_LOADED ($apacheModule) { + // Check it and return result + return (((function_exists('apache_get_modules')) && (in_array($apacheModule, apache_get_modules()))) || (!function_exists('apache_get_modules'))); +} ////////////////////////////////////////////////// // //