return str_replace($data['matches'][0][$data['key']], $replacer, escapeQuotes($data['code']));
}
+// Private function to determine wether we have a special expression function avaible
+// (mostly located in wrapper-functions.php)
+function isExpressionFunctionAvaiable ($data) {
+ // Get the enty we need
+ $entry = $data['matches'][4][$data['key']];
+
+ // Do we have cache?
+ if (!isset($GLOBALS['expression_function_available'][$entry])) {
+ // Init function name
+ $functionName = 'get';
+
+ // Explode it in an array
+ foreach (explode('_', $entry) as $piece) {
+ // Add non-empty parts
+ if (!empty($piece)) {
+ // Add it
+ $functionName .= ucfirst(strtolower($piece));
+ } // END - if
+ } // END - foreach
+
+ // Is that function there?
+ if (function_exists($functionName)) {
+ // Cache it all
+ $GLOBALS['expression_function_name'][$entry] = $functionName;
+ $GLOBALS['expression_function_available'][$entry] = true;
+ } else {
+ // Not avaiable
+ logDebugMessage(__FUNCTION__, __LINE__, 'Expression function ' . $functionName . ' not found. Please consider adding it to improve execution speed.');
+
+ // And cache it
+ $GLOBALS['expression_function_available'][$entry] = false;
+ }
+ } elseif ($GLOBALS['expression_function_available'][$entry] == false) {
+ // Debug message
+ logDebugMessage(__FUNCTION__, __LINE__, 'Expression function for entry ' . $entry . ' requested but not found.');
+ }
+
+ // Return cache
+ return $GLOBALS['expression_function_available'][$entry];
+}
+
+// Getter for above expression function
+function getExpressionFunction ($data) {
+ // Get the enty we need
+ $entry = $data['matches'][4][$data['key']];
+
+ // Return it
+ return $GLOBALS['expression_function_name'][$entry];
+}
+
// Expression call-back function for getCode() calls
function doExpressionCode ($data) {
// Replace the code
} // END - if
// Generate replacer
- $replacer = sprintf("&ext=%s&ver=%s&rev={DQUOTE} . getConfig('CURR_SVN_REVISION') . {DQUOTE}", $data['matches'][4][$data['key']], $replacer);
+ $replacer = sprintf("&ext=%s&ver=%s&rev={?CURR_SVN_REVISION?}", $data['matches'][4][$data['key']], $replacer);
// Replace it and insert parameter for GET request
$code = replaceExpressionCode($data, $replacer);
// Expression call-back function for getting configuration data
// @TODO FILTER_COMPILE_CONFIG does not handle call-back functions so we handle it here again
function doExpressionConfig ($data) {
- // Default replacer is the config value itself
- $replacer = '{DQUOTE} . ' . $data['callback'] . '(getConfig(' . "'" . $data['matches'][4][$data['key']] . "'" . ')) . {DQUOTE}';
+ // Do we have a special expression function for it?
+ if (isExpressionFunctionAvaiable($data)) {
+ // Then use it
+ $replacer = '{DQUOTE} . ' . $data['callback'] . '('.getExpressionFunction($data).'(' . "'" . $data['matches'][4][$data['key']] . "'" . ')) . {DQUOTE}';
+ } else {
+ // Default replacer is the config value itself
+ $replacer = '{DQUOTE} . ' . $data['callback'] . '(getConfig(' . "'" . $data['matches'][4][$data['key']] . "'" . ')) . {DQUOTE}';
+ }
// Replace the config entry
$code = replaceExpressionCode($data, $replacer);