+ // - 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()) && (!isSessionValid())) {
+ // 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'] = '<form accept-charset=\"UTF-8\"';