'.encodeEntities(print_r($data, TRUE)).''); // If the value is empty, we don't add it //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value[' . gettype($data['value']) . ']=' . $data['value']); if ((empty($data['value'])) && ($data['value'] != '0')) { // No value is set $replacer = '{DQUOTE} . ' . $data['extra_func2'] . '(' . $data['extra_func'] . '(' . $data['callback'] . '())) . {DQUOTE}'; } elseif (isXmlTypeBool($data['value'])) { // Boolean value detected $replacer = '{DQUOTE} . ' . $data['extra_func2'] . '(' . $data['extra_func'] . '(' . $data['callback'] . '(' . $data['value'] . '))) . {DQUOTE}'; } else { // Some string/integer value is set $replacer = '{DQUOTE} . ' . $data['extra_func2'] . '(' . $data['extra_func'] . '(' . $data['callback'] . "('" . $data['value'] . "'))) . {DQUOTE}"; } } // END - if // Replace the config entry //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'replacer=' . $replacer); $code = replaceExpressionCode($data, $replacer); // Return replaced code return $code; } // Expression call-back function for calling filters function doExpressionFilter ($data) { // Construct replacement $replacer = "{DQUOTE} . runFilterChain('" . $data['matches'][4][$data['key']] . "') . {DQUOTE}"; // Run the filter and insert result $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) { // Debug message //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'callback=' . $data['callback'] . ',extra_func=' . $data['extra_func'] . ',value=' . $data['value']); // Message string replacement depends on if message is masked if ((isMessageMasked($data['callback'], FALSE)) && ((!empty($data['extra_func'])) || ($data['extra_func'] == '0'))) { // Message should be masked $replacer = "{DQUOTE} . getMaskedMessage('" . $data['callback'] . "', '" . $data['extra_func'] . "') . {DQUOTE}"; } elseif (!empty($data['value'])) { // value is set, so it is masked message $replacer = "{DQUOTE} . getMaskedMessage('" . $data['callback'] . "', '" . $data['value'] . "') . {DQUOTE}"; } else { // Regular message $replacer = "{DQUOTE} . getMessage('" . $data['callback'] . "') . {DQUOTE}"; } // Replace the code $code = replaceExpressionCode($data, $replacer); // Return the (maybe) replaced code return $code; } // Expression call-back for template functions function doExpressionTemplate ($data) { // Construct call-back function name $callbackFunction = 'doTemplate' . ucfirst($data['callback']); // Init replacer $replacer = ''; // Is the function there? if (!isset($GLOBALS['current_template'])) { // This is very bad and needs fixing reportBug(__FUNCTION__, __LINE__, 'current_template in GLOBALS not set, callbackFunction=' . $callbackFunction . ',function_exists()=' . intval(function_exists($callbackFunction))); } elseif (!function_exists($callbackFunction)) { // Log missing function only in debug mode if (isDebugModeEnabled()) { // Log it here logDebugMessage(__FUNCTION__, __LINE__, 'Call-back function ' . $callbackFunction . ' does not exist.'); } // END - if } else { // Do the replacement //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'template='.$GLOBALS['current_template']); $replacer = '{DQUOTE} . ' . $callbackFunction . '(' . chr(39) . $GLOBALS['current_template'] . chr(39) . ', TRUE'; // Is 'value' set? if (!empty($data['value'])) { // Then include it as well $replacer .= ', ' . chr(39) . $data['value'] . chr(39); } // END - if // Replacer is ready $replacer .= ') . {DQUOTE}'; } // Replace the code $code = replaceExpressionCode($data, $replacer); // Return the (maybe) replaced code return $code; } // Expression call-back for math functions function doExpressionMath ($data) { // Do the replacement //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'template='.$GLOBALS['current_template']); $replacer = '{DQUOTE} . doCalculate' . $data['callback'] . '(' . $data['value'] . ') . {DQUOTE}'; // Replace the code $code = replaceExpressionCode($data, $replacer); // Load include once loadIncludeOnce('inc/math-functions.php'); // Return the (maybe) replaced code return $code; } // Expression call-back for GET request function doExpressionGet ($data) { // Construct the replacer: // - GET request element $replacer = '{%pipe,getRequestElement'; // Add more call-back functions? if (!empty($data['callback'])) { // - Okay, add them $replacer .= ',' . $data['callback']; } // END - if // - Finalize replacer $replacer .= '=' . $data['value'] . '%}'; // Replace the code $code = replaceExpressionCode($data, $replacer); // Return the (maybe) replaced code return $code; } // Expression call-back for POST request function doExpressionPost ($data) { // Construct the replacer: // - POST request element $replacer = '{%pipe,postRequestElement'; // Add more call-back functions? if (!empty($data['callback'])) { // - Okay, add them $replacer .= ',' . $data['callback']; } // END - if // - Finalize replacer $replacer .= '=' . $data['value'] . '%}'; // Replace the code $code = replaceExpressionCode($data, $replacer); // Return the (maybe) replaced code return $code; } // Expression call-back for session data function doExpressionSession ($data) { // Construct the replacer: // - Session element $replacer = '{%pipe,getSession'; // Add more call-back functions? if (!empty($data['callback'])) { // - Okay, add them $replacer .= ',' . $data['callback']; } // END - if // - Finalize replacer $replacer .= '=' . $data['value'] . '%}'; // Debug message //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $data['value'] . ',replacer=' . $replacer); // Replace the code $code = replaceExpressionCode($data, $replacer); // Return the (maybe) replaced code return $code; } /** * Expression call-back for session piplining, this means: * * 1) Read session data * 2) Wrap the raw data into {%pipe,fooFunction=$rawValue%} */ function doExpressionSessionPipe ($data) { // Get the session data $rawValue = getSession($data['value']); // Construct the replacer $replacer = '{%pipe,' . $data['callback'] . '=' . $rawValue . '%}'; // Debug message //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $data['value'] . ',rawValue=' . $rawValue . ',replacer=' . $replacer); // Replace the code $code = replaceExpressionCode($data, $replacer); // Return the (maybe) replaced code return $code; } // Expression call-back for formulars function doExpressionForm ($data) { // Default method is GET, target is _self $data['__form_method'] = 'get'; $data['__form_target'] = '_self'; $data['__form_name'] = 'form'; $data['__form_id'] = 'form'; $data['__server'] = ''; // Check which method/target is set foreach (array('callback', 'extra_func', 'extra_func2') as $key) { // Make lower-case $value = strtolower($data[$key]); // Is formMethodPost set? if ($value == 'formmethodpost') { // Use it $data['__form_method'] = 'post'; } elseif (($value == 'formmethodpost') && (!isSpider()) && (!isValidSession())) { // Then expand 'value' with session id if (strpos($data['value'], '?') !== FALSE) { // '?' is set $data['value'] .= '&'; } else { // Is not set $data['value'] .= '?'; } // Append session's name and id $data['value'] .= session_name() . '=' . session_id(); } elseif (substr($value, 0, 10) == 'formtarget') { // Form target is found $data['__form_target'] = substr($value, 10); } elseif (substr($value, 0, 8) == 'formname') { // Form name is found $data['__form_name'] = substr($value, 8); } elseif (substr($value, 0, 6) == 'formid') { // Form id found $data['__form_id'] = substr($value, 6); } elseif (substr($value, 0, 6) == 'server') { // {%server,foo%} found $data['__server'] = '{%server,' . substr($value, 6) . '%}'; } } // END - foreach // Generate the replacement code which is the opening form tag $data['__replacer'] = '' . PHP_EOL; /* * Call a filter chain to allow more hidden fields being added at the end * of the form. */ $data = runFilterChain('close_form_fields', $data); // Replace the code $code = replaceExpressionCode($data, $data['__replacer']); // Return the (maybe) replaced code return $code; } // Expression call-back to handle jquery inclusion function doExpressionJquery ($data) { // Default is compressed $jquery = 'jquery'; $data['output_mode'] = ''; // Is there JS-mode? if ($data['callback'] == 'js') { // Switch to it $data['output_mode'] = ',js'; } // END - if // Is there a value? if ($data['callback'] == 'js') { // Then load special library $jquery .= '-' . $data['value']; } // END - if // Is debug mode enabled? if ((isGetRequestElementSet('jquery')) || (isSessionVariableSet('jquery'))) { // Then use uncompressed $jquery .= '.uncompressed'; // Remember it in session setSession('jquery', '1'); } // END - if // Add {%url%} around it $replacer = '{%url' . $data['output_mode'] . '=js/' . $jquery . '.js?dummy=1%}'; // Replace the code $code = replaceExpressionCode($data, $replacer); // Return the (maybe) replaced code return $code; } // [EOF] ?>