* -------------------------------------------------------------------- *
* File : config-functions.php *
* -------------------------------------------------------------------- *
- * Short description : Many non-MySQL functions (also file access) *
+ * Short description : Configuration functions *
* -------------------------------------------------------------------- *
- * Kurzbeschreibung : Viele Nicht-MySQL-Funktionen (auch Dateizugriff) *
+ * Kurzbeschreibung : Konfigurationsfunktionen *
* -------------------------------------------------------------------- *
* $Revision:: $ *
* $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 *
- * For more information visit: http://www.mxchange.org *
+ * Copyright (c) 2009 - 2012 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
// Init not if already found
if (isConfigurationLoaded()) {
// Already initialized
- debug_report_bug(__FUNCTION__, __LINE__, 'Configuration is already initialized.');
+ reportBug(__FUNCTION__, __LINE__, 'Configuration is already initialized.');
} // END - if
// Set a minimum of configuration, required to by-pass some error triggers in getConfig()
// Getter for $GLOBALS['config'] entries
function getConfig ($configEntry) {
- // Default value
- $value = null;
-
// Is the entry there?
if (!isConfigEntrySet($configEntry)) {
// Raise an error of missing entries
- debug_report_bug(__FUNCTION__, __LINE__, sprintf("Configuration entry <span class=\"data\">%s</span> is missing.", $configEntry));
+ reportBug(__FUNCTION__, __LINE__, sprintf("Configuration entry <span class=\"data\">%s</span> is missing.", $configEntry));
} // END - if
// Return it
$GLOBALS['config'][$configEntry] = $value;
}
-// Checks wether the given config entry is set
+// Checks whether the given config entry is set
function isConfigEntrySet ($configEntry) {
- //* DEBUG: */ debugOutput(__FUNCTION__.':'.$configEntry.'='.intval(isset($GLOBALS['config'][$configEntry])));
- return (isset($GLOBALS['config'][$configEntry]));
+ //* DEBUG: */ debugOutput(__FUNCTION__ . ':' . $configEntry . '=' . intval(isset($GLOBALS['config'][$configEntry])));
+ return ((isset($GLOBALS['config'][$configEntry])) || (array_key_exists($configEntry, $GLOBALS['config'])));
}
// Merges $GLOBALS['config'] with data in given array
function mergeConfig ($newConfig) {
+ // Merge current configuration with new one
$GLOBALS['config'] = merge_array(getConfigArray(), $newConfig);
}
// Increment or init with given value or 1 as default the given config entry
function incrementConfigEntry ($configEntry, $value=1) {
- // Increment it if set or init it with 1
+ // Increment it if set or init it with $value
if (isConfigEntrySet($configEntry)) {
$GLOBALS['config'][$configEntry] += $value;
} else {
}
}
-// Checks wether the configuration array is set so the config is loaded
+// Checks whether the configuration array is set so the config is loaded
function isConfigurationLoaded () {
// Check all
return (isset($GLOBALS['config']['config']));
copyFileVerified(getPath() . 'inc/config-local.php.dist', getCachePath() . 'config-local.php', 0644);
// First of all, load the old one!
- $oldConfig = explode("\n", readFromFile(getPath() . 'inc/config.php'));
+ $oldConfig = explode(chr(10), readFromFile(getPath() . 'inc/config.php'));
// Now, analyze every entry
$done = array();
// Is the line found?
if ((substr($line, 0, strlen($old)) == $old) && (!isset($done[$old]))) {
- // Entry found!
+ // Entry found
//* DEBUG: */ debugOutput(secureString($line) . ' - FOUND!');
// Eval the line...
// Default comment
$comment = str_replace('_', '-', $new);
- // Do we have a special comment?
+ // Is there a special comment?
if (isset($comments[$new])) {
// Then use it
$comment = $comments[$new];
} // END - if
- // Do we need to make $new lowercase?
+ // Does $new needs to be lower-case?
$oldNew = $new;
if (in_array($new, $lowerCase)) {
// Then do so... :)
$new = strtolower($new);
} // END - if
- /// ... and write it to the new config
+ // ... and write it to the new config
//* DEBUG: */ debugOutput('function=' . $function . ',new=' . $new . ',comment=' . $comment);
- changeDataInFile(getCachePath() . 'config-local.php', $comment, $function . "('" . $oldNew . "', \"", '");', constant($new), 0);
+ changeDataInInclude(getCachePath() . 'config-local.php', $comment, $function . "('" . $oldNew . "', \"", '");', constant($new), 0);
//* DEBUG: */ debugOutput('CHANGED!');
// Mark it as done
// Is the $MySQL found?
if (substr($line, 0, 6) == '$MySQL') {
- // Okay found!
+ // Okay, found
$found = true;
} elseif ($found === true) {
// Now check this row
$key = substr(trim($parts[0]), 1, -1); $value = substr(trim($parts[1]), 1, -2);
// We can now save the right part in new config file
- changeDataInFile(getCachePath() . 'config-local.php', $comments[$key], " '".$key."' => \"", '",', $value, 0);
+ changeDataInInclude(getCachePath() . 'config-local.php', $comments[$key], " '".$key."' => \"", '",', $value, 0);
}
} // END - foreach
}
// Update config entries
-function updateConfiguration ($entries, $values, $updateMode='', $config = '0') {
+function updateConfiguration ($entries, $values, $updateMode = '', $config = '0') {
// Do not update config in CSS mode
if ((isCssOutputMode()) || (isRawOutputMode()) || (isInstallationPhase())) {
+ // This logger line may be very noisy
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Not updating configuration. entries[]=' . gettype($entries) . ',values[]=' . gettype($values) . ',updateMode=' . $updateMode . ',config=' . $config . ',isCssOutputMode()=' . intval(isCssOutputMode()) . ',isRawOutputMode()=' . intval(isRawOutputMode()) . ',isInstallationPhase()=' . intval(isInstallationPhase()));
return;
} // END - if
- // Do we have multiple entries?
+ // Default is empty SQL
+ $SQL = '';
+
+ // Is there multiple entries?
if (is_array($entries)) {
// Walk through all
- $all = '';
foreach ($entries as $idx => $entry) {
// Update mode set?
if (!empty($updateMode)) {
// Update entry
- $all .= sprintf("`%s`=`%s`%s%s,", $entry, $entry, $updateMode, (float)$values[$idx]);
+ $SQL .= sprintf("`%s`=`%s`%s%s,", $entry, $entry, $updateMode, (float) $values[$idx]);
} else {
// Check if string or number but no array
if (is_array($values[$idx])) {
// Arrays must be fixed...
- debug_report_bug(__FUNCTION__, __LINE__, 'values[' . $idx . '] should not be an array! Content=<pre>'.print_r($values[$idx], true).'</pre>');
- } elseif (($values[$idx] + 0) === $values[$idx]) {
- // Number detected
- $all .= sprintf("`%s`=%s,", $entry, (float)$values[$idx]);
-
- // Set it in config as well
- setConfigEntry($entry, $values[$idx]);
+ reportBug(__FUNCTION__, __LINE__, 'values[' . $idx . '] should not be an array! Content=<pre>'.print_r($values[$idx], true).'</pre>');
} elseif ($values[$idx] == 'UNIX_TIMESTAMP()') {
// Function UNIX_TIMESTAMP() detected
- $all .= sprintf("`%s`=UNIX_TIMESTAMP(),", $entry);
+ $SQL .= sprintf("`%s`=UNIX_TIMESTAMP(),", $entry);
// Set timestamp in array as well
setConfigEntry($entry, time());
+ } elseif (!empty($updateMode)) {
+ // Is the value zero?
+ if ($values[$idx] == '0') {
+ // Then skip it
+ continue;
+ } // END - if
+
+ // Update mode set
+ // @TODO Call setConfigEntry() somehow
+ $SQL .= $entries = sprintf("`%s`=`%s`%s%s", $entry, $entry, $updateMode, (float) $values[$idx]);
+ } elseif (($values[$idx] + 0) === $values[$idx]) {
+ // Number detected
+ $SQL .= sprintf("`%s`=%s,", $entry, (float) $values[$idx]);
+
+ // Set it in config as well
+ setConfigEntry($entry, $values[$idx]);
} else {
// String detected
- $all .= sprintf("`%s`='%s',", $entry, SQL_ESCAPE($values[$idx]));
+ $SQL .= sprintf("`%s`='%s',", $entry, SQL_ESCAPE($values[$idx]));
// Set it in config as well
setConfigEntry($entry, $values[$idx]);
} // END - foreach
// Remove last comma
- $entries = substr($all, 0, -1);
+ $SQL = substr($SQL, 0, -1);
} elseif (!empty($updateMode)) {
+ // Is the value zero?
+ if ($values == '0') {
+ // Then skip it
+ continue;
+ } // END - if
+
// Update mode set
- $entries = sprintf("`%s`=`%s`%s%s", $entries, $entries, $updateMode, (float)$values);
+ // @TODO Call setConfigEntry() somehow
+ $SQL = sprintf("`%s`=`%s`%s%s", $entries, $entries, $updateMode, (float) $values);
} elseif (($values + 0) === $values) {
// Number detected
- $entries = sprintf("`%s`=%s", $entries, (float)$values);
+ $SQL = sprintf("`%s`=%s", $entries, (float) $values);
// Set it in config first
- setConfigEntry($entries, (float)$values);
+ setConfigEntry($entries, (float) $values);
} elseif ($values == 'UNIX_TIMESTAMP()') {
// Function UNIX_TIMESTAMP() detected
- $entries = sprintf("`%s`=UNIX_TIMESTAMP()", $entries);
+ $SQL = sprintf("`%s`=UNIX_TIMESTAMP()", $entries);
// Set timestamp in array as well
setConfigEntry($entries, time());
} else {
// Regular entry to update
- $entries = sprintf("`%s`='%s'", $entries, SQL_ESCAPE($values));
+ $SQL = sprintf("`%s`='%s'", $entries, SQL_ESCAPE($values));
// Set it in config as well
setConfigEntry($entries, SQL_ESCAPE($values));
}
// Run database update
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'entries=' . $entries);
- SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_config` SET ".$entries." WHERE `config`=%s LIMIT 1",
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SQL=' . $SQL);
+ SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_config` SET ".$SQL." WHERE `config`=%s LIMIT 1",
array(bigintval($config)), __FUNCTION__, __LINE__);
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'entries=' . $entries . ',affectedRows=' . SQL_AFFECTEDROWS());
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SQL=' . $SQL . ',affectedRows=' . SQL_AFFECTEDROWS());
// Rebuild cache
rebuildCache('config', 'config');
// Filter for loading configuration
function FILTER_LOAD_CONFIGURATION ($no = '0') {
- // Is the value null, fix it :(
- if (is_null($no)) $no = '0';
+ // Is the value null, it comes from the 'init' filter chain
+ if (is_null($no)) {
+ $no = '0';
+ } // END - if
// Check for cache extension, cache-array and if the requested configuration is in cache
if ((isset($GLOBALS['cache_array']['config'][$no])) && (is_array($GLOBALS['cache_array']['config'][$no]))) {
// Load config from cache
mergeConfig($GLOBALS['cache_array']['config'][$no]);
- // Count cache hits if exists
- if ((isStatsEntrySet('cache_hits')) && (isExtensionActive('cache'))) {
- incrementStatsEntry('cache_hits');
- } // END - if
+ // Count cache hits
+ incrementStatsEntry('cache_hits');
} elseif ((!isExtensionActive('cache')) || (!isset($GLOBALS['cache_array']['config'][$no]))) {
// Load config from DB
$result_config = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_config` WHERE `config`='%s' LIMIT 1",