Filters should be executed even when sql_patches is out-dated
[mailer.git] / inc / load_extensions.php
index f6ba3df7f3388d4bfdcb7e4b2484aa6afa233ca0..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();
@@ -55,7 +55,7 @@ $GLOBALS['cache_array'] = array();
 // Skip loading extensions
 if ((!isInstalled()) || (isInstalling())) {
        // Init filter system here
-       INIT_FILTER_SYSTEM();
+       initFilterSystem();
 
        // Skip loading
        return;
@@ -90,10 +90,10 @@ if (EXT_IS_ACTIVE('cache')) {
        switch (($GLOBALS['cache_instance']->loadCacheFile('extensions', true)) && ($GLOBALS['cache_instance']->extensionVersionMatches('sql_patches'))) {
                case true : $GLOBALS['cache_mode'] = 'load'; break;
                case false: $GLOBALS['cache_mode'] = 'init'; break;
-       }
+       } // END - switch
 
-       // Do we need to init the cache?
-       if (($GLOBALS['cache_mode'] == 'init') && (getConfig('cache_exts') == 'Y')) {
+       // Do we need to init the cache? But not in "CSS mode".
+       if (($GLOBALS['cache_mode'] == 'init') && (getConfig('cache_exts') == 'Y') && (getOutputMode() == '0')) {
                // Init cache file
                $GLOBALS['cache_instance']->init('EXTENSIONS');
                $GLOBALS['cache_instance']->storeExtensionVersion('sql_patches');
@@ -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
-       INIT_FILTER_SYSTEM();
-
        // Load more cache files (like admins)
        loadIncludeOnce('inc/load_cache.php');
 
@@ -215,7 +212,7 @@ ORDER BY ext_name", __FILE__, __LINE__);
 $DEL = array();
 
 // At least one found?
-if ((SQL_NUMROWS($res_ext_crt) > 0) && ((($GLOBALS['cache_mode'] == 'init') && ($GLOBALS['output_mode'] != '1') && ($GLOBALS['output_mode'] != '-1')) || ($GLOBALS['cache_mode'] == 'no'))) {
+if ((SQL_NUMROWS($res_ext_crt) > 0) && ((($GLOBALS['cache_mode'] == 'init') && (getOutputMode() != '1') && (getOutputMode() != '-1')) || ($GLOBALS['cache_mode'] == 'no'))) {
        // Extensions are registered so we load them
        while ($content = SQL_FETCHARRAY($res_ext_crt)) {
                // Get menu entry
@@ -274,22 +271,25 @@ if ((SQL_NUMROWS($res_ext_crt) > 0) && ((($GLOBALS['cache_mode'] == 'init') && (
                }
        } // END - while
 
-       // Init filter system
-       INIT_FILTER_SYSTEM();
-
        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
-       INIT_FILTER_SYSTEM();
+       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
@@ -304,7 +304,7 @@ if (!empty($DEL[0])) {
                        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')",
+               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