X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fload_extensions.php;h=f551ef47b7591c74e7b59193e56a1fa6505a87ab;hb=5ab0d021f3e96722af5d96d2b9036430200c06cb;hp=59bc1518a04751a11b39b165dc1a3bd5890d9b3f;hpb=80e2def8ef2125fd4d7d1312ee3993ab613f0846;p=mailer.git diff --git a/inc/load_extensions.php b/inc/load_extensions.php index 59bc1518a0..f551ef47b7 100644 --- a/inc/load_extensions.php +++ b/inc/load_extensions.php @@ -1,307 +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 { - // Cache extension not active - $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(); - $EXT_NAMES = array(); - 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"); - } // END - if - - // Load Language file - if ($EXT_DUMMY['ext_lang'][$k] == "Y") { - $INC = sprintf("%sinc/language/%s_%s.php", PATH, $name, GET_LANGUAGE()); - if (FILE_READABLE($INC)) require_once($INC); - } // END - if - - // 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"); - } // 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; - - // Mark it as active extension - $cacheArray['active_extensions']['$name'] = $EXT_DUMMY['ext_keep'][$k]; - unset($EXT_DUMMY['ext_keep'][$k]); - - // Remove unneccessary data from memory - unset($EXT_DUMMY['ext_lang'][$k]); - unset($EXT_DUMMY['ext_css'][$k]); - unset($EXT_DUMMY['ext_funcs'][$k]); - } // END - foreach - - // Write dummy array back - $EXT_DUMMY['ext_name'] = $EXT_NAMES; - unset($EXT_NAMES); - - // 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 - $menu = "N"; - if (MODULE_HAS_MENU($name, true)) { - $menu = "Y"; - } // END - if - - // Load extensions - $file1 = sprintf("%sinc/extensions/ext-%s.php", PATH, $name); - $file2 = $file1; $EXT_CSS = "N"; $EXT_ALWAYS_ACTIVE = "N"; - - // Special functions file - $file3 = sprintf("%sinc/libs/%s_functions.php", PATH, $name); - - // Does the extension file exists? - if (FILE_READABLE($file1)) { - // If there's no language file specified we don't need to load one... ;-) - if (!empty($lang)) { - // Create language file - $file2 = sprintf("%sinc/language/%s_%s.php", PATH, $lang, GET_LANGUAGE()); - } - - if (FILE_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_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 = sprintf("%stheme/%s/css/%s.css", PATH, GET_CURR_THEME(), $name); - if (FILE_READABLE($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"; - } - } // END - if - - // 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_READABLE($file1)) { - // Deleted extension file so we mark it for removal from DB - $DEL[] = $name; - } - } // END - while - - if ($cacheMode == "init") { - // Close cache file - $cacheInstance->cache_close(); - - // Load more cache files (like admins) - require_once(PATH."inc/load_cache.php"); - } // END - if -} - -// Free memory -SQL_FREERESULT($res_ext_crt); - -// Load include files -if (!empty($INC_POOL[0])) { - foreach ($INC_POOL as $inc) { - require_once($inc); - } // END - foreach -} // END - if - -// 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__); - } // 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 ?>