X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Ffilters.php;h=8970f8ea32a71dcd71a9f1ce51849a45709502db;hb=2eb01731e9a7a21c1b44ca5881a1444a801f5e5a;hp=f100892efe2a292be3a60ac8980fc1b5030ec2b0;hpb=10570955d1813975b534da2eccd72fd04e2fa585;p=mailer.git diff --git a/inc/filters.php b/inc/filters.php index f100892efe..8970f8ea32 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! @@ -363,11 +361,9 @@ function FILTER_DETERMINE_USERNAME () { // Check if logged in if (isMember()) { // Is still logged in so we welcome him with his name - $result = SQL_QUERY_ESC("SELECT `surname`, `family` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid`=%s LIMIT 1", - array(getUserId()), __FILE__, __LINE__); - if (SQL_NUMROWS($result) == 1) { + if (fetchUserData(getMemberId())) { // Load surname and family's name and build the username - $content = SQL_FETCHARRAY($result); + $content = getUserDataArray(); // Prepare username setUsername($content['surname'] . ' ' . $content['family']); @@ -382,14 +378,8 @@ function FILTER_DETERMINE_USERNAME () { setUsername('{--USERNAME_UNKNOWN--}'); // Destroy session - destroyUserSession(); - - // Kill userid - setUserId(0); + destroyMemberSession(); } - - // Free memory - SQL_FREERESULT($result); } elseif (isAdmin()) { // Admin is there setUsername('{--USERNAME_ADMIN--}'); @@ -400,40 +390,57 @@ function FILTER_DETERMINE_USERNAME () { } // Filter for compiling config entries -function FILTER_COMPILE_CONFIG ($code) { - // Compile {?some_var?} to getConfig('some_var') - preg_match_all('/\{\?(([a-zA-Z0-9-_]+)*)\?\}/', $code, $matches); +function FILTER_COMPILE_CONFIG ($code, $compiled = false) { + // Save the uncompiled code + $uncompiled = $code; + + // Do we have cache? + if (!isset($GLOBALS['compiled_config'][$code])) { + // Compile {?some_var?} to getConfig('some_var') + preg_match_all('/\{\?(([a-zA-Z0-9-_]+)*)\?\}/', $code, $matches); + + // Some entries found? + if ((count($matches) > 0) && (count($matches[0]) > 0)) { + // Replace all matches + foreach ($matches[0] as $key => $match) { + // Do we have cache? + if (!isset($GLOBALS['compile_config'][$matches[1][$key]])) { + // Is the config valid? + if (isConfigEntrySet($matches[1][$key])) { + // Set it for caching + $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]) . "').\""; + } 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]) . "').\""; + } else { + // Unhandled! + $GLOBALS['compile_config'][$matches[1][$key]] = '!' . $matches[1][$key] . '!'; + } + } // END - if - // Some entries found? - if ((count($matches) > 0) && (count($matches[0]) > 0)) { - // Replace all matches - foreach ($matches[0] as $key => $match) { - // Do we have cache? - if (!isset($GLOBALS['compile_config'][$matches[1][$key]])) { - // Is the config valid? - if (isConfigEntrySet($matches[1][$key])) { - // Set it for caching - $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])); - } 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])); - } else { - // Unhandled! - $GLOBALS['compile_config'][$matches[1][$key]] = '!' . $matches[1][$key] . '!'; - } - } // END - if + // Use this for replacing + $code = str_replace($match, $GLOBALS['compile_config'][$matches[1][$key]], $code); + //* DEBUG: */ if (($match == '{?URL?}') && (strlen($code) > 10000)) die('
'.secureString($code).'
'); + } // END - foreach + } // END - if - // 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).'
'); - } // END - foreach + // Add it to cache + $GLOBALS['compiled_config'][$uncompiled] = $code; + } // END - if + + // Should we compile it? + if ($compiled === true) { + // Run the code + $eval = "\$GLOBALS['compiled_config'][\$uncompiled] = \"" . $GLOBALS['compiled_config'][$uncompiled] . "\";"; + //* DEBUG: */ print '
' . str_replace('$', '$', htmlentities($eval)) . '
'; + eval($eval); } // END - if // Return compiled code - return $code; + return $GLOBALS['compiled_config'][$uncompiled]; } // Filter for compiling extension data @@ -447,18 +454,28 @@ function FILTER_COMPILE_EXTENSION ($code) { if ((count($matches) > 0) && (count($matches[3]) > 0)) { // Replace all matches foreach ($matches[3] as $key => $cmd) { - // Construct call-back function name - $functionName = 'getExtension' . ucfirst(strtolower($cmd)); - - // Call the function - $replacer = call_user_func_array($functionName, $matches[4][$key]); + // Init replacer variable + $replacer = ''; + + // Is the extension installed or code provided? + if ($cmd == 'code') { + // Code asked for + $replacer = "\".getCode(\"" . $matches[4][$key] . "\").\""; + } else { + // Construct call-back function name + $functionName = 'getExtension' . ucfirst(strtolower($cmd)); + + // Construct call of the function + $replacer = "\".call_user_func_array('" . $functionName . "', array('" . $matches[4][$key] . "', true)).\""; + } // 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 // Return compiled code + //* DEBUG: */ die('
'.secureString($code).'
'); return $code; } @@ -479,7 +496,7 @@ function FILTER_UPDATE_EXTENSION_DATA ($ext_name) { // Load more reset scripts function FILTER_RUN_RESET_INCLUDES () { // Is the reset set or old sql_patches? - if (((!isResetModeEnabled()) || (!isExtensionInstalledAndOlder('sql_patches', '0.4.5'))) && (getOutputMode() == 0)) { + if (((!isResetModeEnabled()) || (!isExtensionInstalled('sql_patches'))) && (getOutputMode() == '0')) { // Then abort here logDebugMessage(__FUNCTION__, __LINE__, 'Cannot run reset! Please report this bug. Thanks'); } // END - if @@ -488,7 +505,7 @@ function FILTER_RUN_RESET_INCLUDES () { setIncludePool('reset', getArrayFromDirectory('inc/reset/', 'reset_')); // Update database - if (getConfig('DEBUG_RESET') != 'Y') updateConfiguration('last_update', time()); + if ((!isConfigEntrySet('DEBUG_RESET')) || (getConfig('DEBUG_RESET') != 'Y')) updateConfiguration('last_update', 'UNIX_TIMESTAMP()'); // Is the config entry set? if (isExtensionInstalledAndNewer('sql_patches', '0.4.2')) { @@ -501,7 +518,7 @@ function FILTER_RUN_RESET_INCLUDES () { mergeIncludePool('reset', getArrayFromDirectory('inc/weekly/', 'weekly_')); // Update config - if (getConfig('DEBUG_WEEKLY') != 'Y') updateConfiguration('last_week', $currWeek); + if ((isConfigEntrySet('DEBUG_WEEKLY')) && (getConfig('DEBUG_WEEKLY') != 'Y')) updateConfiguration('last_week', $currWeek); } // END - if // Create current month mark @@ -513,7 +530,7 @@ function FILTER_RUN_RESET_INCLUDES () { mergeIncludePool('reset', getArrayFromDirectory('inc/monthly/', 'monthly_')); // Update config - if (getConfig('DEBUG_MONTHLY') != 'Y') updateConfiguration('last_month', $currMonth); + if ((isConfigEntrySet('DEBUG_MONTHLY')) && (getConfig('DEBUG_MONTHLY') != 'Y')) updateConfiguration('last_month', $currMonth); } // END - if } // END - if @@ -571,7 +588,19 @@ function FILTER_DETERMINE_WHAT_ACTION () { // Get all values if ((getOutputMode() != 1) && (getOutputMode() != -1)) { // Fix module - if (!isModuleSet()) setModule('index'); + if (!isModuleSet()) { + // Is the request element set? + if (isGetRequestElementSet('module')) { + // Set module from request + setModule(getRequestElement('module')); + } elseif (getOutputMode() == '0') { + // Set default module 'index' + setModule('index'); + } else { + // Unknown module + setModule('unknown'); + } + } // END - if // Fix 'what' if not yet set if (!isWhatSet()) setWhat(getWhatFromModule(getModule())); @@ -608,7 +637,7 @@ function FILTER_TRIGGER_SENDING_POOL () { } // END - if // Init counter - $GLOBALS['pool_cnt'] = 0; + $GLOBALS['pool_cnt'] = '0'; // Init & set the include pool initIncludePool('pool'); @@ -623,6 +652,9 @@ function FILTER_TRIGGER_SENDING_POOL () { // Filter for checking and updating SVN revision function FILTER_CHECK_SVN_REVISION () { + // Only execute this filter if installed and all config entries are there + if ((!isInstalled()) || (!isConfigEntrySet('patch_level'))) return; + // Check for patch level differences between databases and current hard-coded if ((getConfig('CURR_SVN_REVISION') > getConfig('patch_level')) || (getConfig('patch_level') == 'CURR_SVN_REVISION') || (getConfig('patch_ctime') == 'UNIX_TIMES')) { // Update database and CONFIG array @@ -634,9 +666,12 @@ 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; + // 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())) || (getConfig('DEBUG_RESET') == 'Y')) && (!isInstallationPhase()) && (isAdminRegistered()) && (!isGetRequestElementSet('register')) && (getOutputMode() != 1)) { + 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(); } // END - if @@ -645,7 +680,7 @@ function FILTER_RUN_DAILY_RESET () { // Filter for loading more runtime includes (not for installation) function FILTER_LOAD_RUNTIME_INCLUDES () { // Load more includes - foreach (array('inc/session.php','inc/versions.php') as $inc) { + foreach (array('inc/databases.php','inc/session.php','inc/versions.php') as $inc) { // Load the include loadIncludeOnce($inc); } // END - foreach @@ -684,9 +719,9 @@ function FILTER_CHECK_ADMIN_ACL () { // Init random number/cache buster function FILTER_INIT_RANDOM_NUMBER () { // Is the extension sql_patches installed and at least 0.3.6? - if ((isExtensionActive('sql_patches')) && (getExtensionVersion('sql_patches') >= '0.3.6')) { + if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && (isExtensionInstalledAndNewer('other', '0.2.5'))) { // Generate random number - setConfigEntry('RAND_NUMBER', generateRandomCode(10, mt_rand(10000, 32766), getUserId(), '')); + setConfigEntry('RAND_NUMBER', generateRandomCode(10, mt_rand(10000, 32766), getMemberId(), '')); } else { // Generate weak (!!!) code setConfigEntry('RAND_NUMBER', mt_rand(1000000, 9999999)); @@ -706,7 +741,7 @@ function FILTER_COUNT_MODULE () { // Handles fatal errors function FILTER_HANDLE_FATAL_ERRORS () { // Do we have errors to handle and right output mode? - if ((getTotalFatalErrors() == 0) || (getOutputMode() != 0)) { + if ((getTotalFatalErrors() == '0') || (getOutputMode() != 0)) { // Abort executing here return false; } // END - if @@ -793,7 +828,7 @@ function FILTER_DISPLAY_COPYRIGHT () { // Shall we display the copyright notice? if ((!isGetRequestElementSet('frame')) && (basename($_SERVER['PHP_SELF']) != 'mailid_top.php') && ((getConfig('WRITE_FOOTER') == 'Y') || (isInstalling())) && ($GLOBALS['header_sent'] == 2)) { // Backlink enabled? - if ((getConfig('ENABLE_BACKLINK') == 'Y') || (isInstalling())) { + if (((isConfigEntrySet('ENABLE_BACKLINK')) && (getConfig('ENABLE_BACKLINK') == 'Y')) || (isInstalling())) { // Copyright with backlink, thanks! :-) loadTemplate('copyright_backlink'); } else { @@ -807,11 +842,26 @@ function FILTER_DISPLAY_COPYRIGHT () { function FILTER_DISPLAY_PARSING_TIME () { // Shall we display the parsing time and number of queries? // 1234 5 54 4 5 5 4 4 5 543 3 4432 2 33 2 2 21 - if ((((isExtensionInstalledAndNewer('sql_patches', '0.4.1')) && (getConfig('show_timings') == 'Y') && (!isGetRequestElementSet('frame'))) || (isInstallationPhase())) && (getOutputMode() == 0) && ($GLOBALS['header_sent'] == 2)) { + if ((((isExtensionInstalledAndNewer('sql_patches', '0.4.1')) && (getConfig('show_timings') == 'Y') && (!isGetRequestElementSet('frame'))) || (isInstallationPhase())) && (getOutputMode() == '0') && ($GLOBALS['header_sent'] == 2)) { // Then display it here displayParsingTime(); } // END - if } +// 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) { + // Flush the cache (if not yet found) + flushTemplateCache($template, $eval); + } // END - if + } // END - if +} + // [EOF] ?>