Filters should be executed even when sql_patches is out-dated
[mailer.git] / inc / load_extensions.php
index 18ff9c64dffbf3e9fddebf5d52e122eed84fcda4..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,11 +184,8 @@ if ($GLOBALS['cache_mode'] == 'load') {
                LOAD_EXTENSION($ext);
        } // END - foreach
 
-       // Init filter system
-       INIT_FILTER_SYSTEM();
-
        // Load more cache files (like admins)
-       LOAD_INC_ONCE('inc/load_cache.php');
+       loadIncludeOnce('inc/load_cache.php');
 
        // Remove array
        unset($EXT_POOL);
@@ -196,18 +193,18 @@ if ($GLOBALS['cache_mode'] == 'load') {
        // If current user is not admin load only activated extensions. But load
        // them all if we are going to init the cache files. The admin shall use
        // every available extension for testing purposes.
-       if ((!IS_ADMIN()) && ($GLOBALS['cache_mode'] != 'init')) $add = " WHERE ext_active='Y'";
+       if ((!IS_ADMIN()) && ($GLOBALS['cache_mode'] != 'init')) $add = " WHERE `ext_active`='Y'";
 
        if (GET_EXT_VERSION('sql_patches') >= '0.0.6') {
                // Query with CSS file from DB
-               $res_ext_crt = SQL_QUERY('SELECT id AS ext_id, ext_name, ext_has_css AS ext_css, ext_active, ext_version
-FROM `{!_MYSQL_PREFIX!}_extensions`' . $add . '
-ORDER BY ext_name', __FILE__, __LINE__);
+               $res_ext_crt = SQL_QUERY("SELECT id AS ext_id, ext_name, ext_has_css AS ext_css, ext_active, ext_version
+FROM `{!_MYSQL_PREFIX!}_extensions`" . $add . "
+ORDER BY ext_name", __FILE__, __LINE__);
        } else {
                // Old obsolete query string
-               $res_ext_crt = SQL_QUERY('SELECT id AS ext_id, ext_name, ext_name, ext_active, ext_version
-FROM `{!_MYSQL_PREFIX!}_extensions`' . $add . '
-ORDER BY ext_name', __FILE__, __LINE__);
+               $res_ext_crt = SQL_QUERY("SELECT id AS ext_id, ext_name, ext_name, ext_active, ext_version
+FROM `{!_MYSQL_PREFIX!}_extensions`" . $add . "
+ORDER BY ext_name", __FILE__, __LINE__);
        }
 }
 
@@ -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
@@ -228,7 +225,7 @@ if ((SQL_NUMROWS($res_ext_crt) > 0) && ((($GLOBALS['cache_mode'] == 'init') && (
                $FQFN = sprintf("%sinc/extensions/ext-%s.php", constant('PATH'), $content['ext_name']);
 
                // Does the extension file exists?
-               if (FILE_READABLE($FQFN)) {
+               if (isFileReadable($FQFN)) {
                        // By default no extension is always active, except sql_patches
                        EXT_SET_ALWAYS_ACTIVE('N');
 
@@ -247,10 +244,10 @@ if ((SQL_NUMROWS($res_ext_crt) > 0) && ((($GLOBALS['cache_mode'] == 'init') && (
                        // CSS file handling:
                        if ((!isset($content['ext_css'])) || ($content['ext_css'] == 'Y')) {
                                // Create FQFN for the CSS file
-                               $FQFN = sprintf("%stheme/%s/css/%s.css", constant('PATH'), GET_CURR_THEME(), $content['ext_name']);
+                               $FQFN = sprintf("%stheme/%s/css/%s.css", constant('PATH'), getCurrentTheme(), $content['ext_name']);
 
                                // Is the file there?
-                               if (FILE_READABLE($FQFN)) {
+                               if (isFileReadable($FQFN)) {
                                        // CSS file for extension was found (use only relative path for now!)
                                        EXT_ADD_CSS_FILE($content['ext_name'] . '.css');
                                        $content['ext_css'] = 'Y';
@@ -268,28 +265,31 @@ if ((SQL_NUMROWS($res_ext_crt) > 0) && ((($GLOBALS['cache_mode'] == 'init') && (
                                // Remember this value for later usage
                                $GLOBALS['cache_array']['active_extensions'][$content['ext_name']] = EXT_GET_ALWAYS_ACTIVE();
                        }
-               } elseif (!FILE_READABLE($FQFN)) {
+               } elseif (!isFileReadable($FQFN)) {
                        // Deleted extension file so we mark it for removal from DB
                        $DEL[] = $content['ext_name'];
                }
        } // 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)
-               LOAD_INC_ONCE('inc/load_cache.php');
-       } // END - if
+               loadIncludeOnce('inc/load_cache.php');
+       } 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
@@ -300,11 +300,11 @@ if (!empty($DEL[0])) {
        // Remove extensions from two tables: extension registry and tasks table
        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",
+               SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_extensions` WHERE `ext_name`='%s' LIMIT 1",
                        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