]> git.mxchange.org Git - mailer.git/blobdiff - inc/filters.php
Caching of filters added (should work now)
[mailer.git] / inc / filters.php
index e8f598c857c1f18dc1c89c20055ef1f343e61b3b..39d86d19f17108a74c9bdc95e78671105882019b 100644 (file)
@@ -47,8 +47,7 @@ function initFilterSystem () {
        // Is the filter already initialized?
        if ((isset($GLOBALS['filters']['chains'])) && (is_array($GLOBALS['filters']['chains']))) {
                // Then abort here
-               addFatalMessage(__FUNCTION__, __LINE__, getMessage('FILTER_FAILED_ALREADY_INIT'));
-               return false;
+               debug_report_bug(getMessage('FILTER_FAILED_ALREADY_INIT'));
        } // END - if
 
        // Init the filter system (just some ideas)
@@ -63,7 +62,26 @@ function initFilterSystem () {
        $GLOBALS['filters']['counter'] = array();
 
        // Load all saved filers if sql_patches is updated
-       if (GET_EXT_VERSION('sql_patches') >= '0.5.9') {
+       if (isset($GLOBALS['cache_array']['filter'])) {
+               // Found in cache so rewrite the array
+               $filterArray = array();
+               foreach ($GLOBALS['cache_array']['filter']['filter_name'] as $idx => $filterName) {
+                       // Get filter function
+                       $filterFunction = $GLOBALS['cache_array']['filter']['filter_function'][$idx];
+
+                       // Add the element with mapped index
+                       $filterArray['counter'][$filterName][$filterFunction] = $GLOBALS['cache_array']['filter']['filter_counter'][$idx];
+                       $filterArray['loaded'][$filterName][$filterFunction]  = true;
+                       $filterArray['chains'][$filterName][$filterFunction]  = $GLOBALS['cache_array']['filter']['filter_active'][$idx];
+               } // END - foreach
+
+               // Set the array
+               //die('<pre>'.print_r($filterArray, true).'</pre>');
+               $GLOBALS['filters'] = $filterArray;
+
+               // Remove the cache
+               unset($GLOBALS['cache_array']['filter']);
+       } elseif (GET_EXT_VERSION('sql_patches') >= '0.5.9') {
                // Init add
                $add = '';
                if (GET_EXT_VERSION('sql_patches') >= '0.6.0') $add = ", `filter_counter`";
@@ -100,38 +118,38 @@ ORDER BY `filter_id` ASC", __FUNCTION__, __LINE__);
 
                // Free result
                SQL_FREERESULT($result);
-       } // END - if
 
-       // Init filters
-       registerFilter('init', 'UPDATE_LOGIN_DATA');
-       registerFilter('init', 'INIT_RANDOMIZER');
+               // Init filters
+               registerFilter('init', 'UPDATE_LOGIN_DATA');
+               registerFilter('init', 'INIT_RANDOMIZER');
 
-       // Login failures handler
-       registerFilter('post_youhere_line', 'CALL_HANDLER_LOGIN_FAILTURES');
+               // Login failures handler
+               registerFilter('post_youhere_line', 'CALL_HANDLER_LOGIN_FAILTURES');
 
-       // Filters for pre-extension-registration
-       registerFilter('pre_extension_installed', 'RUN_SQLS');
+               // Filters for pre-extension-registration
+               registerFilter('pre_extension_installed', 'RUN_SQLS');
 
-       // Filters for post-extension-registration
-       registerFilter('post_extension_installed', 'AUTO_ACTIVATE_EXTENSION');
-       registerFilter('post_extension_installed', 'SOLVE_TASK');
-       registerFilter('post_extension_installed', 'loadIncludeLUDES');
-       registerFilter('post_extension_installed', 'REMOVE_UPDATES');
+               // Filters for post-extension-registration
+               registerFilter('post_extension_installed', 'AUTO_ACTIVATE_EXTENSION');
+               registerFilter('post_extension_installed', 'SOLVE_TASK');
+               registerFilter('post_extension_installed', 'LOAD_INCLUDES');
+               registerFilter('post_extension_installed', 'REMOVE_UPDATES');
 
-       // Solving tasks
-       registerFilter('solve_task', 'SOLVE_TASK');
+               // Solving tasks
+               registerFilter('solve_task', 'SOLVE_TASK');
 
-       // Loading includes in general
-       registerFilter('load_includes', 'loadIncludeLUDES');
+               // Loading includes in general
+               registerFilter('load_includes', 'LOAD_INCLUDES');
 
-       // Run SQLs
-       registerFilter('run_sqls', 'RUN_SQLS');
+               // Run SQLs
+               registerFilter('run_sqls', 'RUN_SQLS');
 
-       // Admin ACL check
-       registerFilter('check_admin_acl', 'CHECK_ADMIN_ACL');
+               // Admin ACL check
+               registerFilter('check_admin_acl', 'CHECK_ADMIN_ACL');
 
-       // Register shutdown filters
-       registerFilter('shutdown', 'FLUSH_FILTERS');
+               // Register shutdown filters
+               registerFilter('shutdown', 'FLUSH_FILTERS');
+       } // END - if
 }
 
 // "Registers" a new filter function
@@ -190,21 +208,15 @@ function unregisterFilter ($filterName, $filterFunction, $force = false, $dry_ru
 function runFilterChain ($filterName, $data = null, $silentAbort = true) {
        // Is that filter chain there?
        if (!isset($GLOBALS['filters']['chains'][$filterName])) {
-               // Then abort here (quick'N'dirty hack)
-               if (($silentAbort === false) && (defined('FILTER_FAILED_NO_FILTER_FOUND'))) {
-                       // Add fatal message
-                       addFatalMessage(__FUNCTION__, __LINE__, getMessage('FILTER_FAILED_NO_FILTER_FOUND'), $filterName);
-               } // END - if
-
-               // Abort here
-               return false;
+               // We should find all these non-existing filter chains
+               debug_report_bug('Filter chain '.$filterName.' not found!');
        } // END - if
 
        // Default return value
        $returnValue = $data;
 
        // Then run all filters
-       foreach ($GLOBALS['filters']['chains'][$filterName] as $filterFunction=>$active) {
+       foreach ($GLOBALS['filters']['chains'][$filterName] as $filterFunction => $active) {
                // Debug message
                //* DEBUG: */ DEBUG_LOG(__FUNCTION__, __LINE__, "Running: name={$filterName},func={$filterFunction},active={$active}");
 
@@ -325,9 +337,9 @@ function FILTER_FLUSH_FILTERS () {
                        foreach ($filterArray as $filterFunction => $cnt) {
                                // Construct and add the query
                                ADD_SQL(sprintf("UPDATE `{!_MYSQL_PREFIX!}_filters` SET `filter_counter`=%s WHERE `filter_name`='%s' AND `filter_function`='%s' LIMIT 1",
-                               bigintval($cnt),
-                               $filterName,
-                               $filterFunction
+                                       bigintval($cnt),
+                                       $filterName,
+                                       $filterFunction
                                ));
                        } // END - foreach
                } // END - foreach
@@ -400,7 +412,7 @@ function FILTER_SOLVE_TASK ($data) {
 }
 
 // Filter to load include files
-function FILTER_loadIncludeLUDES () {
+function FILTER_LOAD_INCLUDES () {
        // Default is $data as inclusion list
        $data = GET_INC_POOL();