default:
// Huh, something goes wrong or maybe you have edited config.php ???
- die ("<STRONG>".FATAL_ERROR.":</STRONG> ".LANG_NO_RENDER_DIRECT);
+ DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid renderer %s detected.", OUTPUT_MODE));
+ MXCHANGE_DIE("<STRONG>".FATAL_ERROR.":</STRONG> ".LANG_NO_RENDER_DIRECT);
break;
}
} elseif ((_OB_CACHING == "on") && ($footer == 1)) {
// 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);
}
// 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 ")
$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)) {
// Translate gender
$gender = TRANSLATE_GENDER($gender);
+ DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("DEPRECATION-WARNING: content is not array (%s).", gettype($content)));
}
// Free result
</pre>\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);
$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;
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;
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;
if ($max > 0) $maxComma = $max;
// Cut zeros off?
- if ($cut) {
+ if (($cut) && ($max == 0)) {
// Test for commata if in cut-mode
$com = explode(".", $dotted);
- if (count($com) > 1) {
- // Commata found, so only zeros?
- if ($com[1] == str_repeat("0", strlen($com[1]))) {
- // Only zeros, so display only one
- $maxComma = 1;
- } // END - if
- } else {
+ if (count($com) < 2) {
// Don't display commatas even if there are none... ;-)
$maxComma = 0;
}
} // END - if
// Debug log
- //DEBUG_LOG(__FUNCTION__.":dotted={$dotted},maxComma={$maxComma}");
+ //* DEBUG: */ DEBUG_LOG(__FUNCTION__, __LINE__, "dotted={$dotted},maxComma={$maxComma}");
// Translate it now
switch (GET_LANGUAGE()) {
break;
default:
+ DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Unknown status %s detected.", $status));
$ret = UNKNOWN_STATUS_1.$status.UNKNOWN_STATUS_2;
break;
}
}
//
function GET_LANGUAGE() {
- if (!empty($_GET['mx_lang'])) {
- // Accept only first 2 chars
- $lang = substr($_GET['mx_lang'], 0, 2);
- } else {
- // Do nothing
- $lang = "";
- }
+ global $cacheArray;
// Set default return value to default language from config
$ret = DEFAULT_LANG;
- // Check GET variable and cookie
- if (!empty($lang)) {
+ // Init variable
+ $lang = "";
+
+ // Is the variable set
+ if (!empty($_GET['mx_lang'])) {
+ // Accept only first 2 chars
+ $lang = substr($_GET['mx_lang'], 0, 2);
+ } elseif (isset($cacheArray['language'])) {
+ // Use cached
+ $ret = $cacheArray['language'];
+ } elseif (!empty($lang)) {
// Check if main language file does exist
if (FILE_READABLE(PATH."inc/language/".$lang.".php")) {
// Okay found, so let's update cookies
// Fixes a warning before the session has the mx_lang constant
if (empty($ret)) $ret = DEFAULT_LANG;
}
+
+ // Cache entry
+ $cacheArray['language'] = $ret;
+
+ // Return value
return $ret;
}
//
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();
$array = $dummy;
}
//
-function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0")
-{
- global $MONTH_DESCR; $OUT = "";
- if ($type == "yn")
- {
+function ADD_SELECTION($type, $DEFAULT, $prefix="", $id="0") {
+ global $MONTH_DESCR, $_CONFIG;
+ $OUT = "";
+
+ if ($type == "yn") {
// This is a yes/no selection only!
if ($id > 0) $prefix .= "[".$id."]";
$OUT .= " <SELECT name=\"".$prefix."\" class=\"register_select\" size=\"1\">\n";
- }
- else
- {
+ } else {
// Begin with regular selection box here
if (!empty($prefix)) $prefix .= "_";
$type2 = $type;
if ($id > 0) $type2 .= "[".$id."]";
$OUT .= " <SELECT name=\"".strtolower($prefix.$type2)."\" class=\"register_select\" size=\"1\">\n";
}
- switch ($type)
- {
+
+ switch ($type) {
case "day": // Day
- for ($idx = 1; $idx < 32; $idx++)
- {
+ for ($idx = 1; $idx < 32; $idx++) {
$OUT .= "<OPTION value=\"".$idx."\"";
if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
$OUT .= ">".$idx."</OPTION>\n";
- }
+ } // END - for
break;
case "month": // Month
- foreach ($MONTH_DESCR as $month => $descr)
- {
+ foreach ($MONTH_DESCR as $month => $descr) {
$OUT .= "<OPTION value=\"".$month."\"";
if ($DEFAULT == $month) $OUT .= " selected=\"selected\"";
$OUT .= ">".$descr."</OPTION>\n";
- }
+ } // END - for
break;
case "year": // Year
// Get current year
$YEAR = date('Y', time());
+ // Use configured min age or fixed?
+ if (GET_EXT_VERSION("other") >= "0.2.1") {
+ // Configured
+ $startYear = $YEAR - $_CONFIG['min_age'];
+ } else {
+ // Fixed 16 years
+ $startYear = $YEAR - 16;
+ }
+
+ // Calculate earliest year (100 years old people can still enter Internet???)
+ $minYear = $YEAR - 100;
+
// Check if the default value is larger than minimum and bigger than actual year
- if (($DEFAULT > 1930) && ($DEFAULT >= $YEAR))
- {
- for ($idx = $YEAR; $idx < ($YEAR + 11); $idx++)
- {
+ if (($DEFAULT > $minYear) && ($DEFAULT >= $YEAR)) {
+ for ($idx = $YEAR; $idx < ($YEAR + 11); $idx++) {
$OUT .= "<OPTION value=\"".$idx."\"";
if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
$OUT .= ">".$idx."</OPTION>\n";
- }
- }
- elseif ($DEFAULT == -1)
- {
+ } // END - for
+ } elseif ($DEFAULT == -1) {
// Current year minus 1
- for ($idx = 2003; $idx <= ($YEAR + 1); $idx++)
+ for ($idx = $startYear; $idx <= ($YEAR + 1); $idx++)
{
$OUT .= "<OPTION value=\"".$idx."\">".$idx."</OPTION>\n";
}
- }
- else
- {
- // Get current year and subtract 16 (for erotic content)
- $OUT .= "<OPTION value=\"1929\"><1930</OPTION>\n";
- $YEAR = date('Y', time()) - 16;
- for ($idx = 1930; $idx <= $YEAR; $idx++)
- {
+ } else {
+ // Get current year and subtract the configured minimum age
+ $OUT .= "<OPTION value=\"".($minYear - 1)."\"><".$minYear."</OPTION>\n";
+ // Calculate earliest year depending on extension version
+ if (GET_EXT_VERSION("other") >= "0.2.1") {
+ // Use configured minimum age
+ $YEAR = date('Y', time()) - $_CONFIG['min_age'];
+ } else {
+ // Use fixed 16 years age
+ $YEAR = date('Y', time()) - 16;
+ }
+
+ // Construct year selection list
+ for ($idx = $minYear; $idx <= $YEAR; $idx++) {
$OUT .= "<OPTION value=\"".$idx."\"";
if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
$OUT .= ">".$idx."</OPTION>\n";
- }
+ } // END - for
}
break;
$OUT .= "<OPTION value=\"".$idx."\"";
if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
$OUT .= ">".$idx."</OPTION>\n";
- }
+ } // END - for
break;
case "hour":
$OUT .= "<OPTION value=\"".$idx."\"";
if ($DEFAULT == $idx) $OUT .= " selected=\"selected\"";
$OUT .= ">".$idx."</OPTION>\n";
- }
+ } // END - for
break;
case "yn":
// Has the whole value changed?
if ("".$ret."" != "".$num."") {
// Log the values
- DEBUG_LOG(__FUNCTION__.": num={$num},ret={$ret}");
+ print("<pre>");
+ debug_print_backtrace();
+ die("</pre>");
+ DEBUG_LOG(__FUNCTION__, __LINE__, " num={$num},ret={$ret}");
} // END - if
// Return result
// 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
// 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?
$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;
// 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?
// Check wether a boolean constant is set
// Taken from user comments in PHP documentation for function constant()
function isBooleanConstantAndTrue($constName) { // : Boolean
- global $constCache;
+ global $cacheArray;
// Failed by default
$res = false;
// In cache?
- if (isset($constCache[$constName])) {
+ if (isset($cacheArray['const'][$constName])) {
// Use cache
//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$constName."-CACHE!<br />\n";
- $res = $constCache[$constName];
+ $res = $cacheArray['const'][$constName];
} else {
// Check constant
//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$constName."-RESOLVE!<br />\n";
if (defined($constName)) $res = (constant($constName) === true);
// Set cache
- $constCache[$constName] = $res;
+ $cacheArray['const'][$constName] = $res;
}
//* DEBUG: */ var_dump($res);
}
// Check wether a session variable is set
-function isSessionVariableSet($var) {
+function isSessionVariableSet ($var) {
//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):var={$var}<br />\n";
return (isset($_SESSION[$var]));
}
// Returns wether the value of the session variable or NULL if not set
-function get_session($var) {
+function get_session ($var) {
global $cacheArray;
// Default is not found! ;-)
// Is the variable there or cached values?
if (isset($cacheArray['session'][$var])) {
// Get cached value (skips a lot SQL_ESCAPE() calles!
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$var."-CACHE!<br />\n";
$value = $cacheArray['session'][$var];
} elseif (isSessionVariableSet($var)) {
// Then get it secured!
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$var."-RESOLVE!<br />\n";
$value = SQL_ESCAPE($_SESSION[$var]);
// Cache the value
die("</pre>");
}
// 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
}
// 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
// Shall I remove the cache file?
if ((EXT_IS_ACTIVE("cache")) && (is_object($cacheInstance))) {
// Rebuild cache
- if ($cacheInstance->cache_file($cache, true)) {
+ if ($cacheInstance->cache_file($cache)) {
// Destroy it
$cacheInstance->cache_destroy();
} // END - if
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
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!)
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')));
+}
//////////////////////////////////////////////////
// //