X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffunctions.php;h=f353494c6dfd451aeb50a8a1e3dffcfbb00861bd;hp=6d414a53865611bdec27ee2af04646c29c66fff6;hb=8b3b0fae36adfa1ef72f436d107d11404b326ec5;hpb=d8148e3f1f3a6762b2e786dbe99ada269dcf2ea0 diff --git a/inc/functions.php b/inc/functions.php index 6d414a5386..f353494c6d 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -114,8 +114,10 @@ function OUTPUT_HTML ($HTML, $newLine = true) { // Output cached HTML code $OUTPUT = ob_get_contents(); - // Clear output buffer for later output - clearOutputBuffer(); + // Clear output buffer for later output if output is found + if (!empty($OUTPUT)) { + clearOutputBuffer(); + } // END - if // Send HTTP header header("HTTP/1.1 200"); @@ -139,8 +141,8 @@ function OUTPUT_HTML ($HTML, $newLine = true) { while (strpos($OUTPUT, '{!') > 0) { // Prepare the content and eval() it... $newContent = ""; - $eval = "\$newContent = \"".COMPILE_CODE(SQL_ESCAPE($OUTPUT))."\";"; - @eval($eval); + $eval = "\$newContent = \"".COMPILE_CODE(smartAddSlashes($OUTPUT))."\";"; + eval($eval); // Was that eval okay? if (empty($newContent)) { @@ -160,7 +162,7 @@ function OUTPUT_HTML ($HTML, $newLine = true) { // Compile and run finished rendered HTML code while (strpos($OUTPUT, '{!') > 0) { - $eval = "\$OUTPUT = \"".COMPILE_CODE(SQL_ESCAPE($OUTPUT))."\";"; + $eval = "\$OUTPUT = \"".COMPILE_CODE(smartAddSlashes($OUTPUT))."\";"; eval($eval); } // END - while @@ -186,6 +188,11 @@ function initFatalMessages () { $GLOBALS['fatal_messages'] = array(); } +// Getter for whole fatal error messages +function getFatalArray () { + return $GLOBALS['fatal_messages']; +} + // Add a fatal error message to the queue array function addFatalMessage ($message, $extra="") { if (is_array($extra)) { @@ -340,7 +347,7 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { $ret = ""; if ((strpos($tmpl_file, "\$") !== false) || (strpos($tmpl_file, '{--') !== false) || (strpos($tmpl_file, '--}') > 0)) { // Okay, compile it! - $tmpl_file = "\$ret=\"".COMPILE_CODE(SQL_ESCAPE($tmpl_file))."\";"; + $tmpl_file = "\$ret=\"".COMPILE_CODE(smartAddSlashes($tmpl_file))."\";"; eval($tmpl_file); } else { // Simply return loaded code @@ -349,7 +356,7 @@ function LOAD_TEMPLATE ($template, $return=false, $content=array()) { // Add surrounding HTML comments to help finding bugs faster $ret = "\n".$ret."\n"; - } elseif ((IS_ADMIN()) || ((isBooleanConstantAndTrue('mxchange_installing')) && (!isBooleanConstantAndTrue('mxchange_installed')))) { + } elseif ((IS_ADMIN()) || ((isInstalling()) && (!isBooleanConstantAndTrue('mxchange_installed')))) { // Only admins shall see this warning or when installation mode is active $ret = "
".TEMPLATE_404."
(".basename($FQFN).")
@@ -386,7 +393,7 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") { //* DEBUG: */ print __FUNCTION__."(".__LINE__."):TO={$TO},SUBJECT={$SUBJECT}
\n"; // Compile subject line (for POINTS constant etc.) - $eval = "\$SUBJECT = decodeEntities(\"".COMPILE_CODE(SQL_ESCAPE($SUBJECT))."\");"; + $eval = "\$SUBJECT = decodeEntities(\"".COMPILE_CODE(smartAddSlashes($SUBJECT))."\");"; eval($eval); // Set from header @@ -439,11 +446,11 @@ function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") { } // Compile "TO" - $eval = "\$TO = \"".COMPILE_CODE(SQL_ESCAPE($TO))."\";"; + $eval = "\$TO = \"".COMPILE_CODE(smartAddSlashes($TO))."\";"; eval($eval); // Compile "MSG" - $eval = "\$MSG = \"".COMPILE_CODE(SQL_ESCAPE($MSG))."\";"; + $eval = "\$MSG = \"".COMPILE_CODE(smartAddSlashes($MSG))."\";"; eval($eval); // Fix HTML parameter (default is no!) @@ -863,7 +870,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") { // Run code $tmpl_file = "\$newContent = decodeEntities(\"".COMPILE_CODE($tmpl_file)."\");"; - @eval($tmpl_file); + eval($tmpl_file); } elseif (!empty($template)) { // Template file not found! $newContent = "{--TEMPLATE_404--}: ".$template."
@@ -896,7 +903,7 @@ function LOAD_EMAIL_TEMPLATE($template, $content=array(), $UID="0") { return COMPILE_CODE($newContent); } // -function MAKE_TIME($H, $M, $S, $stamp) { +function MAKE_TIME ($H, $M, $S, $stamp) { // Extract day, month and year from given timestamp $DAY = date("d", $stamp); $MONTH = date("m", $stamp); @@ -906,7 +913,7 @@ function MAKE_TIME($H, $M, $S, $stamp) { return mktime($H, $M, $S, $MONTH, $DAY, $YEAR); } // -function LOAD_URL($URL, $addUrlData=true) { +function LOAD_URL ($URL, $addUrlData=true) { // Compile out URI codes $URL = compileUriCode($URL); @@ -917,7 +924,7 @@ function LOAD_URL($URL, $addUrlData=true) { } // Get output buffer - //* DEBUG: */ debug_report_bug(); + //* DEBUG: */ debug_report_bug(sprintf("%s[%s:] URL=%s", __FUNCTION__, __LINE__, $URL)); $OUTPUT = ob_get_contents(); // Clear it only if there is content @@ -926,7 +933,7 @@ function LOAD_URL($URL, $addUrlData=true) { } // END - if // Add some data to URL if cookies are not accepted - if (((!defined('__COOKIES')) || (!__COOKIES)) && ($addUrlData)) $URL = ADD_URL_DATA($URL); + if (((!defined('__COOKIES')) || (!constant('__COOKIES'))) && ($addUrlData)) $URL = ADD_URL_DATA($URL); // Probe for bot from search engine if ((eregi("spider", GET_USER_AGENT())) || (eregi("bot", GET_USER_AGENT()))) { @@ -964,7 +971,7 @@ function LOAD_CONFIGURED_URL ($configEntry) { } // -function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) { +function COMPILE_CODE ($code, $simple = false, $constants = true, $full = true) { // Is the code a string? if (!is_string($code)) { // Silently return it @@ -1062,8 +1069,7 @@ function COMPILE_CODE($code, $simple = false, $constants = true, $full = true) { * Sie, dass es doch nicht so schwer ist! :-) * * * ************************************************************************/ -function array_pk_sort(&$array, $a_sort, $primary_key = 0, $order = -1, $nums = false) -{ +function array_pk_sort (&$array, $a_sort, $primary_key = 0, $order = -1, $nums = false) { $dummy = $array; while ($primary_key < count($a_sort)) { foreach ($dummy[$a_sort[$primary_key]] as $key => $value) { @@ -1097,8 +1103,9 @@ function array_pk_sort(&$array, $a_sort, $primary_key = 0, $order = -1, $nums = // Write back sorted array $array = $dummy; } + // -function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { +function ADD_SELECTION ($type, $DEFAULT, $prefix="", $id="0") { global $MONTH_DESCR; $OUT = ""; @@ -1211,9 +1218,9 @@ function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") { $OUT .= " \n"; return $OUT; } + // -function TRANSLATE_YESNO($yn) -{ +function TRANSLATE_YESNO($yn) { // Default $yn = "??? (".$yn.")"; switch ($yn) { @@ -1228,6 +1235,7 @@ function TRANSLATE_YESNO($yn) // Return it return $yn; } + // // Deprecated : $length // Optional : $DATA @@ -1286,7 +1294,7 @@ function GEN_RANDOM_CODE ($length, $code, $uid, $DATA="") { } // Does only allow numbers -function bigintval($num, $castValue = true) { +function bigintval ($num, $castValue = true) { // Filter all numbers out $ret = preg_replace("/[^0123456789]/", "", $num); @@ -1546,6 +1554,7 @@ function CREATE_TIME_SELECTIONS ($timestamp, $prefix="", $display="", $align="ce } return $OUT; } + // function CREATE_TIMESTAMP_FROM_SELECTIONS ($prefix, $POST) { // Initial return value @@ -1640,6 +1649,7 @@ function SEND_ADMIN_EMAILS_PRO ($subj, $template, $content, $UID) { // Free memory SQL_FREERESULT($result); } + // function CREATE_FANCY_TIME ($stamp) { // Get data array with years/months/weeks/days/... @@ -1666,8 +1676,9 @@ function CREATE_FANCY_TIME ($stamp) { // Return fancy time string return $ret; } + // -function ADD_EMAIL_NAV($PAGES, $offset, $show_form, $colspan, $return=false) { +function ADD_EMAIL_NAV ($PAGES, $offset, $show_form, $colspan, $return=false) { $SEP = ""; $TOP = ""; if (!$show_form) { $TOP = " top2"; @@ -1926,6 +1937,7 @@ function SEND_RAW_REQUEST ($host, $request) { // Return response return $response; } + // Taken from www.php.net eregi() user comments function VALIDATE_EMAIL($email) { // Compile email @@ -2284,7 +2296,7 @@ function DISPLAY_PARSING_TIME_FOOTER() { // Check wether a boolean constant is set // Taken from user comments in PHP documentation for function constant() -function isBooleanConstantAndTrue($constName) { // : Boolean +function isBooleanConstantAndTrue ($constName) { // : Boolean // Failed by default $res = false; @@ -2292,11 +2304,15 @@ function isBooleanConstantAndTrue($constName) { // : Boolean if (isset($GLOBALS['cache_array']['const'][$constName])) { // Use cache //* DEBUG: */ print __FUNCTION__."(".__LINE__."): ".$constName."-CACHE!
\n"; - $res = $GLOBALS['cache_array']['const'][$constName]; + $res = ($GLOBALS['cache_array']['const'][$constName] === true); } else { // Check constant //* DEBUG: */ print __FUNCTION__."(".__LINE__."): ".$constName."-RESOLVE!
\n"; - if (defined($constName)) $res = (constant($constName) === true); + if (defined($constName)) { + // Found! + //* DEBUG: */ print __FUNCTION__."(".__LINE__."): ".$constName."-FOUND!
\n"; + $res = (constant($constName) === true); + } // END - if // Set cache $GLOBALS['cache_array']['const'][$constName] = $res; @@ -2361,14 +2377,14 @@ function GET_CURR_THEME() { // Fix it to default $ret = "default"; } // END - if - } elseif ((!isBooleanConstantAndTrue('mxchange_installed')) && ((isBooleanConstantAndTrue('mxchange_installing')) || ($GLOBALS['output_mode'] == true)) && ((REQUEST_ISSET_GET(('theme'))) || (REQUEST_ISSET_POST(('theme'))))) { + } elseif ((!isBooleanConstantAndTrue('mxchange_installed')) && ((isInstalling()) || ($GLOBALS['output_mode'] == true)) && ((REQUEST_ISSET_GET(('theme'))) || (REQUEST_ISSET_POST(('theme'))))) { // Prepare FQFN for checking - $theme = sprintf("%stheme/%s/theme.php", constant('PATH'), SQL_ESCAPE(REQUEST_GET('theme'))); + $theme = sprintf("%stheme/%s/theme.php", constant('PATH'), REQUEST_GET(('theme'))); // Installation mode active if ((REQUEST_ISSET_GET(('theme'))) && (FILE_READABLE($theme))) { // Set cookie from URL data - set_session('mxchange_theme', SQL_ESCAPE(REQUEST_GET('theme'))); + set_session('mxchange_theme', REQUEST_GET(('theme'))); } elseif (FILE_READABLE(sprintf("%stheme/%s/theme.php", constant('PATH'), SQL_ESCAPE(REQUEST_POST('theme'))))) { // Set cookie from posted data set_session('mxchange_theme', SQL_ESCAPE(REQUEST_POST('theme'))); @@ -2591,7 +2607,7 @@ function LOAD_INC_ONCE ($INC) { LOAD_INC($INC); // And mark it as loaded - $GLOBALS['cache_array']['load_once'][$INC] = true; + $GLOBALS['cache_array']['load_once'][$INC] = "loaded"; } // END - if } @@ -2669,7 +2685,7 @@ function convertCodeToMessage ($code) { case constant('CODE_EXTENSION_PROBLEM'): if (REQUEST_ISSET_GET(('ext'))) { - $msg = sprintf(getMessage('EXTENSION_PROBLEM_EXT_INACTIVE'), SQL_ESCAPE(REQUEST_GET('ext'))); + $msg = sprintf(getMessage('EXTENSION_PROBLEM_EXT_INACTIVE'), REQUEST_GET(('ext'))); } else { $msg = getMessage('EXTENSION_PROBLEM_UNSET_EXT'); } @@ -2907,13 +2923,10 @@ function changeDataInFile ($FQFN, $comment, $prefix, $suffix, $DATA, $seek=0) { // Copy back tmp file and delete tmp :-) @copy($tmp, $FQFN); @unlink($tmp); - define('_FATAL', false); } elseif (!$found) { OUTPUT_HTML("CHANGE: 404!"); - define('_FATAL', true); } else { OUTPUT_HTML("TMP: UNDONE!"); - define('_FATAL', true); } } } else { @@ -2921,6 +2934,463 @@ function changeDataInFile ($FQFN, $comment, $prefix, $suffix, $DATA, $seek=0) { OUTPUT_HTML("404: ".$FQFN."
"); } } +// Send notification to admin +function SEND_ADMIN_NOTIFICATION($subject, $templateName, $content=array(), $uid="0") { + if (GET_EXT_VERSION("admins") >= "0.4.1") { + // Send new way + SEND_ADMIN_EMAILS_PRO($subject, $templateName, $content, $uid); + } else { + // Send outdated way + $msg = LOAD_EMAIL_TEMPLATE($templateName, $content, $uid); + SEND_ADMIN_EMAILS($subject, $msg); + } +} + +// 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; + } + + // Both are not arrays + debug_report_bug(__FUNCTION__.": No arrays provided!"); +} + +// Debug message logger +function DEBUG_LOG ($funcFile, $line, $message, $force=true) { + // Is debug mode enabled? + if ((isBooleanConstantAndTrue('DEBUG_MODE')) || ($force === true)) { + // Log this message away + $fp = fopen(constant('PATH')."inc/cache/debug.log", 'a') or mxchange_die("Cannot write logfile debug.log!"); + fwrite($fp, date("d.m.Y|H:i:s", time())."|".basename($funcFile)."|".$line."|".strip_tags($message)."\n"); + 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(); + + // Open directory + $dirPointer = opendir($baseDir) or mxchange_die("Cannot read ".basename($baseDir)." path!"); + + // Read all entries + while ($baseFile = readdir($dirPointer)) { + // Load file only if extension is active + // Make full path + $FQFN = $baseDir.$baseFile; + + // Is this a valid reset file? + //* DEBUG: */ print __FUNCTION__."(".__LINE__."):baseDir={$baseDir},prefix={$prefix},baseFile={$baseFile}
\n"; + if ((FILE_READABLE($FQFN)) && (substr($baseFile, 0, strlen($prefix)) == $prefix) && (substr($baseFile, -4, 4) == ".php")) { + // Remove both for extension name + $extName = substr($baseFile, strlen($prefix), -4); + + // Try to find it + $extId = GET_EXT_ID($extName); + + // Is the extension valid and active? + if (($extId > 0) && (EXT_IS_ACTIVE($extName))) { + // Then add this file + $INCs[] = $FQFN; + } elseif ($extId == 0) { + // Add non-extension files as well + $INCs[] = $FQFN; + } + } // END - if + } // END - while + + // Close directory + closedir($dirPointer); + + // Sort array + asort($INCs); + + // Return array with include files + return $INCs; +} + +// Load more reset scripts +function RESET_ADD_INCLUDES () { + // Is the reset set or old sql_patches? + if ((!defined('__DAILY_RESET')) || (EXT_VERSION_IS_OLDER("sql_patches", "0.4.5"))) { + // Then abort here + return array(); + } // END - if + + // Get more daily reset scripts + $INC_POOL = GET_DIR_AS_ARRAY(constant('PATH')."inc/reset/", "reset_"); + + // Update database + if (!defined('DEBUG_RESET')) UPDATE_CONFIG("last_update", time()); + + // Create current week mark + $currWeek = date("W", time()); + + // Has it changed? + if (getConfig('last_week') != $currWeek) { + // Include weekly reset scripts + $INC_POOL = merge_array($INC_POOL, GET_DIR_AS_ARRAY(constant('PATH')."inc/weekly/", "weekly_")); + + // Update config + if (!defined('DEBUG_WEEKLY')) UPDATE_CONFIG("last_week", $currWeek); + } // END - if + + // Create current month mark + $currMonth = date("m", time()); + + // Has it changed? + if (getConfig('last_month') != $currMonth) { + // Include monthly reset scripts + $INC_POOL = merge_array($INC_POOL, GET_DIR_AS_ARRAY(constant('PATH')."inc/monthly/", "monthly_")); + + // Update config + if (!defined('DEBUG_MONTHLY')) UPDATE_CONFIG("last_month", $currMonth); + } // END - if + + // Return array + return $INC_POOL; +} + +// Handle extra values +function HANDLE_EXTRA_VALUES ($filterFunction, $value, $extraValue) { + // Default is the value itself + $ret = $value; + + // Do we have a special filter function? + if (!empty($filterFunction)) { + // Does the filter function exist? + if (function_exists($filterFunction)) { + // Do we have extra parameters here? + if (!empty($extraValue)) { + // Put both parameters in one new array by default + $args = array($value, $extraValue); + + // If we have an array simply use it and pre-extend it with our value + if (is_array($extraValue)) { + // Make the new args array + $args = merge_array(array($value), $extraValue); + } // END - if + + // Call the multi-parameter call-back + $ret = call_user_func_array($filterFunction, $args); + } else { + // One parameter call + $ret = call_user_func($filterFunction, $value); + } + } // END - if + } // END - if + + // Return the value + return $ret; +} + +// Check if given FQFN is a readable file +function FILE_READABLE($fqfn) { + // Check all... + return ((file_exists($fqfn)) && (is_file($fqfn)) && (is_readable($fqfn))); +} + +// Converts timestamp selections into a timestamp +function CONVERT_SELECTIONS_TO_TIMESTAMP(&$POST, &$DATA, &$id, &$skip) { + // Init test variable + $test2 = ""; + + // Get last three chars + $test = substr($id, -3); + + // Improved way of checking! :-) + 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)) { + // Generate timestamp + $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]); + } // END - foreach + + // Skip adding + unset($id); $skip = true; $test2 = $test; + } // END - if + } else { + // Process this entry + $skip = false; $test2 = ""; + } +} + +// Reverts the german decimal comma into Computer decimal dot +function REVERT_COMMA ($str) { + // Default float is not a float... ;-) + $float = false; + + // Which language is selected? + switch (GET_LANGUAGE()) { + case "de": // German language + // Remove german thousand dots first + $str = str_replace(".", "", $str); + + // Replace german commata with decimal dot and cast it + $float = (float)str_replace(",", ".", $str); + break; + + default: // US and so on + // Remove thousand dots first and cast + $float = (float)str_replace(",", "", $str); + break; + } + + // Return float + return $float; +} + +// Handle menu-depending failed logins and return the rendered content +function HANDLE_LOGIN_FAILTURES ($accessLevel) { + // Default output is empty ;-) + $OUT = ""; + + // Is the session data set? + if ((isSessionVariableSet('mxchange_'.$accessLevel.'_failures')) && (isSessionVariableSet('mxchange_'.$accessLevel.'_last_fail'))) { + // Ignore zero values + if (get_session('mxchange_'.$accessLevel.'_failures') > 0) { + // Non-guest has login failures found, get both data and prepare it for template + //* DEBUG: */ print __FUNCTION__."(".__LINE__."):accessLevel={$accessLevel}
\n"; + $content = array( + 'login_failures' => get_session('mxchange_'.$accessLevel.'_failures'), + 'last_failure' => MAKE_DATETIME(get_session('mxchange_'.$accessLevel.'_last_fail'), "2") + ); + + // Load template + $OUT = LOAD_TEMPLATE("login_failures", true, $content); + } // END - if + + // Reset session data + set_session('mxchange_'.$accessLevel.'_failures', ""); + set_session('mxchange_'.$accessLevel.'_last_fail', ""); + } // END - if + + // Return rendered content + return $OUT; +} + +// Rebuild cache +function REBUILD_CACHE ($cache, $inc="") { + // Shall I remove the cache file? + if ((EXT_IS_ACTIVE("cache")) && (is_object($GLOBALS['cache_instance']))) { + // Rebuild cache + if ($GLOBALS['cache_instance']->loadCacheFile($cache)) { + // Destroy it + $GLOBALS['cache_instance']->destroyCacheFile(); + } // END - if + + // Include file given? + if (!empty($inc)) { + // Construct FQFN + $INC = sprintf("inc/loader/load_cache-%s.php", $inc); + + // Is the include there? + if (INCLUDE_READABLE($INC)) { + // And rebuild it from scratch + //* DEBUG: */ print __FUNCTION__."(".__LINE__."): inc={$inc} - LOADED!
\n"; + LOAD_INC($INC); + } else { + // Include not found! + DEBUG_LOG(__FUNCTION__, __LINE__, "Include {$inc} not found. cache={$cache}"); + } + } // END - if + } // END - if +} + +// Purge admin menu cache +function CACHE_PURGE_ADMIN_MENU ($id=0, $action="", $what="", $str="") { + // Is the cache extension enabled or no cache instance or admin menu cache disabled? + if (!EXT_IS_ACTIVE("cache")) { + // Cache extension not active + return false; + } elseif (!is_object($GLOBALS['cache_instance'])) { + // No cache instance! + DEBUG_LOG(__FUNCTION__, __LINE__, " No cache instance found."); + return false; + } elseif ((!isConfigEntrySet('cache_admin_menu')) || (getConfig('cache_admin_menu') != "Y")) { + // Caching disabled (currently experiemental!) + return false; + } + + // Experiemental feature! + debug_report_bug("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 + $translated = sprintf(getMessage('POOL_TYPE_UNKNOWN'), $type); + + // Generate constant + $constName = sprintf("POOL_TYPE_%s", $type); + + // Does it exist? + if (defined($constName)) { + // Then use it + $translated = getMessage($constName); + } // END - if + + // Return "translation" + return $translated; +} + +// "Getter" for remote IP number +function GET_REMOTE_ADDR () { + // Get remote ip from environment + $remoteAddr = getenv('REMOTE_ADDR'); + + // Is removeip installed? + if (EXT_IS_ACTIVE("removeip")) { + // Then anonymize it + $remoteAddr = GET_ANONYMOUS_REMOTE_ADDR($remoteAddr); + } // END - if + + // Return it + return $remoteAddr; +} + +// "Getter" for remote hostname +function GET_REMOTE_HOST () { + // Get remote ip from environment + $remoteHost = getenv('REMOTE_HOST'); + + // Is removeip installed? + if (EXT_IS_ACTIVE("removeip")) { + // Then anonymize it + $remoteHost = GET_ANONYMOUS_REMOTE_HOST($remoteHost); + } // END - if + + // Return it + return $remoteHost; +} + +// "Getter" for user agent +function GET_USER_AGENT () { + // Get remote ip from environment + $userAgent = getenv('HTTP_USER_AGENT'); + + // Is removeip installed? + if (EXT_IS_ACTIVE("removeip")) { + // Then anonymize it + $userAgent = GET_ANONYMOUS_USER_AGENT($userAgent); + } // END - if + + // Return it + return $userAgent; +} + +// "Getter" for referer +function GET_REFERER () { + // Get remote ip from environment + $referer = getenv('HTTP_REFERER'); + + // Is removeip installed? + if (EXT_IS_ACTIVE("removeip")) { + // Then anonymize it + $referer = GET_ANONYMOUS_REFERER($referer); + } // END - if + + // Return it + return $referer; +} + +// Adds a bonus mail to the queue +// This is a high-level function! +function ADD_NEW_BONUS_MAIL ($data, $mode="", $output=true) { + // Use mode from data if not set and availble ;-) + if ((empty($mode)) && (isset($data['mode']))) $mode = $data['mode']; + + // Generate receiver list + $RECEIVER = GENERATE_RECEIVER_LIST($data['cat'], $data['receiver'], $mode); + + // Receivers added? + if (!empty($RECEIVER)) { + // Add bonus mail to queue + ADD_BONUS_MAIL_TO_QUEUE( + $data['subject'], + $data['text'], + $RECEIVER, + $data['points'], + $data['seconds'], + $data['url'], + $data['cat'], + $mode, + $data['receiver'] + ); + + // Mail inserted into bonus pool + if ($output) LOAD_TEMPLATE("admin_settings_saved", false, getMessage('ADMIN_BONUS_SEND')); + } elseif ($output) { + // More entered than can be reached! + LOAD_TEMPLATE("admin_settings_saved", false, getMessage('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!"); + } +} + +// Determines referal id and sets it +function DETERMINE_REFID () { + global $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") != "") && (getConfig('def_refid') > 0)) { + // Set default refid as refid in URL + $GLOBALS['refid'] = bigintval(getConfig('def_refid')); + } elseif ((GET_EXT_VERSION("user") >= "0.3.4") && (getConfig('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") && (getConfig('def_refid') > 0))) { + // Set cookie + set_session('refid', $GLOBALS['refid']); + } // END - if + + // Return determined refid + return $GLOBALS['refid']; +} + +// Check wether we are installing +function isInstalling () { + return (isset($GLOBALS['mxchange_installing'])); +} ////////////////////////////////////////////////// // AUTOMATICALLY RE-GENERATED MISSING FUNCTIONS //