X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fload_extensions.php;h=f551ef47b7591c74e7b59193e56a1fa6505a87ab;hb=5ab0d021f3e96722af5d96d2b9036430200c06cb;hp=52acbc9cead3db1fa104bd887c4e0a70ff04cf4d;hpb=66b91ce490ab549425619c95fc12086e126d541b;p=mailer.git diff --git a/inc/load_extensions.php b/inc/load_extensions.php index 52acbc9cea..f551ef47b7 100644 --- a/inc/load_extensions.php +++ b/inc/load_extensions.php @@ -1,316 +1,3 @@ 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? 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'); - } elseif (getConfig('cache_exts') != 'Y') { - // Cache will not be created for extensions - $GLOBALS['cache_mode'] = 'skip'; - } -} // END - if - -// Load cache? -if ($GLOBALS['cache_mode'] == 'load') { - // Init include array - $EXT_POOL = array(); - - // Re-initialize handler - $GLOBALS['cache_instance']->loadCacheFile('extensions', true); - - // Load extension data from cache file - $EXT_DUMMY = $GLOBALS['cache_instance']->getArrayFromCache(); - - // Is the cache file fine? - if (!isset($EXT_DUMMY['ext_name'])) { - // Cache file is damaged so kill it - $GLOBALS['cache_instance']->destroyCacheFile(); - - // Retry it - require(__FILE__); - return; - } // END - if - - // Begin with the cache preparation of extensions - $EXT_NAMES = array(); - foreach ($EXT_DUMMY['ext_name'] as $k => $name) { - // Load CSS file - if ($EXT_DUMMY['ext_css'][$k] == 'Y') EXT_ADD_CSS_FILE($name . '.css'); - - // Load extension file itself - if ((($EXT_DUMMY['ext_active'][$k] == 'Y') || ($EXT_DUMMY['ext_keep'][$k] == 'Y') || (IS_ADMIN())) && (!in_array($name, array('sql_patches', 'cache')))) { - $EXT_POOL[] = $name; - } // END - if - - // Version number - $EXT_DUMMY['ext_version'][$name] = $EXT_DUMMY['ext_version'][$k]; - unset($EXT_DUMMY['ext_version'][$k]); - - // Extension is active - $EXT_DUMMY['ext_active'][$name] = $EXT_DUMMY['ext_active'][$k]; - unset($EXT_DUMMY['ext_active'][$k]); - - // Ext menu - $EXT_DUMMY['ext_menu'][$name] = $EXT_DUMMY['ext_menu'][$k]; - unset($EXT_DUMMY['ext_menu'][$k]); - - // Extension id - $EXT_DUMMY['ext_id'][$name] = $EXT_DUMMY['ext_id'][$k]; - $id = $EXT_DUMMY['ext_id'][$name]; - unset($EXT_DUMMY['ext_id'][$k]); - - // Add ext name - $EXT_NAMES[$id] = $name; - - // Add deprecated flag (defaults to 'not deprecated') - $EXT_DUMMY['ext_deprecated'][$name] = 'N'; - - // Mark it as active extension - $GLOBALS['cache_array']['active_extensions'][$name] = $EXT_DUMMY['ext_keep'][$k]; - unset($EXT_DUMMY['ext_keep'][$k]); - - // Remove unneccessary data from memory - unset($EXT_DUMMY['ext_css'][$k]); - } // END - foreach - - // Write dummy array back - $EXT_DUMMY['ext_name'] = $EXT_NAMES; - unset($EXT_NAMES); - - // Loading cache is done so let's free some memory! - unset($EXT_DUMMY['ext_keep']); - unset($EXT_DUMMY['ext_css']); - $GLOBALS['cache_array']['extensions'] = $EXT_DUMMY; - unset($EXT_DUMMY); - - // No database load needed - $res_ext_crt = false; - - // Load all extension files - foreach ($EXT_POOL as $ext) { - LOAD_EXTENSION($ext); - } // END - foreach - - // Load more cache files (like admins) - loadIncludeOnce('inc/load_cache.php'); - - // Remove array - unset($EXT_POOL); -} else { - // 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 (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__); - } 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__); - } -} - -// Array for removed but not uninstalled extensions -$DEL = array(); - -// At least one found? -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 - $content['ext_menu'] = 'N'; - if (MODULE_HAS_MENU($content['ext_name'], true)) { - $content['ext_menu'] = 'Y'; - } // END - if - - // Generate FQFN for extension - $INC = sprintf("inc/extensions/ext-%s.php", $content['ext_name']); - - // Does the extension file exists? - if (isIncludeReadable($INC)) { - // By default no extension is always active, except sql_patches - EXT_SET_ALWAYS_ACTIVE('N'); - - // Load extension - if (($content['ext_name'] != 'sql_patches') && (($content['ext_name'] != 'cache') || (!EXT_IS_ACTIVE('cache')))) { - // Load extension - LOAD_EXTENSION($content['ext_name']); - } else { - // Keep sql_patches always active - EXT_SET_ALWAYS_ACTIVE('Y'); - } - - // Transfer EXT_ALWAYS_ACTIVE flag - $content['ext_keep'] = EXT_GET_ALWAYS_ACTIVE(); - - // 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", getConfig('PATH'), getCurrentTheme(), $content['ext_name']); - - // Is the file there? - 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'; - } else { - // Don't load CSS file - $content['ext_css'] = 'N'; - } - } // END - if - - // Shall we cache? - if ($GLOBALS['cache_mode'] == 'init') { - // Add cache row - $GLOBALS['cache_instance']->addRow($content); - } elseif ($GLOBALS['cache_mode'] == 'no') { - // Remember this value for later usage - $GLOBALS['cache_array']['active_extensions'][$content['ext_name']] = EXT_GET_ALWAYS_ACTIVE(); - } - } elseif (!isFileReadable($FQFN)) { - // Deleted extension file so we mark it for removal from DB - $DEL[] = $content['ext_name']; - } - } // END - while - - if ($GLOBALS['cache_mode'] == 'init') { - // Close cache file - $GLOBALS['cache_instance']->finalize(); - - // Load more cache files (like admins) - 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')) || (($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 -runFilterChain('load_includes'); - -// Uninstall extensions that are no longer in our system -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", - 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__); - } // END - foreach - - // I think it's not neccessary to run the optimization function here - // because we didn't delete so much data from database. Can you aggree? -} // END - if - -// +// @DEPRECATED ?>