X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fexpression-functions.php;h=3ccafa59c634c474b578c0922f1df45e72bcbfa3;hb=150ed402878985508f10f4e06d25831e0fb3a1f8;hp=4e7c7f264ad73cc89b2786e9051a9b28cd4a53a4;hpb=596c8ab32594401ca84abfbfe35513ddfff31bec;p=mailer.git diff --git a/inc/expression-functions.php b/inc/expression-functions.php index 4e7c7f264a..3ccafa59c6 100644 --- a/inc/expression-functions.php +++ b/inc/expression-functions.php @@ -10,13 +10,8 @@ * -------------------------------------------------------------------- * * Kurzbeschreibung : Expression-Callback-Funktionen * * -------------------------------------------------------------------- * - * $Revision:: $ * - * $Date:: $ * - * $Tag:: 0.2.1-FINAL $ * - * $Author:: $ * - * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009 - 2012 by Mailer Developer Team * + * Copyright (c) 2009 - 2013 by Mailer Developer Team * * For more information visit: http://mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -43,7 +38,7 @@ if (!defined('__SECURITY')) { // Private function to replace the code function replaceExpressionCode ($data, $replacer) { // Replace the code - // @TODO is escapeQuotes() enougth for strings with single/double quotes? + // @TODO is escapeQuotes() enough for strings with single/double quotes? return str_replace($data['matches'][0][$data['key']], $replacer, escapeQuotes($data['code'])); } @@ -79,8 +74,8 @@ function isExpressionFunctionAvaiable ($data) { // And cache it $GLOBALS['expression_function_available'][$entry] = FALSE; } - } elseif ($GLOBALS['expression_function_available'][$entry] == FALSE) { - // Debug message + } elseif (($GLOBALS['expression_function_available'][$entry] == FALSE) && (isDebugModeEnabled())) { + // Debug message in debug mode logDebugMessage(__FUNCTION__, __LINE__, 'Expression function for entry ' . $entry . ' requested but does not exist.'); } @@ -91,7 +86,7 @@ function isExpressionFunctionAvaiable ($data) { // Getter for above expression function function getExpressionFunction ($data) { // Get the enty we need - $entry = $data['matches'][4][$data['key']]; + $entry = trim($data['matches'][4][$data['key']]); // Return it return $GLOBALS['expression_function_name'][$entry]; @@ -106,7 +101,7 @@ function doExpressionCode ($data) { return $code; } -// Expression call-back function for URLs +// Expression call-back function for URLs (example: {%url=foo.php?bar=bar%}) function doExpressionUrl ($data) { // Is there JS-mode? if ($data['callback'] == 'js') { @@ -118,7 +113,7 @@ function doExpressionUrl ($data) { $replacer = "{DQUOTE} . encodeUrl('" . $data['matches'][4][$data['key']] . "', " . $data['output_mode'] . ') . {DQUOTE}'; // Debug log - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'replacer=' . $replacer . ',callback=' . $data['callback']); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'replacer=' . $replacer . ',callback=' . $data['callback'] . ',output_mode=' . $data['output_mode']); // Replace it $code = replaceExpressionCode($data, $replacer); @@ -157,11 +152,14 @@ function doExpressionExt ($data) { } // END - if // Generate replacer - $replacer = sprintf("&ext=%s&ver=%s&rev={?CURRENT_REPOSITORY_REVISION?}", $data['matches'][4][$data['key']], $replacer); + $replacer = sprintf('&ext=%s&ver=%s', $data['matches'][4][$data['key']], $replacer); // Replace it and insert parameter for GET request $code = replaceExpressionCode($data, $replacer); + // Debug message + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'code=' . $code . ',replacer=' . $replacer . ',key=' . $data['key'] . ',callback=' . $data['callback']); + // Return replaced code return $code; } @@ -278,7 +276,7 @@ function doExpressionMessage ($data) { // Expression call-back for template functions function doExpressionTemplate ($data) { // Construct call-back function name - $callbackFunction = 'doTemplate' . $data['callback']; + $callbackFunction = 'doTemplate' . ucfirst($data['callback']); // Init replacer $replacer = ''; @@ -423,5 +421,137 @@ function doExpressionSessionPipe ($data) { 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] ?>