X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fexpression-functions.php;h=3aa8026953da4a850835eb16ce2523a65b60e0ba;hp=6d393659b1f49371ddbfa2a5c03ebb3293402191;hb=ee3a0b42f93de7676fca549c866c1c2e6f3f0576;hpb=675778ff98b75b6c5071e2709c2d6b0af86cf79d diff --git a/inc/expression-functions.php b/inc/expression-functions.php index 6d393659b1..3aa8026953 100644 --- a/inc/expression-functions.php +++ b/inc/expression-functions.php @@ -14,12 +14,10 @@ * $Date:: $ * * $Tag:: 0.2.1-FINAL $ * * $Author:: $ * - * Needs to be in all Files and every File needs "svn propset * - * svn:keywords Date Revision" (autoprobset!) at least!!!!!! * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009, 2010 by Mailer Developer Team * - * For more information visit: http://www.mxchange.org * + * Copyright (c) 2009 - 2011 by Mailer Developer Team * + * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * @@ -52,8 +50,8 @@ function replaceExpressionCode ($data, $replacer) { // 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']]; + // Get the enty we need and trim it + $entry = trim($data['matches'][4][$data['key']]); // Do we have cache? if (!isset($GLOBALS['expression_function_available'][$entry])) { @@ -65,14 +63,14 @@ function isExpressionFunctionAvaiable ($data) { // Add non-empty parts if (!empty($piece)) { // Add it - $functionName .= ucfirst(strtolower($piece)); + $functionName .= capitalizeUnderscoreString($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_name'][$entry] = $functionName; $GLOBALS['expression_function_available'][$entry] = true; } else { // Not avaiable @@ -111,10 +109,12 @@ function doExpressionCode ($data) { // Expression call-back function for URLs function doExpressionUrl ($data) { // Do we have JS-mode? - if ($data['callback'] == 'js') $data['mode'] = 1; + if ($data['callback'] == 'js') { + $data['output_mode'] = 1; + } // END - if // Handle an URL here - $replacer = "{DQUOTE} . encodeUrl('" . $data['matches'][4][$data['key']] . "', " . $data['mode'] . ') . {DQUOTE}'; + $replacer = "{DQUOTE} . encodeUrl('" . $data['matches'][4][$data['key']] . "', " . $data['output_mode'] . ') . {DQUOTE}'; // Replace it $code = replaceExpressionCode($data, $replacer); @@ -126,7 +126,7 @@ function doExpressionUrl ($data) { // Expression call-back function for reading data from $_SERVER function doExpressionServer ($data) { // This will make 'foo_bar' to detectFooBar() - $functionName = "'detect' . implode('', array_map('ucfirst', explode('_', '" . $data['callback'] . "')))"; + $functionName = "'detect' . implode('', array_map('firstCharUpperCase', explode('_', '" . $data['callback'] . "')))"; // Generate replacer $replacer = '{DQUOTE} . call_user_func(' . $functionName . ') . {DQUOTE}'; @@ -146,14 +146,14 @@ function doExpressionExt ($data) { // Is the extension installed? if (isExtensionInstalled($data['matches'][4][$data['key']])) { // Construct call-back function name - $functionName = 'getExtension' . ucfirst(strtolower($data['callback'])); + $functionName = 'getExtension' . capitalizeUnderscoreString($data['callback']); // Construct call of the function $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={?CURR_SVN_REVISION?}", $data['matches'][4][$data['key']], $replacer); + $replacer = sprintf("&ext=%s&ver=%s&rev={?CURRENT_REPOSITORY_REVISION?}", $data['matches'][4][$data['key']], $replacer); // Replace it and insert parameter for GET request $code = replaceExpressionCode($data, $replacer); @@ -168,7 +168,7 @@ function doExpressionConfig ($data) { // 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}'; + $replacer = '{DQUOTE} . ' . $data['callback'] . '(' . getExpressionFunction($data) . '()) . {DQUOTE}'; } else { // Default replacer is the config value itself $replacer = '{DQUOTE} . ' . $data['callback'] . '(getConfig(' . "'" . $data['matches'][4][$data['key']] . "'" . ')) . {DQUOTE}'; @@ -188,13 +188,17 @@ function doExpressionPipe ($data) { // Do we have a call-back? Should always be there! if (!empty($data['callback'])) { - //if ($data['callback'] == 'getMemberId') die('
'.encodeEntities(print_r($data, true)).'
'); + //* DEBUG: */ if ($data['callback'] == 'getMemberId') die('
'.encodeEntities(print_r($data, true)).'
'); // If the value is empty, we don't add it - if (empty($data['value'])) { + //* 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 value is set + // Some string/integer value is set $replacer = '{DQUOTE} . ' . $data['extra_func2'] . '(' . $data['extra_func'] . '(' . $data['callback'] . "('" . $data['value'] . "'))) . {DQUOTE}"; } } // END - if @@ -265,18 +269,70 @@ function doExpressionMessage ($data) { // Expression call-back for template functions function doExpressionTemplate ($data) { + // Construct call-back function name + $callback = 'doTemplate' . $data['callback']; + + // Init replacer + $replacer = ''; + + // Is the function there? + if (function_exists($callback)) { + // Do the replacement + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'template='.$GLOBALS['current_template']); + $replacer = '{DQUOTE} . ' . $callback . "('" . $GLOBALS['current_template'] . "', true"; + + // Is 'value' set? + if (!empty($data['value'])) { + // Then include it as well + $replacer .= ", '" . $data['value'] . "'"; + } // END - if + + // Replacer is ready + $replacer .= ') . {DQUOTE}'; + } else { + // Log missing function + logDebugMessage(__FUNCTION__, __LINE__, 'Call-back function ' . $callback . ' does not exist.'); + } + + // 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} . doTemplate' . $data['callback'] . "('" . $GLOBALS['current_template'] . "', true"; + $replacer = '{DQUOTE} . doCalculate' . $data['callback'] . '(' . $data['value'] . ') . {DQUOTE}'; - // Is 'value' set? - if (!empty($data['value'])) { - // Then include it as well - $replacer .= ", '" . $data['value'] . "'"; - } // END - if + // 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 + $replacer = '{%pipe,getRequestElement=' . $data['value'] . '%}'; + + // Replace the code + $code = replaceExpressionCode($data, $replacer); + + // Return the (maybe) replaced code + return $code; +} - // Replacer is ready - $replacer .= ') . {DQUOTE}'; +// Expression call-back for POST request +function doExpressionPost ($data) { + // Construct the replacer + $replacer = '{%pipe,postRequestElement=' . $data['value'] . '%}'; // Replace the code $code = replaceExpressionCode($data, $replacer);