-function FILTER_COMPILE_CONFIG ($code) {
- // Compile {?some_var?} to getConfig('some_var')
- preg_match_all('/\{\?(([a-zA-Z0-9-_]+)*)\?\}/', $code, $matches);
+function FILTER_COMPILE_CONFIG ($code, $compiled = false) {
+ // Save the uncompiled code
+ $uncompiled = $code;
+
+ // Do we have cache?
+ if (!isset($GLOBALS['compiled_config'][$code])) {
+ // Compile {?some_var?} to getConfig('some_var')
+ preg_match_all('/\{\?(([a-zA-Z0-9-_]+)*)\?\}/', $code, $matches);
+
+ // Some entries found?
+ if ((count($matches) > 0) && (count($matches[0]) > 0)) {
+ // Replace all matches
+ foreach ($matches[0] as $key => $match) {
+ // Do we have cache?
+ if (!isset($GLOBALS['compile_config'][$matches[1][$key]])) {
+ // Is the config valid?
+ if (isConfigEntrySet($matches[1][$key])) {
+ // Set it for caching
+ $GLOBALS['compile_config'][$matches[1][$key]] = "\".getConfig('" . $matches[1][$key] . "').\"";
+ } elseif (isConfigEntrySet('default_' . strtoupper($matches[1][$key]))) {
+ // Use default value
+ $GLOBALS['compile_config'][$matches[1][$key]] = "\".getConfig('" . 'DEFAULT_' . strtoupper($matches[1][$key]) . "').\"";
+ } elseif (isMessageIdValid('DEFAULT_' . strtoupper($matches[1][$key]))) {
+ // No config, try the language system
+ $GLOBALS['compile_config'][$matches[1][$key]] = "\".getMessage('". 'DEFAULT_' . strtoupper($matches[1][$key]) . "').\"";
+ } else {
+ // Unhandled!
+ $GLOBALS['compile_config'][$matches[1][$key]] = '!' . $matches[1][$key] . '!';
+ }
+ } // END - if