X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fload_extensions.php;h=f551ef47b7591c74e7b59193e56a1fa6505a87ab;hb=d7d40e177e09a7161b79bfc95a1d2e91fdff4691;hp=82337575ee6fa11e6853dcb71b8ff1245beefaa1;hpb=4c1b82f6fa4d79dcbe9e747bceb675759206b4a8;p=mailer.git diff --git a/inc/load_extensions.php b/inc/load_extensions.php index 82337575ee..f551ef47b7 100644 --- a/inc/load_extensions.php +++ b/inc/load_extensions.php @@ -1,330 +1,3 @@ 'Y'); // KEEP THIS ALWAYS ACTIVE! -} else { - // Initialize array for "always keep active extensions" - $cacheArray['active_extensions'] = array(); -} - -// -// Load extensions -// -if (EXT_IS_ACTIVE("cache")) -{ - // Load cache extension alone - include_once(PATH."inc/libs/cache_functions.php"); - $cacheMode = ""; - include_once(PATH."inc/extensions/ext-cache.php"); - switch($cacheInstance->cache_file("extensions", true)) - { - case true : $cacheMode = "load"; break; - case false: $cacheMode = "init"; break; - } - - // Do not recreate cache file when it's switched off! - if (($cacheMode == "init") && ($_CONFIG['cache_exts'] == 'N')) $cacheMode = "skip"; - - // Load language - if ($cacheMode == "load") include(PATH."inc/language/cache_".GET_LANGUAGE().".php"); -} else { - $cacheMode = "no"; -} - -if ($cacheMode == "load") -{ - // Load more cache files (like admins) - require_once(PATH."inc/load_cache.php"); - - // Re-initialize handler - $cacheInstance->cache_file("extensions", true); - - // Load extension data from cache file - $EXT_DUMMY = $cacheInstance->cache_load(); - foreach ($EXT_DUMMY['ext_name'] as $k=>$name) - { - // Load functions file - if ($EXT_DUMMY['ext_funcs'][$k] == 'Y') require_once(PATH."inc/libs/".$name."_functions.php"); - - // Load Language file - if ($EXT_DUMMY['ext_lang'][$k] == 'Y') - { - $INC = sprintf(PATH."inc/language/%s_%s.php", $name, GET_LANGUAGE()); - if (file_exists($INC)) require_once($INC); - } - - // Load CSS file - if ($EXT_DUMMY['ext_css'][$k] == 'Y') $EXT_CSS_FILES[] = "".$name.".css"; - - // Load extension file itself - if (($EXT_DUMMY['ext_active'][$k] == 'Y') || ($EXT_DUMMY['ext_keep'][$k] == 'Y') || (IS_ADMIN())) - { - require_once(PATH."inc/extensions/ext-".$name.".php"); - } - - // Transfer version number and active status - $EXT_DUMMY['ext_version'][$name] = $EXT_DUMMY['ext_version'][$k]; - unset($EXT_DUMMY['ext_version'][$k]); - $EXT_DUMMY['ext_active'][$name] = $EXT_DUMMY['ext_active'][$k]; - unset($EXT_DUMMY['ext_active'][$k]); - $EXT_DUMMY['ext_menu'][$name] = $EXT_DUMMY['ext_menu'][$k]; - unset($EXT_DUMMY['ext_menu'][$k]); - $cacheArray['active_extensions']['$name'] = $EXT_DUMMY['ext_keep'][$k]; - unset($EXT_DUMMY['ext_keep'][$k]); - $k2 = $EXT_DUMMY['ext_id'][$k]; - $EXT_DUMMY['ext_id'][$k2] = $name; - if ($k2 != $k) unset($EXT_DUMMY['ext_id'][$k]); - - // Remove unneccessary data from memory - unset($EXT_DUMMY['ext_lang'][$k]); - unset($EXT_DUMMY['ext_css'][$k]); - unset($EXT_DUMMY['ext_funcs'][$k]); - } - - // Close cache file - $cacheInstance->cache_close(); - - // Loading cache is done so let's free some memory! - unset($EXT_DUMMY['ext_lang']); - unset($EXT_DUMMY['ext_keep']); - unset($EXT_DUMMY['ext_css']); - unset($EXT_DUMMY['ext_funcs']); - $cacheArray['extensions'] = $EXT_DUMMY; - unset($EXT_DUMMY); - - // No database load needed - $res_ext_crt = false; -} - else -{ - // If current user is not admin load only activated extensions - // The admin shall use every available extension for testing purposes - if ((!IS_ADMIN()) && ($cacheMode != "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, ext_name, ext_lang_file, ext_has_css, ext_active, ext_version -FROM "._MYSQL_PREFIX."_extensions".$ADD." -ORDER BY ext_name", __FILE__, __LINE__); - } - else - { - // Old obsulete query string - $res_ext_crt = SQL_QUERY("SELECT id, ext_name, ext_lang_file, 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) && (($cacheMode == "init") || ($cacheMode == "no")) && ($CSS != "1") && ($CSS != "-1")) -{ - // Load theme management - require_once(PATH."inc/theme-manager.php"); - - // If we need to init the cache init it now - if ($cacheMode == "init") $cacheInstance->cache_init("EXTENSIONS"); - - // Extensions are registered so we load them - while (list($EXT_ID, $name, $lang, $css, $active, $version) = SQL_FETCHROW($res_ext_crt)) - { - // Get menu entry - $result_menu = SQL_QUERY_ESC("SELECT has_menu FROM "._MYSQL_PREFIX."_mod_reg WHERE module='%s' LIMIT 1", - array($name), __FILE__, __LINE__); - list($menu) = SQL_FETCHROW($result_menu); - //* DEBUG: */ echo "*".$name."/".$menu."*
"; - - // An empty menu entry will be interpreted as N (no menu) to avoid problems - if (empty($menu)) $menu = 'N'; - - // Load extensions - $file1 = sprintf(PATH."inc/extensions/ext-%s.php", $name); - $file2 = $file1; $EXT_CSS = 'N'; $EXT_ALWAYS_ACTIVE = 'N'; - - // Special functions file - $file3 = sprintf(PATH."inc/libs/%s_functions.php", $name); - - // Does the extension file exists? - if (file_exists($file1) && is_readable($file1)) - { - // If there's no language file specified we don't need to load one... ;-) - if (!empty($lang)) { - // Create language file - $file2 = sprintf(PATH."inc/language/%s_%s.php", $lang, GET_LANGUAGE()); - } - - if (file_exists($file3) && is_readable($file3)) - { - // Special functions file - $funcs = 'Y'; - require_once($file3); - } - else - { - // Don't load functions file - $funcs = 'N'; - } - - // Do we need a language file? - if (($file1 != $file2) && (file_exists($file2)) && (is_readable($file2))) - { - // Load language file - $lang = 'Y'; - include($file2); - } - else - { - // Don't load language file - $lang = 'N'; - } - - // Load extension - if ($name != "sql_patches") - { - // Load extension's file - include_once($file1); - } - else - { - // KEEP sql_patches ALWAYS ACTIVE! - $EXT_ALWAYS_ACTIVE = 'Y'; - } - - if ($css == 'Y') - { - $CSS_FILE = PATH."theme/".GET_CURR_THEME()."/css/".$name.".css"; - if (file_exists($CSS_FILE)) - { - // CSS file for extension was found (use only relative path for now!) - $EXT_CSS_FILES[] = $name.".css"; - } - else - { - // Don't load CSS file - $css = 'N'; - } - } - - // Add cache row - if ($cacheMode == "init") - { - $cacheInstance->add_row(array( - 'ext_id' => $EXT_ID, - 'ext_name' => $name, - 'ext_lang' => $lang, - 'ext_css' => $css, - 'ext_menu' => $menu, - 'ext_funcs' => $funcs, - 'ext_active' => $active, - 'ext_version' => $version, - 'ext_keep' => $EXT_ALWAYS_ACTIVE, - )); - } - elseif ($cacheMode == "no") - { - // Remember this value for later usage - $cacheArray['active_extensions'][$name] = $EXT_ALWAYS_ACTIVE; - } - } - elseif (!file_exists($file1)) - { - // Deleted extension file so we mark it for removal from DB - $DEL[] = $name; - } - } - - if ($cacheMode == "init") - { - // Close cache file - $cacheInstance->cache_close(); - - // Load more cache files (like admins) - require_once(PATH."inc/load_cache.php"); - } -} - -// Free memory -SQL_FREERESULT($res_ext_crt); - -// Load include files -if (!empty($INC_POOL[0])) -{ - foreach ($INC_POOL as $inc) - { - require_once($inc); - } -} - -// 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 $name) - { - // First remove entry from extensions table - $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_extensions WHERE ext_name='%s' LIMIT 1", - array($name), __FILE__, __LINE__); - - // Remove (maybe?) found tasks (main task and possible updates - $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_task_system WHERE subject LIKE '[%s:] %' AND (task_type='EXTENSION' OR task_type='EXTENSION_UPDATE')", - array($name), __FILE__, __LINE__); - } - - // 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? -} -// +// @DEPRECATED ?>