Filters should be executed even when sql_patches is out-dated
[mailer.git] / inc / load_extensions.php
index f8589b66d2f7f4a51a932a74ed05747f4512d366..1c38a2a7e4456d8d8aa519af35714cc5a26b6ae4 100644 (file)
@@ -42,7 +42,7 @@
 if (!defined('__SECURITY')) {
        $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), '/inc') + 4) . '/security.php';
        require($INC);
-}
+} // END - if
 
 // Init variables
 EXT_INIT_CSS_FILES();
@@ -159,7 +159,7 @@ if ($GLOBALS['cache_mode'] == 'load') {
                $EXT_DUMMY['ext_deprecated'][$name] = 'N';
 
                // Mark it as active extension
-               $GLOBALS['cache_array']['active_extensions']['$name'] = $EXT_DUMMY['ext_keep'][$k];
+               $GLOBALS['cache_array']['active_extensions'][$name] = $EXT_DUMMY['ext_keep'][$k];
                unset($EXT_DUMMY['ext_keep'][$k]);
 
                // Remove unneccessary data from memory
@@ -184,9 +184,6 @@ if ($GLOBALS['cache_mode'] == 'load') {
                LOAD_EXTENSION($ext);
        } // END - foreach
 
-       // Init filter system
-       initFilterSystem();
-
        // Load more cache files (like admins)
        loadIncludeOnce('inc/load_cache.php');
 
@@ -274,22 +271,25 @@ if ((SQL_NUMROWS($res_ext_crt) > 0) && ((($GLOBALS['cache_mode'] == 'init') && (
                }
        } // END - while
 
-       // Init filter system
-       initFilterSystem();
-
        if ($GLOBALS['cache_mode'] == 'init') {
                // Close cache file
                $GLOBALS['cache_instance']->finalize();
 
                // Load more cache files (like admins)
                loadIncludeOnce('inc/load_cache.php');
-       } // END - if
+       } else {
+               // Init filter system for non-init mode
+               initFilterSystem();
+       }
 
        // Free memory
        SQL_FREERESULT($res_ext_crt);
-} elseif (!EXT_IS_ACTIVE('cache')) {
+} elseif ((!EXT_IS_ACTIVE('cache')) || (($GLOBALS['cache_mode'] == 'init') && (getOutputMode() != 0))) {
        // Init filter system even when there are no extensions installed. #16
        initFilterSystem();
+} elseif ($GLOBALS['cache_mode'] != 'load') {
+       // Something unexpected!
+       debug_report_bug('Unexpected state in '.basename(__FILE__).': cache_mode='.$GLOBALS['cache_mode'].', numRows='.SQL_NUMROWS($res_ext_crt));
 }
 
 // Run the filter
@@ -301,11 +301,11 @@ if (!empty($DEL[0])) {
        foreach ($DEL as $del_ext) {
                // First remove entry from extensions table
                SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_extensions` WHERE `ext_name`='%s' LIMIT 1",
-               array($del_ext), __FILE__, __LINE__);
+                       array($del_ext), __FILE__, __LINE__);
 
                // Remove (maybe?) found tasks (main task and possible updates
-               SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_task_system` WHERE subject='[%s:]' AND (task_type='EXTENSION' OR task_type='EXTENSION_UPDATE')",
-               array($del_ext), __FILE__, __LINE__);
+               SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_task_system` WHERE `subject`='[%s:]' AND (`task_type`='EXTENSION' OR `task_type`='EXTENSION_UPDATE')",
+                       array($del_ext), __FILE__, __LINE__);
        } // END - foreach
 
        // I think it's not neccessary to run the optimization function here