X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffilters.php;h=89af47dbfd6a1edc52f03a0a3af8c7c047ee8f83;hp=dbc68d39dad3eaa5f196c3a0b5d6989db2a5bde5;hb=d979fd0c393880233143e10b8ac6a6899f9db4c2;hpb=9afd6ec5878544a7982c50ed9c0dd7de37606d5b diff --git a/inc/filters.php b/inc/filters.php index dbc68d39da..89af47dbfd 100644 --- a/inc/filters.php +++ b/inc/filters.php @@ -1,7 +1,7 @@ 0) { // Then find all updates we shall no longer execute - foreach (getExtensionUpdateDependencies() as $id=>$ext_name) { + foreach (getExtensionUpdateDependencies() as $id => $ext_name) { // Shall we remove this update? if (in_array($ext_name, getExtensionRemovalList())) { // Then remove this extension! @@ -414,7 +414,7 @@ function FILTER_COMPILE_CONFIG ($code, $compiled = false) { $GLOBALS['compile_config'][$matches[1][$key]] = "\".getConfig('" . 'DEFAULT_' . strtoupper($matches[1][$key]) . "').\""; } elseif (isMessageIdValid('DEFAULT_' . strtoupper($matches[1][$key]))) { // No config, try the language system - $GLOBALS['compile_config'][$matches[1][$key]] = "\".getMessage('". 'DEFAULT_' . strtoupper($matches[1][$key]) . "').\""; + $GLOBALS['compile_config'][$matches[1][$key]] = "\" . getMessage('". 'DEFAULT_' . strtoupper($matches[1][$key]) . "') . \""; } else { // Unhandled! $GLOBALS['compile_config'][$matches[1][$key]] = '!' . $matches[1][$key] . '!'; @@ -423,7 +423,7 @@ function FILTER_COMPILE_CONFIG ($code, $compiled = false) { // Use this for replacing $code = str_replace($match, $GLOBALS['compile_config'][$matches[1][$key]], $code); - //* DEBUG: */ if (($match == '{?URL?}') && (strlen($code) > 10000)) die('
'.htmlentities($code).'
'); + //* DEBUG: */ if (($match == '{?URL?}') && (strlen($code) > 10000)) die('
'.secureString($code).'
'); } // END - foreach } // END - if @@ -434,7 +434,9 @@ function FILTER_COMPILE_CONFIG ($code, $compiled = false) { // Should we compile it? if ($compiled === true) { // Run the code - eval("\$GLOBALS['compiled_config'][\$uncompiled] = \"" . $GLOBALS['compiled_config'][$uncompiled] . "\";"); + $eval = "\$GLOBALS['compiled_config'][\$uncompiled] = \"" . $GLOBALS['compiled_config'][$uncompiled] . "\";"; + //* DEBUG: */ print('
' . str_replace('$', '$', htmlentities($eval)) . '
'); + eval($eval); } // END - if // Return compiled code @@ -446,30 +448,61 @@ function FILTER_COMPILE_EXTENSION ($code) { // Compile {%cmd=some_value%} to get extension data // Support cmd is: // - version -> getExtensionVersion() call - preg_match_all('/\{%((([a-zA-Z0-9-_]+)=([a-zA-Z0-9-_]+))*)\%\}/', $code, $matches); + preg_match_all('/\{%(([a-zA-Z0-9-_,]+)=([^\}]+))%\}/', $code, $matches); + //* DEBUG: */ print('
'.print_r($matches, true).'
'); + + // Default is from OUTPUT_HTML + $outputMode = getOutputMode(); // Some entries found? if ((count($matches) > 0) && (count($matches[3]) > 0)) { // Replace all matches - foreach ($matches[3] as $key => $cmd) { - // By default we have no extension installed, so 'false' is assumed - $replacer = 'false'; + foreach ($matches[2] as $key => $cmd) { + // Init replacer variable + $replacer = ''; + + // Is the extension installed or code provided? + // @TODO This whole if-block is very static + if ($cmd == 'code') { + // Code asked for + $replacer = "\" . getCode('" . $matches[3][$key] . "') . \""; + } elseif (substr($cmd, 0, 3) == 'url') { + // Do we have JS-mode? + if (substr($cmd, -2, 2) == 'js') $outputMode = 1; + + // Handle an URL here + $replacer = "\" . encodeUrl(\"" . $matches[3][$key] . "\", " . $outputMode . ") . \""; + + // Replace it + $code = str_replace($matches[0][$key], $replacer, $code); + + // And continue with next entry + continue; + } elseif (substr($cmd, 0 , 3) == 'ext') { + // Get the extension command + $extCmd = explode(',', $cmd); + $extCmd = $extCmd[1]; - // Is the extension installed? - if (isExtensionActive($matches[4][$key])) { // Construct call-back function name - $functionName = 'getExtension' . ucfirst(strtolower($cmd)); + $functionName = 'getExtension' . ucfirst(strtolower($extCmd)); - // Call the function - $replacer = call_user_func_array($functionName, $matches[4][$key]); - } // END - if + // Construct call of the function + $replacer = "\" . call_user_func_array('" . $functionName . "', array('" . $matches[3][$key] . "', true)) . \""; + } else { + // Unknown command detected + debug_report_bug('Unknown command ' . $cmd . ' detected.'); + } // Replace it and insert parameter for GET request - $code = str_replace($matches[0][$key], sprintf("&%s=%s&rev=%s", $cmd, $replacer, getConfig('CURR_SVN_REVISION')), $code); + $code = str_replace($matches[0][$key], sprintf("&%s=%s&rev=\" . getConfig('CURR_SVN_REVISION') . \"", $cmd, $replacer), $code); } // END - foreach } // END - if + // Do we have non-HTML mode? + if ((getOutputMode() != '0') || ($outputMode != '0')) $code = html_entity_decode($code); + // Return compiled code + //* DEBUG: */ die('
'.htmlentities($code).'
'); return $code; } @@ -587,9 +620,12 @@ function FILTER_DETERMINE_WHAT_ACTION () { if (isGetRequestElementSet('module')) { // Set module from request setModule(getRequestElement('module')); - } else { + } elseif (getOutputMode() == '0') { // Set default module 'index' setModule('index'); + } else { + // Unknown module + setModule('unknown'); } } // END - if @@ -841,15 +877,60 @@ function FILTER_DISPLAY_PARSING_TIME () { // Filter for flushing template cache function FILTER_FLUSH_TEMPLATE_CACHE () { + // Do not flush when debugging the template cache + if (isDebuggingTemplateCache()) return; + // Do we have cached eval() data? if ((isset($GLOBALS['template_eval'])) && (count($GLOBALS['template_eval']) > 0)) { // Now flush all - foreach ($GLOBALS['template_eval'] as $template=>$eval) { + foreach ($GLOBALS['template_eval'] as $template => $eval) { // Flush the cache (if not yet found) flushTemplateCache($template, $eval); } // END - if } // END - if } +// Filter for loading user data +function FILTER_FETCH_USER_DATA ($userid = 0) { + // Is the userid not set? Then use member id + if (($userid == '0') || (is_null($userid))) $userid = getMemberId(); + + // Get user data + if (!fetchUserData($userid)) { + // Userid is not valid + debug_report_bug('User id '.$userid . ' is invalid.'); + } // END - if + + // Set member id + setMemberId($userid); +} + +// Filter for reseting users' last login failure, only available with latest ext-sql_patches +function FILTER_RESET_USER_LOGIN_FAILURE () { + // Is the user data valid? + if (!isMember()) { + // Do only run for logged in members + debug_report_bug('Please only run this filter for logged in users.'); + } // END - if + + // Remmeber login failures if available + if (isExtensionInstalledAndNewer('sql_patches', '0.6.1')) { + // Reset login failures + SQL_QUERY_ESC("UPDATE + `{?_MYSQL_PREFIX?}_user_data` +SET + `login_failures`=0, + `last_failure`='0000-00-00 00:00:00' +WHERE + `userid`=%s +LIMIT 1", + array(getMemberId()), __FILE__, __LINE__); + + // Store it in session + setSession('mxchange_member_failures' , getUserData('login_failures')); + setSession('mxchange_member_last_fail', getUserData('last_failure')); + } // END - if +} + // [EOF] ?>