* $Date:: $ *
* $Tag:: 0.2.1-FINAL $ *
* $Author:: $ *
- * Needs to be in all Files and every File needs "svn propset *
- * svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2009 by Roland Haeder *
* Copyright (c) 2009, 2010 by Mailer Developer Team *
// Getter for total fatal message count
function getTotalFatalErrors () {
- // Init coun
+ // Init count
$count = '0';
// Do we have at least the first entry?
// Send mail out to an email address
function sendEmail ($toEmail, $subject, $message, $isHtml = 'N', $mailHeader = '') {
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "TO={$toEmail},SUBJECT={$subject}<br />");
-
- // Compile subject line (for POINTS constant etc.)
- eval('$subject = decodeEntities("' . compileRawCode(escapeQuotes($subject)) . '");');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'toEmail=' . $toEmail . ',subject=' . $subject . ',isHtml=' . $isHtml);
// Set from header
if ((!isInStringIgnoreCase('@', $toEmail)) && ($toEmail > 0)) {
// Check for PHPMailer or debug-mode
if ((!checkPhpMailerUsage()) || (isDebugModeEnabled())) {
+ // Prefix is '' for text mails
+ $prefix = '';
+
+ // Is HTML?
+ if ($isHtml == 'Y') {
+ // Set prefix
+ $prefix = 'html_';
+ } // END - if
+
// Not in PHPMailer-Mode
if (empty($mailHeader)) {
// Load email header template
- $mailHeader = loadEmailTemplate('header');
+ $mailHeader = loadEmailTemplate($prefix . 'header');
} else {
// Append header
- $mailHeader .= loadEmailTemplate('header');
+ $mailHeader .= loadEmailTemplate($prefix . 'header');
}
} // END - if
if (isDebugModeEnabled()) {
// In debug mode we want to display the mail instead of sending it away so we can debug this part
outputHtml('<pre>
-Headers : ' . encodeEntities(utf8_decode(trim($mailHeader))) . '
-To : ' . encodeEntities(utf8_decode($toEmail)) . '
-Subject : ' . encodeEntities(utf8_decode($subject)) . '
-Message : ' . encodeEntities(utf8_decode($message)) . '
+Headers : ' . htmlentities(utf8_decode(trim($mailHeader))) . '
+To : ' . htmlentities(utf8_decode($toEmail)) . '
+Subject : ' . htmlentities(utf8_decode($subject)) . '
+Message : ' . htmlentities(utf8_decode($message)) . '
</pre>');
// This is always fine
return true;
- } elseif (($isHtml == 'Y') && (isExtensionActive('html_mail'))) {
- // Send mail as HTML away
- return sendHtmlEmail($toEmail, $subject, $message, $mailHeader);
} elseif (!empty($toEmail)) {
// Send Mail away
return sendRawEmail($toEmail, $subject, $message, $mailHeader);
}
// Send out a raw email with PHPMailer class or legacy mail() command
-function sendRawEmail ($toEmail, $subject, $message, $from) {
- // Just compile all again, to put out all configs, etc.
- eval('$toEmail = decodeEntities("' . doFinalCompilation(compileRawCode(escapeQuotes($toEmail)), false) . '");');
- eval('$subject = decodeEntities("' . doFinalCompilation(compileRawCode(escapeQuotes($subject)), false) . '");');
- eval('$message = decodeEntities("' . doFinalCompilation(compileRawCode(escapeQuotes($message)), false) . '");');
- eval('$from = decodeEntities("' . doFinalCompilation(compileRawCode(escapeQuotes($from)) , false) . '");');
+function sendRawEmail ($toEmail, $subject, $message, $headers) {
+ // Just compile all to put out all configs, etc.
+ $eval = '$toEmail = decodeEntities("' . escapeQuotes(doFinalCompilation(compileRawCode($toEmail), false)) . '"); ';
+ $eval .= '$subject = decodeEntities("' . escapeQuotes(doFinalCompilation(compileRawCode($subject), false)) . '"); ';
+ $eval .= '$headers = decodeEntities("' . escapeQuotes(doFinalCompilation(compileRawCode($headers), false)) . '"); ';
+
+ // Do not decode entities in the message because we also send HTML mails through this function
+ $eval .= '$message = "' . escapeQuotes(doFinalCompilation(compileRawCode($message), false)) . '";';
+
+ // Run the final eval() command
+ eval($eval);
// Shall we use PHPMailer class or legacy mode?
if (checkPhpMailerUsage()) {
$mail->CharSet = 'UTF-8';
// Path for PHPMailer
- $mail->PluginDir = sprintf("%sinc/phpmailer/", getConfig('PATH'));
+ $mail->PluginDir = sprintf("%sinc/phpmailer/", getPath());
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Port = 25;
$mail->Username = getConfig('SMTP_USER');
$mail->Password = getConfig('SMTP_PASSWORD');
- if (empty($from)) {
+ if (empty($headers)) {
$mail->From = getConfig('WEBMASTER');
} else {
- $mail->From = $from;
+ $mail->From = $headers;
}
- $mail->FromName = getConfig('MAIN_TITLE');
+ $mail->FromName = getMainTitle();
$mail->Subject = $subject;
if ((isExtensionActive('html_mail')) && (secureString($message) != $message)) {
$mail->Body = $message;
} else {
$mail->Body = decodeEntities($message);
}
+
$mail->AddAddress($toEmail, '');
- $mail->AddReplyTo(getConfig('WEBMASTER'), getConfig('MAIN_TITLE'));
+ $mail->AddReplyTo(getConfig('WEBMASTER'), getMainTitle());
$mail->AddCustomHeader('Errors-To:' . getConfig('WEBMASTER'));
$mail->AddCustomHeader('X-Loop:' . getConfig('WEBMASTER'));
+ $mail->AddCustomHeader('Bounces-To:' . getConfig('WEBMASTER'));
$mail->Send();
// Has an error occured?
}
} else {
// Use legacy mail() command
- return mail($toEmail, $subject, decodeEntities($message), $from);
+ return mail($toEmail, $subject, decodeEntities($message), $headers);
}
}
// Generates a human-readable timestamp from the Uni* stamp
function generateDateTime ($time, $mode = '0') {
- // Filter out numbers
- $time = bigintval($time);
-
// If the stamp is zero it mostly didn't "happen"
if ($time == '0') {
// Never happend
return '{--NEVER_HAPPENED--}';
} // END - if
+ // Filter out numbers
+ $time = bigintval($time);
+
+ // Is it cached?
+ if (isset($GLOBALS[__FUNCTION__][$time][$mode])) {
+ // Then use it
+ return $GLOBALS[__FUNCTION__][$time][$mode];
+ } // END - if
+
+ // Detect language
switch (getLanguage()) {
case 'de': // German date / time format
switch ($mode) {
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;
+ case '4': $ret = date('d.m.Y|H:i:s', $time); break;
+ case '5': $ret = date('d-m-Y (l-F-T)', $time); break;
+ case '6': $ret = date('Ymd', $time); break;
default:
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Invalid date mode %s detected.", $mode));
break;
default: // Default is the US date / time format!
switch ($mode) {
case '0': $ret = date('r', $time); break;
- case '1': $ret = date('Y-m-d - g:i A', $time); break;
+ case '1': $ret = strtolower(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;
+ case '4': $ret = date('d.m.Y|H:i:s', $time); break;
+ case '5': $ret = date('d-m-Y (l-F-T)', $time); break;
+ case '6': $ret = date('Ymd', $time); break;
default:
logDebugMessage(__FUNCTION__, __LINE__, sprintf("Invalid date mode %s detected.", $mode));
break;
} // END - switch
} // END - switch
+ // Store it in cache
+ $GLOBALS[__FUNCTION__][$time][$mode] = $ret;
+
// Return result
return $ret;
}
// Translates Y/N to yes/no
function translateYesNo ($yn) {
- // Default
- $translated = '??? (' . $yn . ')';
- switch ($yn) {
- case 'Y': $translated = '{--YES--}'; break;
- case 'N': $translated = '{--NO--}'; break;
- default:
- // Log unknown value
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unknown value %s. Expected Y/N!", $yn));
- break;
- } // END - switch
+ // Is it cached?
+ if (!isset($GLOBALS[__FUNCTION__][$yn])) {
+ // Default
+ $GLOBALS[__FUNCTION__][$yn] = '??? (' . $yn . ')';
+ switch ($yn) {
+ case 'Y': $GLOBALS[__FUNCTION__][$yn] = '{--YES--}'; break;
+ case 'N': $GLOBALS[__FUNCTION__][$yn] = '{--NO--}'; break;
+ default:
+ // Log unknown value
+ logDebugMessage(__FUNCTION__, __LINE__, sprintf("Unknown value %s. Expected Y/N!", $yn));
+ break;
+ } // END - switch
+ } // END - if
// Return it
- return $translated;
-}
-
-// Translates the "pool type" into human-readable
-function translatePoolType ($type) {
- // Return "translation"
- return sprintf("{--POOL_TYPE_%s--}", $type);
+ return $GLOBALS[__FUNCTION__][$yn];
}
// Translates the american decimal dot into a german comma
if (count($com) < 2) {
// Don't display commatas even if there are none... ;-)
$maxComma = '0';
- }
+ } // END - if
} // END - if
// Debug log
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "dotted={$dotted},maxComma={$maxComma}");
// Translate it now
+ $translated = $dotted;
switch (getLanguage()) {
case 'de': // German language
- $dotted = number_format($dotted, $maxComma, ',', '.');
+ $translated = number_format($dotted, $maxComma, ',', '.');
break;
default: // All others
- $dotted = number_format($dotted, $maxComma, '.', ',');
+ $translated = number_format($dotted, $maxComma, '.', ',');
break;
} // END - switch
// Return translated value
- return $dotted;
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'dotted=' . $dotted . ',translated=' . $translated . ',maxComma=' . $maxComma);
+ return $translated;
}
// Translate Uni*-like gender to human-readable
// Male/female or company?
switch ($gender) {
- case 'M': $ret = '{--GENDER_M--}'; break;
- case 'F': $ret = '{--GENDER_F--}'; break;
- case 'C': $ret = '{--GENDER_C--}'; break;
+ case 'M': // Male
+ case 'F': // Female
+ case 'C': // Company
+ $ret = sprintf("{--GENDER_%s--}", $gender);
+ break;
+
default:
// Please report bugs on unknown genders
debug_report_bug(__FUNCTION__, __LINE__, sprintf("Unknown gender %s detected.", $gender));
case 'UNCONFIRMED':
case 'CONFIRMED':
case 'LOCKED':
- $ret = sprintf("{--ACCOUNT_%s--}", $status);
+ $ret = sprintf("{--ACCOUNT_STATUS_%s--}", $status);
break;
case '':
case null:
- $ret = '{--ACCOUNT_DELETED--}';
+ $ret = '{--ACCOUNT_STATUS_DELETED--}';
break;
default:
// Please report all unknown status
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Unknown status %s detected.", $status));
+ debug_report_bug(__FUNCTION__, __LINE__, sprintf("Unknown status %s(%s) detected.", $status, gettype($status)));
break;
} // END - switch
// "Translates" 'visible' and 'locked' to a CSS class
function translateMenuVisibleLocked ($content, $prefix = '') {
+ // Default is 'menu_unknown'
+ $content['visible_css'] = $prefix . 'menu_unknown';
+
// Translate 'visible' and keep an eye on the prefix
switch ($content['visible']) {
// Should be visible
// Generates an URL for the dereferer
function generateDerefererUrl ($URL) {
// Don't de-refer our own links!
- if (substr($URL, 0, strlen(getConfig('URL'))) != getConfig('URL')) {
+ if (substr($URL, 0, strlen(getUrl())) != getUrl()) {
// De-refer this link
$URL = '{%url=modules.php?module=loader&url=' . encodeString(compileUriCode($URL)) . '%}';
} // END - if
// Integrity check
if (!is_array($array)) {
// Not an array!
- debug_report_bug(__FUNCTION__.': No array provided.');
+ debug_report_bug(__FUNCTION__, __LINE__, 'No array provided.');
} // END - if
// Init count
// Generates a timestamp (some wrapper for mktime())
function makeTime ($hours, $minutes, $seconds, $stamp) {
// Extract day, month and year from given timestamp
- $days = date('d', $stamp);
- $months = date('m', $stamp);
- $years = date('Y', $stamp);
+ $days = getDay($stamp);
+ $months = getMonth($stamp);
+ $years = getYear($stamp);
// Create timestamp for wished time which depends on extracted date
return mktime(
// Redirects to an URL and if neccessarry extends it with own base URL
function redirectToUrl ($URL, $allowSpider = true) {
+ // Remove {%url=
+ if (substr($URL, 0, 6) == '{%url=') $URL = substr($URL, 6, -2);
+
// Compile out codes
eval('$URL = "' . compileRawCode(encodeUrl($URL)) . '";');
$rel = ' rel="external"';
// Do we have internal or external URL?
- if (substr($URL, 0, strlen(getConfig('URL'))) == getConfig('URL')) {
+ if (substr($URL, 0, strlen(getUrl())) == getUrl()) {
// Own (=internal) URL
$rel = '';
} // END - if
// Three different ways to debug...
- //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, sprintf("%s[%s:] URL=%s", __FUNCTION__, __LINE__, $URL));
+ //* DEBUG: */ debug_report_bug(__FUNCTION__, __LINE__, 'URL=' . $URL);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'URL=' . $URL);
//* DEBUG: */ die($URL);
// Clear own output buffer
$GLOBALS['output'] = '';
- // Set header
- setHttpStatus('302 Found');
-
// Load URL when headers are not sent
sendRawRedirect(doFinalCompilation(str_replace('&', '&', $URL), false));
} else {
//
-// Deprecated : $length
+// Deprecated : $length (still has one reference in this function)
// Optional : $DATA
//
function generateRandomCode ($length, $code, $userid, $DATA = '') {
// Build server string
- $server = $_SERVER['PHP_SELF'] . getConfig('ENCRYPT_SEPERATOR') . detectUserAgent() . getConfig('ENCRYPT_SEPERATOR') . getenv('SERVER_SOFTWARE') . getConfig('ENCRYPT_SEPERATOR') . detectRemoteAddr();
+ $server = $_SERVER['PHP_SELF'] . getEncryptSeperator() . detectUserAgent() . getEncryptSeperator() . getenv('SERVER_SOFTWARE') . getEncryptSeperator() . detectRemoteAddr();
// Build key string
- $keys = getConfig('SITE_KEY') . getConfig('ENCRYPT_SEPERATOR') . getConfig('DATE_KEY');
- if (isConfigEntrySet('secret_key')) $keys .= getConfig('ENCRYPT_SEPERATOR').getConfig('secret_key');
- if (isConfigEntrySet('file_hash')) $keys .= getConfig('ENCRYPT_SEPERATOR').getConfig('file_hash');
- $keys .= getConfig('ENCRYPT_SEPERATOR') . date('d-m-Y (l-F-T)', getConfig('patch_ctime'));
- if (isConfigEntrySet('master_salt')) $keys .= getConfig('ENCRYPT_SEPERATOR').getConfig('master_salt');
+ $keys = getConfig('SITE_KEY') . getEncryptSeperator() . getConfig('DATE_KEY');
+ if (isConfigEntrySet('secret_key')) {
+ $keys .= getEncryptSeperator().getSecretKey();
+ } // END - if
+ if (isConfigEntrySet('file_hash')) {
+ $keys .= getEncryptSeperator().getFileHash();
+ } // END - if
+ $keys .= getEncryptSeperator() . getDateFromPatchTime();
+ if (isConfigEntrySet('master_salt')) {
+ $keys .= getEncryptSeperator().getMasterSalt();
+ } // END - if
// Build string from misc data
- $data = $code . getConfig('ENCRYPT_SEPERATOR') . $userid . getConfig('ENCRYPT_SEPERATOR') . $DATA;
+ $data = $code . getEncryptSeperator() . $userid . getEncryptSeperator() . $DATA;
// Add more additional data
- if (isSessionVariableSet('u_hash')) $data .= getConfig('ENCRYPT_SEPERATOR') . getSession('u_hash');
+ if (isSessionVariableSet('u_hash')) {
+ $data .= getEncryptSeperator() . getSession('u_hash');
+ } // END - if
// Add referal id, language, theme and userid
- $data .= getConfig('ENCRYPT_SEPERATOR') . determineReferalId();
- $data .= getConfig('ENCRYPT_SEPERATOR') . getLanguage();
- $data .= getConfig('ENCRYPT_SEPERATOR') . getCurrentTheme();
- $data .= getConfig('ENCRYPT_SEPERATOR') . getMemberId();
+ $data .= getEncryptSeperator() . determineReferalId();
+ $data .= getEncryptSeperator() . getLanguage();
+ $data .= getEncryptSeperator() . getCurrentTheme();
+ $data .= getEncryptSeperator() . getMemberId();
// Calculate number for generating the code
$a = $code + getConfig('_ADD') - 1;
if (isConfigEntrySet('master_salt')) {
// Generate hash with master salt from modula of number with the prime number and other data
- $saltedHash = generateHash(($a % getConfig('_PRIME')) . getConfig('ENCRYPT_SEPERATOR') . $server . getConfig('ENCRYPT_SEPERATOR') . $keys . getConfig('ENCRYPT_SEPERATOR') . $data . getConfig('ENCRYPT_SEPERATOR') . getConfig('DATE_KEY') . getConfig('ENCRYPT_SEPERATOR') . $a, getConfig('master_salt'));
+ $saltedHash = generateHash(($a % getPrime()) . getEncryptSeperator() . $server . getEncryptSeperator() . $keys . getEncryptSeperator() . $data . getEncryptSeperator() . getConfig('DATE_KEY') . getEncryptSeperator() . $a, getMasterSalt());
// Create number from hash
- $rcode = hexdec(substr($saltedHash, strlen(getConfig('master_salt')), 9)) / abs(getConfig('rand_no') - $a + sqrt(getConfig('_ADD'))) / pi();
+ $rcode = hexdec(substr($saltedHash, strlen(getMasterSalt()), 9)) / abs(getConfig('rand_no') - $a + sqrt(getConfig('_ADD'))) / pi();
} else {
// Generate hash with "hash of site key" from modula of number with the prime number and other data
- $saltedHash = generateHash(($a % getConfig('_PRIME')) . getConfig('ENCRYPT_SEPERATOR') . $server . getConfig('ENCRYPT_SEPERATOR') . $keys . getConfig('ENCRYPT_SEPERATOR') . $data . getConfig('ENCRYPT_SEPERATOR') . getConfig('DATE_KEY') . getConfig('ENCRYPT_SEPERATOR') . $a, substr(sha1(getConfig('SITE_KEY')), 0, getConfig('salt_length')));
+ $saltedHash = generateHash(($a % getPrime()) . getEncryptSeperator() . $server . getEncryptSeperator() . $keys . getEncryptSeperator() . $data . getEncryptSeperator() . getConfig('DATE_KEY') . getEncryptSeperator() . $a, substr(sha1(getConfig('SITE_KEY')), 0, getSaltLength()));
// Create number from hash
$rcode = hexdec(substr($saltedHash, 8, 9)) / abs(getConfig('rand_no') - $a + sqrt(getConfig('_ADD'))) / pi();
$ret = preg_replace('/[^0123456789]/', '', $num);
// Shall we cast?
- if ($castValue === true) $ret = (double)$ret;
+ if ($castValue === true) {
+ // Cast to biggest numeric type
+ $ret = (double) $ret;
+ } // END - if
// Has the whole value changed?
- if (('' . $ret . '' != '' . $num . '') && ($abortOnMismatch === true)) {
+ if (('' . $ret . '' != '' . $num . '') && ($abortOnMismatch === true) && (!is_null($num))) {
// Log the values
- debug_report_bug(__FUNCTION__, __LINE__, 'Problem with number found. ret=' . $ret . ', num='. $num);
+ debug_report_bug(__FUNCTION__, __LINE__, 'Problem with number found. ret[' . gettype($ret) . ']=' . $ret . ', num[' . gettype($num) . ']='. $num);
} // END - if
// Return result
// Do we have a leap year?
$SWITCH = '0';
- $TEST = date('Y', time()) / 4;
- $M1 = date('m', time());
+ $TEST = getYear() / 4;
+ $M1 = getMonth();
// If so and if current time is before 02/29 and estimated time is after 02/29 then add 86400 seconds (one day)
- if ((floor($TEST) == $TEST) && ($M1 == '02') && ($postData[$prefix . '_mo'] > '02')) $SWITCH = getConfig('ONE_DAY');
+ if ((floor($TEST) == $TEST) && ($M1 == '02') && ($postData[$prefix . '_mo'] > '02')) $SWITCH = getOneDay();
// First add years...
$ret += $postData[$prefix . '_ye'] * (31536000 + $SWITCH);
foreach($data as $k => $v) {
if ($v > 0) {
// Value is greater than 0 "eval" data to return string
- eval('$ret .= ", ".$v." {--_' . strtoupper($k) . '--}";');
+ $ret .= ', ' . $v . ' {--_' . strtoupper($k) . '--}';
break;
} // END - if
} // END - foreach
// Extract host from script name
function extractHostnameFromUrl (&$script) {
// Use default SERVER_URL by default... ;) So?
- $url = getConfig('SERVER_URL');
+ $url = getServerUrl();
// Is this URL valid?
if (substr($script, 0, 7) == 'http://') {
// Add data
$body = http_build_query($data, '', '&');
- // Do we have a question-mark in the script?
- if (strpos($script, '?') === false) {
- // No, so first char must be question mark
- $body = '?' . $body;
- } else {
- // Ok, add &
- $body = '&' . $body;
- }
+ // There should be data, else we don't need to extend $script with $body
+ if (empty($body)) {
+ // Do we have a question-mark in the script?
+ if (strpos($script, '?') === false) {
+ // No, so first char must be question mark
+ $body = '?' . $body;
+ } else {
+ // Ok, add &
+ $body = '&' . $body;
+ }
- // Add script data
- $script .= $body;
+ // Add script data
+ $script .= $body;
- // Remove trailed & to make it more conform
- if (substr($script, -1, 1) == '&') $script = substr($script, 0, -1);
+ // Remove trailed & to make it more conform
+ if (substr($script, -1, 1) == '&') $script = substr($script, 0, -1);
+ } // END - if
// Generate GET request header
$request = 'GET /' . trim($script) . ' HTTP/1.1' . getConfig('HTTP_EOL');
$request .= 'Host: ' . $host . getConfig('HTTP_EOL');
- $request .= 'Referer: ' . getConfig('URL') . '/admin.php' . getConfig('HTTP_EOL');
+ $request .= 'Referer: ' . getUrl() . '/admin.php' . getConfig('HTTP_EOL');
if (isConfigEntrySet('FULL_VERSION')) {
- $request .= 'User-Agent: ' . getConfig('TITLE') . '/' . getConfig('FULL_VERSION') . getConfig('HTTP_EOL');
+ $request .= 'User-Agent: ' . getTitle() . '/' . getFullVersion() . getConfig('HTTP_EOL');
} else {
- $request .= 'User-Agent: ' . getConfig('TITLE') . '/' . getConfig('VERSION') . getConfig('HTTP_EOL');
+ $request .= 'User-Agent: ' . getTitle() . '/' . getConfig('VERSION') . getConfig('HTTP_EOL');
}
$request .= 'Accept: image/png,image/*;q=0.8,text/plain,text/html,*/*;q=0.5' . getConfig('HTTP_EOL');
$request .= 'Accept-Charset: UTF-8,*' . getConfig('HTTP_EOL');
// Generate POST request header
$request = 'POST /' . trim($script) . ' HTTP/1.0' . getConfig('HTTP_EOL');
$request .= 'Host: ' . $host . getConfig('HTTP_EOL');
- $request .= 'Referer: ' . getConfig('URL') . '/admin.php' . getConfig('HTTP_EOL');
- $request .= 'User-Agent: ' . getConfig('TITLE') . '/' . getConfig('FULL_VERSION') . getConfig('HTTP_EOL');
+ $request .= 'Referer: ' . getUrl() . '/admin.php' . getConfig('HTTP_EOL');
+ $request .= 'User-Agent: ' . getTitle() . '/' . getFullVersion() . getConfig('HTTP_EOL');
$request .= 'Accept: text/plain;q=0.8' . getConfig('HTTP_EOL');
$request .= 'Accept-Charset: UTF-8,*' . getConfig('HTTP_EOL');
$request .= 'Cache-Control: no-cache' . getConfig('HTTP_EOL');
$useProxy = false;
// Are proxy settins set?
- if ((isConfigEntrySet('proxy_host')) && (getConfig('proxy_host') != '') && (isConfigEntrySet('proxy_port')) && (getConfig('proxy_port') > 0)) {
+ if (isProxyUsed()) {
// Then use it
$useProxy = true;
} // END - if
// When the salt is empty build a new one, else use the first x configured characters as the salt
if (empty($salt)) {
// Build server string for more entropy
- $server = $_SERVER['PHP_SELF'] . getConfig('ENCRYPT_SEPERATOR') . detectUserAgent() . getConfig('ENCRYPT_SEPERATOR') . getenv('SERVER_SOFTWARE') . getConfig('ENCRYPT_SEPERATOR') . detectRemoteAddr();
+ $server = $_SERVER['PHP_SELF'] . getEncryptSeperator() . detectUserAgent() . getEncryptSeperator() . getenv('SERVER_SOFTWARE') . getEncryptSeperator() . detectRemoteAddr();
// Build key string
- $keys = getConfig('SITE_KEY') . getConfig('ENCRYPT_SEPERATOR') . getConfig('DATE_KEY') . getConfig('ENCRYPT_SEPERATOR') . getConfig('secret_key') . getConfig('ENCRYPT_SEPERATOR') . getConfig('file_hash') . getConfig('ENCRYPT_SEPERATOR') . date('d-m-Y (l-F-T)', getConfig('patch_ctime')) . getConfig('ENCRYPT_SEPERATOR') . getConfig('master_salt');
+ $keys = getConfig('SITE_KEY') . getEncryptSeperator() . getConfig('DATE_KEY') . getEncryptSeperator() . getSecretKey() . getEncryptSeperator() . getFileHash() . getEncryptSeperator() . getDateFromPatchTime() . getEncryptSeperator() . getMasterSalt();
// Additional data
- $data = $plainText . getConfig('ENCRYPT_SEPERATOR') . uniqid(mt_rand(), true) . getConfig('ENCRYPT_SEPERATOR') . time();
+ $data = $plainText . getEncryptSeperator() . uniqid(mt_rand(), true) . getEncryptSeperator() . time();
// Calculate number for generating the code
$a = time() + getConfig('_ADD') - 1;
// Generate SHA1 sum from modula of number and the prime number
- $sha1 = sha1(($a % getConfig('_PRIME')) . $server . getConfig('ENCRYPT_SEPERATOR') . $keys . getConfig('ENCRYPT_SEPERATOR') . $data . getConfig('ENCRYPT_SEPERATOR') . getConfig('DATE_KEY') . getConfig('ENCRYPT_SEPERATOR') . $a);
+ $sha1 = sha1(($a % getPrime()) . $server . getEncryptSeperator() . $keys . getEncryptSeperator() . $data . getEncryptSeperator() . getConfig('DATE_KEY') . getEncryptSeperator() . $a);
//* DEBUG: */ debugOutput('SHA1=' . $sha1.' ('.strlen($sha1).')<br />');
$sha1 = scrambleString($sha1);
//* DEBUG: */ debugOutput('Scrambled=' . $sha1.' ('.strlen($sha1).')<br />');
//* DEBUG: */ debugOutput('Descrambled=' . $sha1b.' ('.strlen($sha1b).')<br />');
// Generate the password salt string
- $salt = substr($sha1, 0, getConfig('salt_length'));
+ $salt = substr($sha1, 0, getSaltLength());
//* DEBUG: */ debugOutput($salt.' ('.strlen($salt).')<br />');
} else {
// Use given salt
//* DEBUG: */ debugOutput('salt=' . $salt);
- $salt = substr($salt, 0, getConfig('salt_length'));
- //* DEBUG: */ debugOutput('salt=' . $salt . '(' . strlen($salt) . '/' . getConfig('salt_length') . ')<br />');
+ $salt = substr($salt, 0, getSaltLength());
+ //* DEBUG: */ debugOutput('salt=' . $salt . '(' . strlen($salt) . '/' . getSaltLength() . ')<br />');
// Sanity check on salt
- if (strlen($salt) != getConfig('salt_length')) {
+ if (strlen($salt) != getSaltLength()) {
// Not the same!
- debug_report_bug(__FUNCTION__.': salt length mismatch! ('.strlen($salt).'/'.getConfig('salt_length').')');
+ debug_report_bug(__FUNCTION__, __LINE__, 'salt length mismatch! ('.strlen($salt).'/'.getSaltLength().')');
} // END - if
}
}
// Scramble a string
-function scrambleString($str) {
+function scrambleString ($str) {
// Init
$scrambled = '';
return $str;
} elseif (strlen($str) == 40) {
// From database
- $scrambleNums = explode(':', getConfig('pass_scramble'));
+ $scrambleNums = explode(':', getPassScramble());
} else {
// Generate new numbers
$scrambleNums = explode(':', genScrambleString(strlen($str)));
}
// De-scramble a string scrambled by scrambleString()
-function descrambleString($str) {
+function descrambleString ($str) {
// Scramble only 40 chars long strings
if (strlen($str) != 40) return $str;
// Load numbers from config
- $scrambleNums = explode(':', getConfig('pass_scramble'));
+ $scrambleNums = explode(':', getPassScramble());
// Validate numbers
if (count($scrambleNums) != 40) return $str;
// First we need to setup randomized numbers from 0 to 31
for ($idx = 0; $idx < $len; $idx++) {
// Generate number
- $rand = mt_rand(0, ($len -1));
+ $rand = mt_rand(0, ($len - 1));
// Check for it by creating more numbers
while (array_key_exists($rand, $scrambleNumbers)) {
- $rand = mt_rand(0, ($len -1));
+ $rand = mt_rand(0, ($len - 1));
} // END - while
// Add number
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, intval(isExtensionInstalled('sql_patches')) . '/' . intval(isConfigEntrySet('_PRIME')) . '/' . intval(isConfigEntrySet('secret_key')) . '/' . intval(isConfigEntrySet('master_salt')));
if ((isExtensionInstalled('sql_patches')) && (isConfigEntrySet('_PRIME')) && (isConfigEntrySet('secret_key')) && (isConfigEntrySet('master_salt'))) {
// Only calculate when the secret key is generated
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, strlen($passHash) . '/' . strlen(getConfig('secret_key')));
- if ((strlen($passHash) != 49) || (strlen(getConfig('secret_key')) != 40)) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, strlen($passHash) . '/' . strlen(getSecretKey()));
+ if ((strlen($passHash) != 49) || (strlen(getSecretKey()) != 40)) {
// Both keys must have same length so return unencrypted
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, strlen($passHash) . '!=49/' . strlen(getConfig('secret_key')) . '!=40');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, strlen($passHash) . '!=49/' . strlen(getSecretKey()) . '!=40');
return $ret;
} // END - if
$newHash = ''; $start = 9;
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'passHash=' . $passHash . '(' . strlen($passHash) . ')');
for ($idx = 0; $idx < 20; $idx++) {
- $part1 = hexdec(substr($passHash, ($idx * 2) + (strlen($passHash) - strlen(getConfig('secret_key'))), 2));
- $part2 = hexdec(substr(getConfig('secret_key'), $start, 2));
+ $part1 = hexdec(substr($passHash, ($idx * 2) + (strlen($passHash) - strlen(getSecretKey())), 2));
+ $part2 = hexdec(substr(getSecretKey(), $start, 2));
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'part1=' . $part1 . '/part2=' . $part2);
$mod = dechex($idx);
if ($part1 > $part2) {
- $mod = dechex(sqrt(($part1 - $part2) * getConfig('_PRIME') / pi()));
+ $mod = dechex(sqrt(($part1 - $part2) * getPrime() / pi()));
} elseif ($part2 > $part1) {
- $mod = dechex(sqrt(($part2 - $part1) * getConfig('_PRIME') / pi()));
+ $mod = dechex(sqrt(($part2 - $part1) * getPrime() / pi()));
}
$mod = substr($mod, 0, 2);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'part1=' . $part1 . '/part2=' . $part2 . '/mod=' . $mod . '(' . strlen($mod) . ')');
} // END - for
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $passHash . ',' . $newHash . ' (' . strlen($newHash) . ')');
- $ret = generateHash($newHash, getConfig('master_salt'));
+ $ret = generateHash($newHash, getMasterSalt());
} // END - if
// Return result
}
// Generates an error code from given account status
-function generateErrorCodeFromUserStatus ($status='') {
+function generateErrorCodeFromUserStatus ($status = '') {
// If no status is provided, use the default, cached
if ((empty($status)) && (isMember())) {
// Get user status
} // END - if
// Default error code if unknown account status
- $errorCode = getCode('UNKNOWN_STATUS');
+ $errorCode = getCode('ACCOUNT_STATUS_UNKNOWN');
// Generate constant name
- $codeName = sprintf("ACCOUNT_%s", strtoupper($status));
+ $codeName = sprintf("ACCOUNT_STATUS_%s", strtoupper($status));
// Is the constant there?
if (isCodeSet($codeName)) {
if (!isset($trace['file'])) $trace['file'] = __FUNCTION__;
if (!isset($trace['line'])) $trace['line'] = __LINE__;
if (!isset($trace['args'])) $trace['args'] = array();
- $backtrace .= '<li class="debug_list"><span class="backtrace_file">' . basename($trace['file']) . '</span>:' . $trace['line'].", <span class=\"backtrace_function\">" . $trace['function'] . '(' . count($trace['args']) . ')</span></li>';
+ $backtrace .= '<li class="debug_list"><span class="backtrace_file">' . basename($trace['file']) . '</span>:' . $trace['line'] . ', <span class="backtrace_function">' . $trace['function'] . '(' . count($trace['args']) . ')</span></li>';
} // END - foreach
// Close it
switch ($code) {
case '': break;
case getCode('LOGOUT_DONE') : $message = '{--LOGOUT_DONE--}'; break;
- case getCode('LOGOUT_FAILED') : $message = '<span class="guest_failed">{--LOGOUT_FAILED--}</span>'; break;
+ case getCode('LOGOUT_FAILED') : $message = '<span class="notice">{--LOGOUT_FAILED--}</span>'; break;
case getCode('DATA_INVALID') : $message = '{--MAIL_DATA_INVALID--}'; break;
case getCode('POSSIBLE_INVALID') : $message = '{--MAIL_POSSIBLE_INVALID--}'; break;
case getCode('USER_404') : $message = '{--USER_404--}'; break;
case getCode('ACCOUNT_UNCONFIRMED'): $message = '{--LOGIN_STATUS_UNCONFIRMED--}'; break;
case getCode('COOKIES_DISABLED') : $message = '{--LOGIN_COOKIES_DISABLED--}'; break;
case getCode('BEG_SAME_AS_OWN') : $message = '{--BEG_SAME_UID_AS_OWN--}'; break;
- case getCode('LOGIN_FAILED') : $message = '{--LOGIN_FAILED_GENERAL--}'; break;
+ case getCode('LOGIN_FAILED') : $message = '{--GUEST_LOGIN_FAILED_GENERAL--}'; break;
case getCode('MODULE_MEMBER_ONLY') : $message = getMaskedMessage('MODULE_MEMBER_ONLY', getRequestParameter('mod')); break;
case getCode('OVERLENGTH') : $message = '{--MEMBER_TEXT_OVERLENGTH--}'; break;
case getCode('URL_FOUND') : $message = '{--MEMBER_TEXT_CONTAINS_URL--}'; break;
case getCode('NO_MAIL_TYPE') : $message = '{--MEMBER_NO_MAIL_TYPE_SELECTED--}'; break;
case getCode('UNKNOWN_ERROR') : $message = '{--LOGIN_UNKNOWN_ERROR--}'; break;
case getCode('UNKNOWN_STATUS') : $message = '{--LOGIN_UNKNOWN_STATUS--}'; break;
+ case getCode('PROFILE_UPDATED') : $message = '{--MEMBER_PROFILE_UPDATED--}'; break;
case getCode('ERROR_MAILID'):
if (isExtensionActive('mailid', true)) {
$message = '{--ERROR_CONFIRMING_MAIL--}';
} else {
- $message = getMaskedMessage('EXTENSION_PROBLEM_EXTENSION_NOT_INSTALLED', 'mailid');
+ $message = generateExtensionInactiveNotInstalledMessage('mailid');
}
break;
}
break;
- case getCode('URL_TLOCK'):
+ case getCode('URL_TIME_LOCK'):
// @TODO Move this SQL code into a function, let's say 'getTimestampFromPoolId($id) ?
$result = SQL_QUERY_ESC("SELECT `timestamp` FROM `{?_MYSQL_PREFIX?}_pool` WHERE `id`=%s LIMIT 1",
array(bigintval(getRequestParameter('id'))), __FUNCTION__, __LINE__);
// Load timestamp from last order
- list($timestamp) = SQL_FETCHROW($result);
+ $content = SQL_FETCHARRAY($result);
// Free memory
SQL_FREERESULT($result);
// Translate it for templates
- $timestamp = generateDateTime($timestamp, 1);
+ $content['timestamp'] = generateDateTime($content['timestamp'], 1);
// Calculate hours...
- $STD = round(getConfig('url_tlock') / 60 / 60);
+ $content['hours'] = round(getConfig('url_tlock') / 60 / 60);
// Minutes...
- $MIN = round((getConfig('url_tlock') - $STD * 60 * 60) / 60);
+ $content['minutes'] = round((getConfig('url_tlock') - $content['hours'] * 60 * 60) / 60);
// And seconds
- $SEC = getConfig('url_tlock') - $STD * 60 * 60 - $MIN * 60;
+ $content['seconds'] = round(getConfig('url_tlock') - $content['hours'] * 60 * 60 - $content['minutes'] * 60);
// Finally contruct the message
- // @TODO Rewrite this old lost code to a template
- $message = "{--MEMBER_URL_TIME_LOCK--}<br />{--CONFIG_URL_TLOCK--} ".$STD."
- {--_HOURS--}, ".$MIN." {--_MINUTES--} {--_AND--} ".$SEC." {--_SECONDS--}<br />
- {--MEMBER_LAST_TLOCK--}: ".$timestamp;
+ $message = loadTemplate('tlock_message', true, $content);
break;
default:
// Debug regex?
if (isDebugRegularExpressionEnabled()) {
// @TODO Are these convertions still required?
- $pat = str_replace('.', "\.", $pat);
- $pat = str_replace('@', "\@", $pat);
- //* DEBUG: */ debugOutput($key."= " . $pat);
+ $pat = str_replace('.', '\.', $pat);
+ $pat = str_replace('@', '\@', $pat);
+ //* DEBUG: */ debugOutput($key . '= ' . $pat);
} // END - if
// Check if expression matches
// Read from source file
$line = fgets ($fp, 1024);
- if (strpos($line, $search) > -1) { $next = '0'; $found = true; }
+ if (strpos($line, $search) > -1) {
+ $next = '0';
+ $found = true;
+ } // END - if
if ($next > -1) {
if ($next === $seek) {
$message = str_replace("\r", '', str_replace("\n", '', $message));
// Log this message away
- $fp = fopen(getConfig('CACHE_PATH') . 'debug.log', 'a') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write logfile debug.log!');
- fwrite($fp, date('d.m.Y|H:i:s', time()) . '|' . getModule(false) . '|' . basename($funcFile) . '|' . $line . '|' . $message . "\n");
+ $fp = fopen(getCachePath() . 'debug.log', 'a') or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot write logfile debug.log!');
+ fwrite($fp, generateDateTime(time(), '4') . '|' . getModule(false) . '|' . basename($funcFile) . '|' . $line . '|' . $message . "\n");
fclose($fp);
} // END - if
}
// Ignore zero values
if (getSession('mailer_' . $accessLevel . '_failures') > 0) {
// Non-guest has login failures found, get both data and prepare it for template
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "accessLevel={$accessLevel}<br />");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'accessLevel=' . $accessLevel . '<br />');
$content = array(
- 'login_failures' => getSession('mailer_' . $accessLevel . '_failures'),
+ 'login_failures' => 'mailer_' . $accessLevel . '_failures',
'last_failure' => generateDateTime(getSession('mailer_' . $accessLevel . '_last_failure'), 2)
);
loadInclude($inc);
} else {
// Include not found!
- logDebugMessage(__FUNCTION__, __LINE__, "Include {$inc} not found. cache={$cache}");
+ logDebugMessage(__FUNCTION__, __LINE__, 'Include ' . $inc . ' not found. cache=' . $cache);
}
} // END - if
} // END - if
// Determines referal id and sets it
function determineReferalId () {
// Skip this in non-html-mode and outside ref.php
- if ((getOutputMode() != 0) && (basename($_SERVER['PHP_SELF']) != 'ref.php')) return false;
+ if ((!isHtmlOutputMode()) && (basename($_SERVER['PHP_SELF']) != 'ref.php')) return false;
// Check if refid is set
if ((isset($GLOBALS['refid'])) && ($GLOBALS['refid'] > 0)) {
// This is fine...
- } elseif ((isGetRequestParameterSet('user')) && (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(getRequestParameter('user'));
} elseif (isPostRequestParameterSet('refid')) {
- // Get referal id from variable refid (so I hope this makes my script more compatible to other scripts)
+ // Get referal id from POST element refid
$GLOBALS['refid'] = secureString(postRequestParameter('refid'));
} elseif (isGetRequestParameterSet('refid')) {
- // Get referal id from variable refid (so I hope this makes my script more compatible to other scripts)
+ // Get referal id from GET parameter refid
$GLOBALS['refid'] = secureString(getRequestParameter('refid'));
} elseif (isGetRequestParameterSet('ref')) {
// Set refid=ref (the referal link uses such variable)
$GLOBALS['refid'] = secureString(getRequestParameter('ref'));
- } elseif ((isSessionVariableSet('refid')) && (getSession('refid') != 0)) {
+ } elseif ((isGetRequestParameterSet('user')) && (basename($_SERVER['PHP_SELF']) == 'click.php')) {
+ // The variable user comes from click.php
+ $GLOBALS['refid'] = bigintval(getRequestParameter('user'));
+ } elseif ((isSessionVariableSet('refid')) && (isValidUserId(getSession('refid')))) {
// Set session refid als global
$GLOBALS['refid'] = bigintval(getSession('refid'));
- } elseif ((isExtensionInstalledAndNewer('user', '0.3.4')) && (getConfig('select_user_zero_refid') == 'Y')) {
+ } elseif (isRandomReferalIdEnabled()) {
// Select a random user which has confirmed enougth mails
$GLOBALS['refid'] = determineRandomReferalId();
- } elseif ((isExtensionInstalledAndNewer('sql_patches', '0.1.2')) && (getConfig('def_refid') > 0)) {
+ } elseif ((isExtensionInstalledAndNewer('sql_patches', '0.1.2')) && (isValidUserId(getDefRefid()))) {
// Set default refid as refid in URL
- $GLOBALS['refid'] = getConfig('def_refid');
+ $GLOBALS['refid'] = getDefRefid();
} else {
// No default id when sql_patches is not installed or none set
- $GLOBALS['refid'] = '0';
+ $GLOBALS['refid'] = null;
}
// Set cookie when default refid > 0
- if (!isSessionVariableSet('refid') || (!empty($GLOBALS['refid'])) || ((getSession('refid') == '0') && (isConfigEntrySet('def_refid')) && (getConfig('def_refid') > 0))) {
+ if (!isSessionVariableSet('refid') || (isValidUserId($GLOBALS['refid'])) || ((!isValidUserId(getSession('refid'))) && (isExtensionInstalledAndNewer('sql_patches', '0.1.2')) && (isValidUserId(getDefRefid())))) {
// Default is not found
$found = false;
if ((isExtensionActive('nickname')) && (isNicknameUsed($GLOBALS['refid']))) {
// Nickname in URL, so load the id
$found = fetchUserData($GLOBALS['refid'], 'nickname');
- } elseif ($GLOBALS['refid'] > 0) {
+ } elseif (isValidUserId($GLOBALS['refid'])) {
// Direct userid entered
$found = fetchUserData($GLOBALS['refid']);
}
// Is the record valid?
- if ((($found === false) || (!isUserDataValid())) && (isConfigEntrySet('def_refid'))) {
+ if ((($found === false) || (!isUserDataValid())) && (isExtensionInstalledAndNewer('sql_patches', '0.1.2'))) {
// No, then reset referal id
- $GLOBALS['refid'] = getConfig('def_refid');
+ $GLOBALS['refid'] = getDefRefid();
} // END - if
// Set cookie
// Setter for member id
function setMemberId ($memberid) {
// We should not set member id to zero
- if ($memberid == '0') debug_report_bug(__FUNCTION__, __LINE__, 'Userid should not be set zero.');
+ if ($memberid == '0') {
+ debug_report_bug(__FUNCTION__, __LINE__, 'Userid should not be set zero.');
+ } // END - if
// Set it secured
$GLOBALS['member_id'] = bigintval($memberid);
$excludeArray[] = '.svn';
$excludeArray[] = '.htaccess';
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "baseDir={$baseDir},prefix={$prefix} - Entered!");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'baseDir=' . $baseDir . ',prefix=' . $prefix . ' - Entered!');
// Init includes
$files = array();
// Open directory
- $dirPointer = opendir(getConfig('PATH') . $baseDir) or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot read directory ' . basename($baseDir) . '.');
+ $dirPointer = opendir(getPath() . $baseDir) or debug_report_bug(__FUNCTION__, __LINE__, 'Cannot read directory ' . basename($baseDir) . '.');
// Read all entries
while ($baseFile = readdir($dirPointer)) {
// Construct include filename and FQFN
$fileName = $baseDir . $baseFile;
- $FQFN = getConfig('PATH') . $fileName;
+ $FQFN = getPath() . $fileName;
// Remove double slashes
$FQFN = str_replace('//', '/', $FQFN);
continue;
} elseif (substr($baseFile, 0, strlen($prefix)) != $prefix) {
// Skip this file
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "Invalid prefix in file " . $baseFile . ", prefix=" . $prefix);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Invalid prefix in file ' . $baseFile . ', prefix=' . $prefix);
continue;
} elseif ((!empty($suffix)) && (substr($baseFile, -(strlen($suffix . $extension)), (strlen($suffix . $extension))) != $suffix . $extension)) {
// Skip wrong suffix as well
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "Invalid suffix in file " . $baseFile . ", suffix=" . $suffix);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Invalid suffix in file ' . $baseFile . ', suffix=' . $suffix);
continue;
} elseif (!isFileReadable($FQFN)) {
// Not readable so skip it
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "File " . $FQFN . " is not readable!");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'File ' . $FQFN . ' is not readable!');
continue;
}
// Is the file a PHP script or other?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, "baseDir={$baseDir},prefix={$prefix},baseFile={$baseFile}");
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'baseDir=' . $baseDir . ',prefix=' . $prefix . ',baseFile=' . $baseFile);
if ((substr($baseFile, -4, 4) == '.php') || (($fileIncludeDirs === true) && (isDirectory($FQFN)))) {
// Is this a valid include file?
if ($extension == '.php') {
// Add SQL debug data to array for later output
function addSqlToDebug ($result, $sqlString, $timing, $F, $L) {
- // Already executed?
- if (isset($GLOBALS['debug_sqls'][$F][$L][$sqlString])) {
- // Then abort here, we don't need to profile a query twice
- return;
- } // END - if
-
- // Remeber this as profiled (or not, but we don't care here)
- $GLOBALS['debug_sqls'][$F][$L][$sqlString] = true;
-
// Do we have cache?
if (!isset($GLOBALS['debug_sql_available'])) {
// Check it and cache it in $GLOBALS
- $GLOBALS['debug_sql_available'] = ((isConfigurationLoaded()) && (isExtensionInstalledAndNewer('other', '0.2.2')) && (getConfig('display_debug_sqls') == 'Y'));
+ $GLOBALS['debug_sql_available'] = ((isConfigurationLoaded()) && (isDisplayDebugSqlEnabled()));
} // END - if
// Don't execute anything here if we don't need or ext-other is missing
return;
} // END - if
+ // Already executed?
+ if (isset($GLOBALS['debug_sqls'][$F][$L][$sqlString])) {
+ // Then abort here, we don't need to profile a query twice
+ return;
+ } // END - if
+
+ // Remeber this as profiled (or not, but we don't care here)
+ $GLOBALS['debug_sqls'][$F][$L][$sqlString] = true;
+
// Generate record
$record = array(
'num_rows' => SQL_NUMROWS($result),
// Initializes the cache instance
function initCacheInstance () {
+ // Check for double-initialization
+ if (isset($GLOBALS['cache_instance'])) {
+ // This should not happen and must be fixed
+ debug_report_bug(__FUNCTION__, __LINE__, 'Double initialization of cache system detected. cache_instance[]=' . gettype($GLOBALS['cache_instance']));
+ } // END - if
+
// Load include for CacheSystem class
loadIncludeOnce('inc/classes/cachesystem.class.php');
// Initialize cache system only when it's needed
$GLOBALS['cache_instance'] = new CacheSystem();
+
+ // Did it work?
if ($GLOBALS['cache_instance']->getStatus() != 'done') {
// Failed to initialize cache sustem
addFatalMessage(__FUNCTION__, __LINE__, '(<font color="#0000aa">' . __LINE__ . '</font>): {--CACHE_CANNOT_INITIALIZE--}');
// Encodes an URL for adding session id, etc.
function encodeUrl ($url, $outputMode = '0') {
// Do we have already have a PHPSESSID inside or view.php is called? Then abort here
- if ((strpos($url, session_name()) !== false) || (getOutputMode() == -3)) return $url;
+ if ((strpos($url, session_name()) !== false) || (isRawOutputMode())) return $url;
// Do we have a valid session?
if (((!isset($GLOBALS['valid_session'])) || ($GLOBALS['valid_session'] === false) || (!isset($_COOKIE[session_name()]))) && (isSpider() === false)) {
if (strpos($url, '?') === false) {
// No question mark
$seperator = '?';
- } elseif ((getOutputMode() != '0') || ($outputMode != '0')) {
+ } elseif ((!isHtmlOutputMode()) || ($outputMode != '0')) {
// Non-HTML mode
$seperator = '&';
}
} // END - if
// Add {?URL?} ?
- if ((substr($url, 0, strlen(getConfig('URL'))) != getConfig('URL')) && (substr($url, 0, 7) != '{?URL?}') && (substr($url, 0, 7) != 'http://') && (substr($url, 0, 8) != 'https://')) {
+ if ((substr($url, 0, strlen(getUrl())) != getUrl()) && (substr($url, 0, 7) != '{?URL?}') && (substr($url, 0, 7) != 'http://') && (substr($url, 0, 8) != 'https://')) {
// Add it
$url = '{?URL?}/' . $url;
} // END - if
// Simple check for spider
function isSpider () {
- // Get the UA
- $userAgent = strtolower(detectUserAgent(true));
+ // Get the UA and trim it down
+ $userAgent = trim(strtolower(detectUserAgent(true)));
// It should not be empty, if so it is better a spider/bot
if (empty($userAgent)) return true;
// Walk through all entries
foreach ($ds as $d) {
// Generate proper FQFN
- $FQFN = str_replace('//', '/', getConfig('PATH') . $dir . '/' . $d);
+ $FQFN = str_replace('//', '/', getPath() . $dir . '/' . $d);
// Is it a file and readable?
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'dir=' . $dir . ',d=' . $d);
return $field;
}
-//////////////////////////////////////////////////
-// AUTOMATICALLY RE-GENERATED MISSING FUNCTIONS //
-//////////////////////////////////////////////////
+// Converts a userid so it can be used in SQL queries
+function makeDatabaseUserId ($userid) {
+ // Is it a valid username?
+ if (isValidUserId($userid)) {
+ // Always secure it
+ $userid = bigintval($userid);
+ } else {
+ // Is not valid or zero
+ $userid = 'NULL';
+ }
+
+ // Return it
+ return $userid;
+}
+
+// Capitalizes a string with underscores, e.g.: some_foo_string will become SomeFooString
+// Note: This function is cached
+function capitalizeUnderscoreString ($str) {
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__][$str])) {
+ // Init target string
+ $capitalized = '';
+
+ // Explode it with the underscore, but rewrite dashes to underscore before
+ $strArray = explode('_', str_replace('-', '_', $str));
+
+ // "Walk" through all elements and make them lower-case but first upper-case
+ foreach ($strArray as $part) {
+ // Capitalize the string part
+ $capitalized .= ucfirst(strtolower($part));
+ } // END - foreach
+
+ // Store the converted string in cache array
+ $GLOBALS[__FUNCTION__][$str] = $capitalized;
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__][$str];
+}
+
+//-----------------------------------------------------------------------------
+// Automatically re-created functions, all taken from user comments on www.php.net
+//-----------------------------------------------------------------------------
//
if (!function_exists('html_entity_decode')) {
// Taken from documentation on www.php.net
// Taken from documentation on www.php.net, credits to Marco K. (Germany) and some light mods by R.Haeder
function http_build_query($data, $prefix = '', $sep = '', $key = '') {
$ret = array();
- foreach ((array)$data as $k => $v) {
+ foreach ((array) $data as $k => $v) {
if (is_int($k) && $prefix != null) {
$k = urlencode($prefix . $k);
} // END - if