die();
} // END - if
+// Private function to replace the code
+function replaceExpressionCode ($data, $replacer) {
+ // Replace the code
+ // @TODO is escapeQuotes() enougth for strings with single/double quotes?
+ return str_replace($data['matches'][0][$data['key']], $replacer, escapeQuotes($data['code']));
+}
+
// Expression call-back function for getCode() calls
function doExpressionCode ($data) {
// Replace the code
- $code = str_replace($data['matches'][0][$data['key']], "\" . getCode('" . $data['matches'][4][$data['key']] . "') . \"", $data['code']);
+ $code = str_replace($data['matches'][0][$data['key']], "{DQUOTE} . getCode('" . $data['matches'][4][$data['key']] . "') . {DQUOTE}", $data['code']);
// Return replaced code
return $code;
if ($data['callback'] == 'js') $data['mode'] = 1;
// Handle an URL here
- $replacer = "\" . encodeUrl(\"" . $data['matches'][4][$data['key']] . "\", " . $data['mode'] . ") . \"";
+ $replacer = "{DQUOTE} . encodeUrl('" . $data['matches'][4][$data['key']] . "', " . $data['mode'] . ') . {DQUOTE}';
// Replace it
- $code = str_replace($data['matches'][0][$data['key']], $replacer, $data['code']);
+ $code = replaceExpressionCode($data, $replacer);
// Return replaced code
return $code;
// This will make 'foo_bar' to detectFooBar()
$functionName = "'detect' . implode('', array_map('ucfirst', explode('_', '" . $data['callback'] . "')))";
+ // Generate replacer
+ $replacer = '{DQUOTE} . call_user_func(' . $functionName . ') . {DQUOTE}';
+
// Replace it
- $code = str_replace($data['matches'][0][$data['key']], "\" . call_user_func(" . $functionName . ") . \"", $data['code']);
+ $code = replaceExpressionCode($data, $replacer);
// Return replaced code
return $code;
$functionName = $data['extra_func'] . '(' . $functionName . ')';
} // END - if
+ // Generate replacer
+ $replacer = '{DQUOTE} . ' . $functionName . ' . {DQUOTE}';
+
// Now replace the code
- $code = str_replace($data['matches'][0][$data['key']], "\" . " . $functionName . " . \"", $data['code']);
+ $code = replaceExpressionCode($data, $replacer);
// Return replaced code
return $code;
$functionName = 'getExtension' . ucfirst(strtolower($data['callback']));
// Construct call of the function
- $replacer = "\" . call_user_func_array('" . $functionName . "', array('" . $data['matches'][4][$data['key']] . "', true)) . \"";
+ $replacer = "{DQUOTE} . call_user_func_array('" . $functionName . "', array('" . $data['matches'][4][$data['key']] . "', true)) . {DQUOTE}";
} // END - if
+ // Generate replacer
+ $replacer = sprintf("&ext=%s&ver=%s&rev={DQUOTE} . getConfig('CURR_SVN_REVISION') . {DQUOTE}", $data['matches'][4][$data['key']], $replacer);
+
// Replace it and insert parameter for GET request
- $code = str_replace($data['matches'][0][$data['key']], sprintf("&ext=%s&ver=%s&rev=\" . getConfig('CURR_SVN_REVISION') . \"", $data['matches'][4][$data['key']], $replacer), $data['code']);
+ $code = replaceExpressionCode($data, $replacer);
// Return replaced code
return $code;
// 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) {
- // Read configuration
- $configValue = getConfig($data['matches'][4][$data['key']]);
+ // Default replacer is the config value itself
+ $replacer = '{DQUOTE} . getConfig(' . "'" . $data['matches'][4][$data['key']] . "'" . ') . {DQUOTE}';
+
+ // Is there a call-back function provided?
+ if (!empty($data['callback'])) {
+ // Construct a new expression
+ $replacer = '{%pipe,' . $data['callback'] . ',' . $configValue . '%}';
+ } // END - if
+
+ // Replace the config entry
+ $code = replaceExpressionCode($data, $replacer);
+
+ // Return replaced code
+ return $code;
+}
+
+// Expression call-back function for piping data through functions
+function doExpressionPipe ($data) {
+ // We need callback and extra_func: callback is really the call-back function, extra_func is our value
+ $replacer = $data['extra_func'];
+
+ // Is the extra_func empty and value set?
+ if ((empty($replacer)) && (isset($data['value']))) {
+ // Then use this
+ $replacer = $data['value'];
+ } // END - if
- // Do we have a call-back?
+ // Do we have a call-back? Should always be there!
if (!empty($data['callback'])) {
// Parse it through this function
- $configValue = call_user_func_array($data['callback'], array($configValue));
+ $replacer = '{DQUOTE} . ' . $data['callback'] . "('" . $replacer . "') . {DQUOTE}";
} // END - if
// Replace the config entry
- $code = str_replace($data['matches'][0][$data['key']], $configValue, $data['code']);
+ $code = replaceExpressionCode($data, $replacer);
// Return replaced code
return $code;
// Expression call-back function for calling filters
function doExpressionFilter ($data) {
// Construct replacement
- $replacer = "\" . runFilterChain('" . $data['matches'][4][$data['key']] . "') . \"";
+ $replacer = "{DQUOTE} . runFilterChain('" . $data['matches'][4][$data['key']] . "') . {DQUOTE}";
// Run the filter and insert result
- $code = str_replace($data['matches'][0][$data['key']], $replacer, $data['code']);
+ $code = replaceExpressionCode($data, $replacer);
// Return replaced code
return $code;
}
+// Expression call-back function for validator links
+function doExpressionValidatorLinks ($data) {
+ // Default is nothing
+ $replacer = '';
+
+ // Get the code from data array for replacement/pipe-through
+ $code = $data['code'];
+
+ // Should we generally include validator links?
+ if ((isExtensionInstalled('validator')) && (getConfig('enable_validator') == 'Y') && (!in_array(getModule(), array('admin', 'login')))) {
+ // Load the validator template
+ $replacer = escapeQuotes(loadTemplate('validator_links', true));
+ } // END - if
+
+ // Replace the code
+ $code = replaceExpressionCode($data, $replacer);
+
+ // Return the (maybe) replaced code
+ return $code;
+}
+
+// Expression call-back for dynamic messages
+function doExpressionMessage ($data) {
+ // Message string replacement depends on if message is masked
+ if (isMessageMasked($data['callback'])) {
+ // Message should be masked
+ $replacer = "{DQUOTE} . getMaskedMessage('" . $data['callback'] . "', '" . $data['extra_func'] . "') . {DQUOTE}";
+ } else {
+ // Regular message
+ $replacer = "{DQUOTE} . getMessage('" . $data['callback'] . "') . {DQUOTE}";
+ }
+
+ // Replace the code
+ $code = replaceExpressionCode($data, $replacer);
+
+ // Return the (maybe) replaced code
+ return $code;
+}
+
// [EOF]
?>