X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Ffilters.php;h=5cda96ebf2c825db507989015475aecf07c9bdd0;hp=5b007f3d2132d9721e619a87cf183e076d3acee6;hb=52f1b0f588b492a7668204a74da47d5732791331;hpb=c2e17d983fcbc0c3bd1dd37908d87c678f0367df diff --git a/inc/filters.php b/inc/filters.php index 5b007f3d21..5cda96ebf2 100644 --- a/inc/filters.php +++ b/inc/filters.php @@ -327,6 +327,15 @@ function FILTER_UPDATE_LOGIN_DATA () { // Filter for initializing randomizer function FILTER_INIT_RANDOMIZER () { + // Only execute this filter if installed + if ((!isInstalled()) || (!isExtensionInstalledAndNewer('other', '0.2.5'))) return; + + // Take a prime number which is long (if you know a longer one please try it out!) + setConfigEntry('_PRIME', 591623); + + // Calculate "entropy" with the prime number (for code generation) + setConfigEntry('_ADD', (getConfig('_PRIME') * getConfig('_PRIME') / (pi() * getConfig('code_length') + 1))); + // Simply init the randomizer with seed and _ADD value mt_srand(generateSeed() + getConfig('_ADD')); } @@ -479,7 +488,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'))) { + if (((!isResetModeEnabled()) || (!isExtensionInstalledAndOlder('sql_patches', '0.4.5'))) && (getOutputMode() == 0)) { // Then abort here logDebugMessage(__FUNCTION__, __LINE__, 'Cannot run reset! Please report this bug. Thanks'); } // END - if @@ -488,7 +497,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', time()); // Is the config entry set? if (isExtensionInstalledAndNewer('sql_patches', '0.4.2')) { @@ -501,7 +510,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 +522,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 +580,16 @@ 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')); + } else { + // Set default module 'index' + setModule('index'); + } + } // END - if // Fix 'what' if not yet set if (!isWhatSet()) setWhat(getWhatFromModule(getModule())); @@ -623,6 +641,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 +655,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 +669,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,7 +708,7 @@ 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(), '')); } else { @@ -696,5 +720,122 @@ function FILTER_INIT_RANDOM_NUMBER () { setConfigEntry('CACHE_BUSTER', getConfig('RAND_NUMBER')); } +// Update module counter +function FILTER_COUNT_MODULE () { + // Do count all other modules but not accesses on CSS file css.php! + SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `clicks`=`clicks`+1 WHERE `module`='%s' LIMIT 1", + array(getModule()), __FUNCTION__, __LINE__); +} + +// Handles fatal errors +function FILTER_HANDLE_FATAL_ERRORS () { + // Do we have errors to handle and right output mode? + if ((getTotalFatalErrors() == 0) || (getOutputMode() != 0)) { + // Abort executing here + return false; + } // END - if + + // Set content type + setContentType('text/html'); + + // Load config here + loadIncludeOnce('inc/load_config.php'); + + // Set unset variable + if (empty($check)) $check = ''; + + // Default is none + $content = ''; + + // Installation phase or regular mode? + if ((isInstallationPhase())) { + // While we are installing ouput other header than while it is installed... :-) + $OUT = ''; + foreach (getFatalArray() as $key => $value) { + // Prepare content for the template + $content = array( + 'key' => ($key + 1), + 'value' => $value + ); + + // Load row template + $OUT .= loadTemplate('install_fatal_row', true, $content); + } + + // Load main template + $content = loadTemplate('install_fatal_table', true, $OUT); + } elseif (isInstalled()) { + // Display all runtime fatal errors + $OUT = ''; + foreach (getFatalArray() as $key => $value) { + // Prepare content for the template + $content = array( + 'key' => ($key + 1), + 'value' => $value + ); + + // Load row template + $OUT .= loadTemplate('runtime_fatal_row', true, $content); + } + + // Load main template + $content = loadTemplate('runtime_fatal_table', true, $OUT); + } + + // Message to regular users (non-admin) + $CORR = getMessage('FATAL_REPORT_ERRORS'); + + // PHP warnings fixed + if ($check == 'done') { + if (isAdmin()) $CORR = getMessage('FATAL_CORRECT_ERRORS'); + } // END - if + + // Remember all in array + $content = array( + 'rows' => $content, + 'corr' => $CORR + ); + + // Load footer + loadIncludeOnce('inc/header.php'); + + // Load main template + loadTemplate('fatal_errors', false, $content); + + // Delete all to prevent double-display + initFatalMessages(); + + // Load footer + loadIncludeOnce('inc/footer.php'); + + // Abort here + shutdown(); +} + +// Filter for displaying copyright line +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 (((isConfigEntrySet('ENABLE_BACKLINK')) && (getConfig('ENABLE_BACKLINK') == 'Y')) || (isInstalling())) { + // Copyright with backlink, thanks! :-) + loadTemplate('copyright_backlink'); + } else { + // No backlink in Copyright note + loadTemplate('copyright'); + } + } // END - if +} + +// Filter for displaying parsing time +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)) { + // Then display it here + displayParsingTime(); + } // END - if +} + // [EOF] ?>