X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Ffilters.php;h=4153a134631e62dbaeace69cc2ac78d7c9e6f28a;hb=65ed873eefdacdcea3331773b6458a06a5adff82;hp=b3c41423c408b1c595889abd2b462b3315d9c85e;hpb=039203d5428c9c6a3bed61fb3a9a16958c6fd44c;p=mailer.git diff --git a/inc/filters.php b/inc/filters.php index b3c41423c4..4153a13463 100644 --- a/inc/filters.php +++ b/inc/filters.php @@ -408,7 +408,7 @@ function FILTER_COMPILE_CONFIG ($code, $compiled = false) { // Is the config valid? if (isConfigEntrySet($matches[1][$key])) { // Set it for caching - $GLOBALS['compile_config'][$matches[1][$key]] = "\".getConfig('" . $matches[1][$key] . "').\""; + $GLOBALS['compile_config'][$matches[1][$key]] = "\" . getConfig('" . $matches[1][$key] . "') . \""; } elseif (isConfigEntrySet('default_' . strtoupper($matches[1][$key]))) { // Use default value $GLOBALS['compile_config'][$matches[1][$key]] = "\" . getConfig('" . 'DEFAULT_' . strtoupper($matches[1][$key]) . "') . \""; @@ -443,11 +443,10 @@ function FILTER_COMPILE_CONFIG ($code, $compiled = false) { return $GLOBALS['compiled_config'][$uncompiled]; } -// Filter for compiling extension data -function FILTER_COMPILE_EXTENSION ($code) { - // Compile {%cmd=some_value%} to get extension data - // Support cmd is: - // - version -> getExtensionVersion() call +// Filter for compiling expression code +function FILTER_COMPILE_EXPRESSION_CODE ($code) { + // Compile {%cmd=some_value%} to get expression code snippets + // See switch() command below for supported commands preg_match_all('/\{%(([a-zA-Z0-9-_,]+)(=([^\}]+)){0,1})*%\}/', $code, $matches); //* DEBUG: */ print('
'.print_r($matches, true).'
'); @@ -525,14 +524,20 @@ function FILTER_COMPILE_EXTENSION ($code) { break; case 'ext': - // Construct call-back function name - $functionName = 'getExtension' . ucfirst(strtolower($callback)); + // Not installed is default + $replacer = 'false'; - // Construct call of the function - $replacer = "\" . call_user_func_array('" . $functionName . "', array('" . $matches[4][$key] . "', true)) . \""; + // Is the extension installed? + if (isExtensionInstalled($matches[4][$key])) { + // Construct call-back function name + $functionName = 'getExtension' . ucfirst(strtolower($callback)); + + // Construct call of the function + $replacer = "\" . call_user_func_array('" . $functionName . "', array('" . $matches[4][$key] . "', true)) . \""; + } // END - if // Replace it and insert parameter for GET request - $code = str_replace($matches[0][$key], sprintf("&ext=%s&rev=\" . getConfig('CURR_SVN_REVISION') . \"", $replacer), $code); + $code = str_replace($matches[0][$key], sprintf("&ext=%s&ver=%s&rev=\" . getConfig('CURR_SVN_REVISION') . \"", $matches[4][$key], $replacer), $code); break; case 'config': // @TODO FILTER_COMPILE_CONFIG does not handle call-back functions so we handle it here again @@ -549,6 +554,14 @@ function FILTER_COMPILE_EXTENSION ($code) { $code = str_replace($matches[0][$key], $configValue, $code); break; + case 'filter': + // Construct replacement + $replacer = "\" . runFilterChain('" . $matches[4][$key] . "') . \""; + + // Run the filter and insert result + $code = str_replace($matches[0][$key], $replacer, $code); + break; + default: // Unsupported command detected debug_report_bug('Command=' . $cmd . ', callback=' . $callback . ', extra=' . $extraFunction . ' is unsupported.'); @@ -584,7 +597,7 @@ function FILTER_RUN_RESET_INCLUDES () { // Is the reset set or old sql_patches? if (((!isResetModeEnabled()) || (!isExtensionInstalled('sql_patches'))) && (getOutputMode() == '0')) { // Then abort here - logDebugMessage(__FUNCTION__, __LINE__, 'Cannot run reset! Please report this bug. Thanks'); + debug_report_bug('Cannot run reset! enabled='.intval(isResetModeEnabled()).',ext='.intval(isExtensionInstalled('sql_patches')).' Please report this bug. Thanks'); } // END - if // Get more daily reset scripts @@ -753,10 +766,9 @@ function FILTER_CHECK_SVN_REVISION () { // Filter for running daily reset function FILTER_RUN_DAILY_RESET () { // Only execute this filter if installed - if ((!isInstalled()) || (!isAdminRegistered())) return; + if ((isInstallationPhase()) || (!isInstalled()) || (!isAdminRegistered()) || (!isExtensionInstalled('sql_patches'))) return; // Shall we run the reset scripts? If a day has changed, maybe also a week/month has changed... Simple! :D - // 012 3 4 43 3 4432 2 3 3 21 1 221 1 221 1 2 21 1 22 10 if (((date('d', getConfig('last_update')) != date('d', time())) || ((isConfigEntrySet('DEBUG_RESET')) && (getConfig('DEBUG_RESET') == 'Y'))) && (!isInstallationPhase()) && (isAdminRegistered()) && (!isGetRequestElementSet('register')) && (getOutputMode() != 1)) { // Tell every module we are in reset-mode! doReset();