// Output HTML code directly or "render" it. You addionally switch the new-line character off
function OUTPUT_HTML ($HTML, $newLine = true) {
// Some global variables
- global $OUTPUT, $footer, $CSS;
+ global $OUTPUT;
// Do we have HTML-Code here?
if (!empty($HTML)) {
mxchange_die("<strong>{--FATAL_ERROR--}:</strong> {--LANG_NO_RENDER_DIRECT--}");
break;
}
- } elseif ((constant('_OB_CACHING') == "on") && ($footer == 1)) {
+ } elseif ((constant('_OB_CACHING') == "on") && ($GLOBALS['footer_sent'] == 1)) {
// Headers already sent?
if (headers_sent()) {
// Log this error
header("Connection: Close");
// Extension "rewrite" installed?
- if ((EXT_IS_ACTIVE("rewrite")) && ($CSS != "1") && ($CSS != "-1")) {
+ if ((EXT_IS_ACTIVE("rewrite")) && ($GLOBALS['output_mode'] != "1") && ($GLOBALS['output_mode'] != "-1")) {
$OUTPUT = REWRITE_LINKS($OUTPUT);
} // END - if
OUTPUT_RAW($OUTPUT);
} elseif ((constant('OUTPUT_MODE') == "render") && (!empty($OUTPUT))) {
// Rewrite links when rewrite extension is active
- if ((EXT_IS_ACTIVE("rewrite")) && ($CSS != "1") && ($CSS != "-1")) {
+ if ((EXT_IS_ACTIVE("rewrite")) && ($GLOBALS['output_mode'] != "1") && ($GLOBALS['output_mode'] != "-1")) {
$OUTPUT = REWRITE_LINKS($OUTPUT);
} // END - if
////////////////////////
// Generate file name //
////////////////////////
- $file = $BASE.$MODE.$template.".tpl";
+ $FQFN = $BASE.$MODE.$template.".tpl";
if ((!empty($GLOBALS['what'])) && ((strpos($template, "_header") > 0) || (strpos($template, "_footer") > 0)) && (($MODE == "guest/") || ($MODE == "member/") || ($MODE == "admin/"))) {
// Select what depended header/footer template file for admin/guest/member area
);
// Probe for it...
- if (FILE_READABLE($file2)) $file = $file2;
+ if (FILE_READABLE($file2)) $FQFN = $file2;
// Remove variable from memory
unset($file2);
}
// Does the special template exists?
- if (!FILE_READABLE($file)) {
+ if (!FILE_READABLE($FQFN)) {
// Reset to default template
- $file = $BASE.$template.".tpl";
+ $FQFN = $BASE.$template.".tpl";
} // END - if
// Now does the final template exists?
- if (FILE_READABLE($file)) {
+ if (FILE_READABLE($FQFN)) {
// The local file does exists so we load it. :)
- $tmpl_file = READ_FILE($file);
+ $tmpl_file = READ_FILE($FQFN);
// Replace ' to our own chars to preventing them being quoted
while (strpos($tmpl_file, "'") !== false) { $tmpl_file = str_replace("'", '{QUOT}', $tmpl_file); }
} elseif ((IS_ADMIN()) || ((isBooleanConstantAndTrue('mxchange_installing')) && (!isBooleanConstantAndTrue('mxchange_installed')))) {
// Only admins shall see this warning or when installation mode is active
$ret = "<br /><span class=\"guest_failed\">".TEMPLATE_404."</span><br />
-(".basename($file).")<br />
+(".basename($FQFN).")<br />
<br />
".TEMPLATE_CONTENT."
<pre>".print_r($content, true)."</pre>
}
//
function GET_LANGUAGE() {
- global $cacheArray;
-
// Set default return value to default language from config
$ret = constant('DEFAULT_LANG');
if (!empty($_GET['mx_lang'])) {
// Accept only first 2 chars
$lang = substr($_GET['mx_lang'], 0, 2);
- } elseif (isset($cacheArray['language'])) {
+ } elseif (isset($GLOBALS['cache_array']['language'])) {
// Use cached
- $ret = $cacheArray['language'];
+ $ret = $GLOBALS['cache_array']['language'];
} elseif (!empty($lang)) {
// Check if main language file does exist
if (FILE_READABLE(constant('PATH')."inc/language/".$lang.".php")) {
}
// Cache entry
- $cacheArray['language'] = $ret;
+ $GLOBALS['cache_array']['language'] = $ret;
// Return value
return $ret;
// Check for admin/guest/member templates
if (strpos($template, "admin_") > -1) {
// Admin template found
- $file = $BASE."admin/".$template.".tpl";
+ $FQFN = $BASE."admin/".$template.".tpl";
} elseif (strpos($template, "guest_") > -1) {
// Guest template found
- $file = $BASE."guest/".$template.".tpl";
+ $FQFN = $BASE."guest/".$template.".tpl";
} elseif (strpos($template, "member_") > -1) {
// Member template found
- $file = $BASE."member/".$template.".tpl";
+ $FQFN = $BASE."member/".$template.".tpl";
} else {
// Test for extension
$test = substr($template, 0, strpos($template, "_"));
if (EXT_IS_ACTIVE($test)) {
// Set extra path to extension's name
- $file = $BASE.$test."/".$template.".tpl";
+ $FQFN = $BASE.$test."/".$template.".tpl";
} else {
// No special filename
- $file = $BASE.$template.".tpl";
+ $FQFN = $BASE.$template.".tpl";
}
}
// Does the special template exists?
- if (!FILE_READABLE($file)) {
+ if (!FILE_READABLE($FQFN)) {
// Reset to default template
- $file = $BASE.$template.".tpl";
+ $FQFN = $BASE.$template.".tpl";
} // END - if
// Now does the final template exists?
$newContent = "";
- if (FILE_READABLE($file)) {
+ if (FILE_READABLE($FQFN)) {
// The local file does exists so we load it. :)
- $tmpl_file = READ_FILE($file);
+ $tmpl_file = READ_FILE($FQFN);
$tmpl_file = SQL_ESCAPE($tmpl_file);
// Run code
}
//
function LOAD_URL($URL, $addUrlData=true) {
- global $CSS, $footer;
-
// Compile out URI codes
$URL = compileUriCode($URL);
// Build key string
$keys = constant('SITE_KEY').":".constant('DATE_KEY');
- if (getConfig('secret_key') != null) $keys .= ":".getConfig('secret_key');
- if (getConfig('file_hash') != null) $keys .= ":".getConfig('file_hash');
+ if (isConfigEntrySet('secret_key')) $keys .= ":".getConfig('secret_key');
+ if (isConfigEntrySet('file_hash')) $keys .= ":".getConfig('file_hash');
$keys .= ":".date("d-m-Y (l-F-T)", bigintval(getConfig('patch_ctime')));
- if (getConfig('master_salt') != null) $keys .= ":".getConfig('master_salt');
+ if (isConfigEntrySet('master_salt')) $keys .= ":".getConfig('master_salt');
// Build string from misc data
$data = $code.":".$uid.":".$DATA;
// Calculate number for generating the code
$a = $code + constant('_ADD') - 1;
- if (getConfig('master_hash') != null) {
+ if (isConfigEntrySet('master_hash')) {
// Generate hash with master salt from modula of number with the prime number and other data
$saltedHash = generateHash(($a % constant('_PRIME')).":".$server.":".$keys.":".$data.":".date("d-m-Y (l-F-T)", time()).":".$a, getConfig('master_salt'));
}
// Insert the code in $img_code into jpeg or PNG image
-function GENERATE_IMAGE ($img_code, $header=true) {
+function GENERATE_IMAGE ($img_code, $headerSent=true) {
if ((strlen($img_code) > 6) || (empty($img_code)) || (getConfig('code_length') == 0)) {
// Stop execution of function here because of over-sized code length
return;
- } elseif (!$header) {
+ } elseif (!$headerSent) {
// Return in an HTML code code
return "<img src=\"{!URL!}/img.php?code=".$img_code."\" alt=\"Image\" />\n";
}
// Unset/set session variables
function set_session ($var, $value) {
- global $CSS;
-
// Abort in CSS mode here
- if ($CSS == 1) return true;
+ if ($GLOBALS['output_mode'] == 1) return true;
// Trim value and session variable
$var = trim(SQL_ESCAPE($var)); $value = trim($value);
// Check wether a boolean constant is set
// Taken from user comments in PHP documentation for function constant()
function isBooleanConstantAndTrue($constName) { // : Boolean
- global $cacheArray;
-
// Failed by default
$res = false;
// In cache?
- if (isset($cacheArray['const'][$constName])) {
+ if (isset($GLOBALS['cache_array']['const'][$constName])) {
// Use cache
//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): ".$constName."-CACHE!<br />\n";
- $res = $cacheArray['const'][$constName];
+ $res = $GLOBALS['cache_array']['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
- $cacheArray['const'][$constName] = $res;
+ $GLOBALS['cache_array']['const'][$constName] = $res;
}
//* DEBUG: */ var_dump($res);
}
// Returns wether the value of the session variable or NULL if not set
function get_session ($var) {
- global $cacheArray;
-
// Default is not found! ;-)
$value = null;
// Is the variable there or cached values?
- if (isset($cacheArray['session'][$var])) {
+ if (isset($GLOBALS['cache_array']['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];
+ $value = $GLOBALS['cache_array']['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
- $cacheArray['session'][$var] = $value;
+ $GLOBALS['cache_array']['session'][$var] = $value;
} // END - if
// Return the value
}
// Debug message logger
-function DEBUG_LOG ($file, $line, $message, $force=true) {
+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($file)."|".$line."|".strip_tags($message)."\n");
+ fwrite($fp, date("d.m.Y|H:i:s", time())."|".basename($funcFile)."|".$line."|".strip_tags($message)."\n");
fclose($fp);
} // END - if
}
while ($baseFile = readdir($dirPointer)) {
// Load file only if extension is active
// Make full path
- $file = $baseDir.$baseFile;
+ $FQFN = $baseDir.$baseFile;
// Is this a valid reset file?
//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):baseDir={$baseDir},prefix={$prefix},baseFile={$baseFile}<br />\n";
- if ((FILE_READABLE($file)) && (substr($baseFile, 0, strlen($prefix)) == $prefix) && (substr($baseFile, -4, 4) == ".php")) {
+ 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);
// Is the extension valid and active?
if (($extId > 0) && (EXT_IS_ACTIVE($extName))) {
// Then add this file
- $INCs[] = $file;
+ $INCs[] = $FQFN;
} elseif ($extId == 0) {
// Add non-extension files as well
- $INCs[] = $file;
+ $INCs[] = $FQFN;
}
} // END - if
} // END - while
// Rebuild cache
function REBUILD_CACHE ($cache, $inc="") {
- global $cacheInstance, $CSS;
-
// Shall I remove the cache file?
- if ((EXT_IS_ACTIVE("cache")) && (is_object($cacheInstance))) {
+ if ((EXT_IS_ACTIVE("cache")) && (is_object($GLOBALS['cache_instance']))) {
// Rebuild cache
- if ($cacheInstance->loadCacheFile($cache)) {
+ if ($GLOBALS['cache_instance']->loadCacheFile($cache)) {
// Destroy it
- $cacheInstance->destroyCacheFile();
+ $GLOBALS['cache_instance']->destroyCacheFile();
} // END - if
// Include file given?
// Purge admin menu cache
function CACHE_PURGE_ADMIN_MENU ($id=0, $action="", $what="", $str="") {
- global $cacheInstance;
-
// 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($cacheInstance)) {
+ } elseif (!is_object($GLOBALS['cache_instance'])) {
// No cache instance!
DEBUG_LOG(__FUNCTION__, __LINE__, " No cache instance found.");
return false;
// Get current theme name
function GET_CURR_THEME() {
- global $INC_POOL, $CSS, $cacheArray;
+ global $INC_POOL;
// The default theme is 'default'... ;-)
$ret = "default";
// Set default theme
set_session('mxchange_theme', $ret);
} elseif ((isSessionVariableSet('mxchange_theme')) && (GET_EXT_VERSION("sql_patches") >= "0.1.4")) {
- //die("<pre>".print_r($cacheArray['themes'], true)."</pre>");
+ //die("<pre>".print_r($GLOBALS['cache_array']['themes'], true)."</pre>");
// Get theme from cookie
$ret = get_session('mxchange_theme');
// Fix it to default
$ret = "default";
} // END - if
- } elseif ((!isBooleanConstantAndTrue('mxchange_installed')) && ((isBooleanConstantAndTrue('mxchange_installing')) || ($CSS == true)) && ((!empty($_GET['theme'])) || (!empty($_POST['theme'])))) {
+ } elseif ((!isBooleanConstantAndTrue('mxchange_installed')) && ((isBooleanConstantAndTrue('mxchange_installing')) || ($GLOBALS['output_mode'] == true)) && ((!empty($_GET['theme'])) || (!empty($_POST['theme'])))) {
// Prepare FQFN for checking
$theme = sprintf("%stheme/%s/theme.php", constant('PATH'), SQL_ESCAPE($_GET['theme']));
// Get id from theme
function THEME_GET_ID ($name) {
- global $cacheArray;
-
// Is the extension "theme" installed?
if (!EXT_IS_ACTIVE("theme")) {
// Then abort here
$id = 0;
// Is the cache entry there?
- if (isset($cacheArray['themes']['id'][$name])) {
+ if (isset($GLOBALS['cache_array']['themes']['id'][$name])) {
// Get the version from cache
- $id = $cacheArray['themes']['id'][$name];
+ $id = $GLOBALS['cache_array']['themes']['id'][$name];
// Count up
incrementConfigEntry('cache_hits');
// Writes content to a file
function WRITE_FILE ($FQFN, $content) {
+ // Is the file writeable?
+ if ((FILE_READABLE($FQFN)) && (!is_writeable($FQFN)) && (!chmod($FQFN, 0644))) {
+ // Not writeable!
+ DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("File %s not writeable.", basename($FQFN)));
+
+ // Failed! :(
+ return false;
+ } // END - if
+
+ // By default all is failed...
+ $return = false;
+
// Is the function there?
if (function_exists('file_put_contents')) {
// Write it directly
- file_put_contents($FQFN, $content);
+ $return = file_put_contents($FQFN, $content);
} else {
// Write it with fopen
$fp = fopen($FQFN, 'w') or mxchange_die("Cannot write file ".basename($FQFN)."!");
fclose($fp);
// Set CHMOD rights
- chmod($FQFN, 0644);
+ $return = chmod($FQFN, 0644);
}
+
+ // Return status
+ return $return;
}
// Generates an error code from given account status
// Loads an include file once
function LOAD_INC_ONCE ($INC) {
- global $cacheArray;
-
// Is it not loaded?
- if (!isset($cacheArray['load_once'][$INC])) {
+ if (!isset($GLOBALS['cache_array']['load_once'][$INC])) {
// Then try to load it
LOAD_INC($INC);
// And mark it as loaded
- $cacheArray['load_once'][$INC] = true;
+ $GLOBALS['cache_array']['load_once'][$INC] = true;
} // END - if
}
return $decodedString;
}
+// Wtites data to a config.php-style file
+// @TODO Rewrite this function to use READ_FILE() and WRITE_FILE()
+function changeDataInFile ($FQFN, $comment, $prefix, $suffix, $DATA, $seek=0) {
+ // Initialize some variables
+ $done = false;
+ $seek++;
+ $next = -1;
+ $found = false;
+
+ // Is the file there and read-/write-able?
+ if ((FILE_READABLE($FQFN)) && (is_writeable($FQFN))) {
+ $search = "CFG: ".$comment;
+ $tmp = $FQFN.".tmp";
+
+ // Open the source file
+ $fp = @fopen($FQFN, 'r') or OUTPUT_HTML("<strong>READ:</strong> ".$FQFN."<br />");
+
+ // Is the resource valid?
+ if (is_resource($fp)) {
+ // Open temporary file
+ $fp_tmp = @fopen($tmp, 'w') or OUTPUT_HTML("<strong>WRITE:</strong> ".$tmp."<br />");
+
+ // Is the resource again valid?
+ if (is_resource($fp_tmp)) {
+ while (!feof($fp)) {
+ // Read from source file
+ $line = fgets ($fp, 1024);
+
+ if (strpos($line, $search) > -1) { $next = 0; $found = true; }
+
+ if ($next > -1) {
+ if ($next === $seek) {
+ $next = -1;
+ $line = $prefix . $DATA . $suffix."\n";
+ } else {
+ $next++;
+ }
+ }
+
+ // Write to temp file
+ fputs($fp_tmp, $line);
+ }
+
+ // Close temp file
+ fclose($fp_tmp);
+
+ // Finished writing tmp file
+ $done = true;
+ }
+
+ // Close source file
+ fclose($fp);
+
+ if (($done) && ($found)) {
+ // Copy back tmp file and delete tmp :-)
+ @copy($tmp, $FQFN);
+ @unlink($tmp);
+ define('_FATAL', false);
+ } elseif (!$found) {
+ OUTPUT_HTML("<strong>CHANGE:</strong> 404!");
+ define('_FATAL', true);
+ } else {
+ OUTPUT_HTML("<strong>TMP:</strong> UNDONE!");
+ define('_FATAL', true);
+ }
+ }
+ } else {
+ // File not found, not readable or writeable
+ OUTPUT_HTML("<strong>404:</strong> ".$FQFN."<br />");
+ }
+}
+
//////////////////////////////////////////////////
// AUTOMATICALLY RE-GENERATED MISSING FUNCTIONS //
//////////////////////////////////////////////////