-<?php\r
-/************************************************************************\r
- * MXChange v0.2.1 Start: 06/26/2004 *\r
- * =============== Last change: 07/01/2005 *\r
- * *\r
- * -------------------------------------------------------------------- *\r
- * File : load_extensions.php *\r
- * -------------------------------------------------------------------- *\r
- * Short description : Load all extensions *\r
- * -------------------------------------------------------------------- *\r
- * Kurzbeschreibung : Alle Erweiterungen laden *\r
- * -------------------------------------------------------------------- *\r
- * *\r
- * -------------------------------------------------------------------- *\r
- * Copyright (c) 2003 - 2007 by Roland Haeder *\r
- * For more information visit: http://www.mxchange.org *\r
- * *\r
- * This program is free software; you can redistribute it and/or modify *\r
- * it under the terms of the GNU General Public License as published by *\r
- * the Free Software Foundation; either version 2 of the License, or *\r
- * (at your option) any later version. *\r
- * *\r
- * This program is distributed in the hope that it will be useful, *\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *\r
- * GNU General Public License for more details. *\r
- * *\r
- * You should have received a copy of the GNU General Public License *\r
- * along with this program; if not, write to the Free Software *\r
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *\r
- * MA 02110-1301 USA *\r
- ************************************************************************/\r
-\r
-// Some security stuff...\r
-if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))\r
-{\r
- $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php";\r
- require($INC);\r
-}\r
-//\r
-global $EXT_CSS_FILES;\r
-$EXT_CSS_FILES = array();\r
-$ADD = "";\r
-\r
-// Skip loading extensions\r
-if ((!mxchange_installed) || (mxchange_installing)) return;\r
-\r
-// Load default sql_patches extension if present\r
-if (file_exists(PATH."inc/extensions/ext-sql_patches.php") && is_readable(PATH."inc/extensions/ext-sql_patches.php"))\r
-{\r
- // Load it...\r
- $EXT_LOAD_MODE = "";\r
- require_once(PATH."inc/extensions/ext-sql_patches.php");\r
- $KEEP_ACTIVE = array('sql_patches' => "Y"); // KEEP THIS ALWAYS ACTIVE!\r
-}\r
- else\r
-{\r
- // Initialize array for "always keep active extensions"\r
- $KEEP_ACTIVE = array();\r
-}\r
-\r
-//\r
-// Load extensions\r
-//\r
-if (EXT_IS_ACTIVE("cache"))\r
-{\r
- // Load cache extension alone\r
- include_once(PATH."inc/libs/cache_functions.php");\r
- $CACHE_FILE = "";\r
- include_once(PATH."inc/extensions/ext-cache.php");\r
- switch($CACHE->cache_file("extensions", true))\r
- {\r
- case true : $CACHE_FILE = "load"; break;\r
- case false: $CACHE_FILE = "init"; break;\r
- }\r
-\r
- // Do not recreate cache file when it's switched off!\r
- if (($CACHE_FILE == "init") && ($CONFIG['cache_exts'] == "N")) $CACHE_FILE = "skip";\r
-\r
- // Load language\r
- if ($CACHE_FILE == "load") include(PATH."inc/language/cache_".GET_LANGUAGE().".php");\r
-}\r
- else\r
-{\r
- $CACHE_FILE = "no";\r
-}\r
-\r
-if ($CACHE_FILE == "load")\r
-{\r
- // Load more cache files (like admins)\r
- require_once(PATH."inc/load_cache.php");\r
-\r
- // Re-initialize handler\r
- $CACHE->cache_file("extensions", true);\r
-\r
- // Load extension data from cache file\r
- $EXT_DUMMY = $CACHE->cache_load();\r
- foreach ($EXT_DUMMY['ext_name'] as $k=>$name)\r
- {\r
- // Load functions file\r
- if ($EXT_DUMMY['ext_funcs'][$k] == "Y") require_once(PATH."inc/libs/".$name."_functions.php");\r
-\r
- // Load Language file\r
- if ($EXT_DUMMY['ext_lang'][$k] == "Y")\r
- {\r
- $INC = sprintf(PATH."inc/language/%s_%s.php", $name, GET_LANGUAGE());\r
- if (file_exists($INC)) require_once($INC);\r
- }\r
-\r
- // Load CSS file\r
- if ($EXT_DUMMY['ext_css'][$k] == "Y") $EXT_CSS_FILES[] = "".$name.".css";\r
-\r
- // Load extension file itself\r
- if (($EXT_DUMMY['ext_active'][$k] == "Y") || ($EXT_DUMMY['ext_keep'][$k] == "Y") || (IS_ADMIN()))\r
- {\r
- require_once(PATH."inc/extensions/ext-".$name.".php");\r
- }\r
-\r
- // Transfer version number and active status\r
- $EXT_DUMMY['ext_version'][$name] = $EXT_DUMMY['ext_version'][$k];\r
- unset($EXT_DUMMY['ext_version'][$k]);\r
- $EXT_DUMMY['ext_active'][$name] = $EXT_DUMMY['ext_active'][$k];\r
- unset($EXT_DUMMY['ext_active'][$k]);\r
- $EXT_DUMMY['ext_menu'][$name] = $EXT_DUMMY['ext_menu'][$k];\r
- unset($EXT_DUMMY['ext_menu'][$k]);\r
- $KEEP_ACTIVE['$name'] = $EXT_DUMMY['ext_keep'][$k];\r
- unset($EXT_DUMMY['ext_keep'][$k]);\r
- $k2 = $EXT_DUMMY['ext_id'][$k];\r
- $EXT_DUMMY['ext_id'][$k2] = $name;\r
- if ($k2 != $k) unset($EXT_DUMMY['ext_id'][$k]);\r
-\r
- // Remove unneccessary data from memory\r
- unset($EXT_DUMMY['ext_lang'][$k]);\r
- unset($EXT_DUMMY['ext_css'][$k]);\r
- unset($EXT_DUMMY['ext_funcs'][$k]);\r
- }\r
-\r
- // Close cache file\r
- $CACHE->cache_close();\r
-\r
- // Loading cache is done so let's free some memory!\r
- unset($EXT_DUMMY['ext_lang']);\r
- unset($EXT_DUMMY['ext_keep']);\r
- unset($EXT_DUMMY['ext_css']);\r
- unset($EXT_DUMMY['ext_funcs']);\r
- $EXTENSIONS = $EXT_DUMMY;\r
- unset($EXT_DUMMY);\r
-\r
- // No database load needed\r
- $res_ext_crt = false;\r
-}\r
- else\r
-{\r
- // If current user is not admin load only activated extensions\r
- // The admin shall use every available extension for testing purposes\r
- if (!IS_ADMIN()) $ADD = " WHERE ext_active='Y'";\r
-\r
- if (GET_EXT_VERSION("sql_patches") >= "0.0.6")\r
- {\r
- // Query with CSS file from DB\r
- $res_ext_crt = SQL_QUERY("SELECT id, ext_name, ext_lang_file, ext_has_css, ext_active, ext_version\r
-FROM "._MYSQL_PREFIX."_extensions".$ADD."\r
-ORDER BY ext_name", __FILE__, __LINE__);\r
- }\r
- else\r
- {\r
- // Old obsulete query string\r
- $res_ext_crt = SQL_QUERY("SELECT id, ext_name, ext_lang_file, ext_name, ext_active, ext_version\r
-FROM "._MYSQL_PREFIX."_extensions".$ADD."\r
-ORDER BY ext_name", __FILE__, __LINE__);\r
- }\r
-}\r
-\r
-// Array for removed but not uninstalled extensions\r
-$DEL = array();\r
-\r
-// At least one found?\r
-if ((SQL_NUMROWS($res_ext_crt) > 0) && (($CACHE_FILE == "init") || ($CACHE_FILE == "no")) && ($CSS != "1") && ($CSS != "-1"))\r
-{\r
- // Load theme management\r
- require_once(PATH."inc/theme-manager.php");\r
-\r
- // If we need to init the cache init it now\r
- if ($CACHE_FILE == "init") $CACHE->cache_init("EXTENSIONS");\r
-\r
- // Extensions are registered so we load them\r
- while (list($EXT_ID, $name, $lang, $css, $active, $version) = SQL_FETCHROW($res_ext_crt))\r
- {\r
- // Get menu entry\r
- $result_menu = SQL_QUERY_ESC("SELECT has_menu FROM "._MYSQL_PREFIX."_mod_reg WHERE module='%s' LIMIT 1",\r
- array($name), __FILE__, __LINE__);\r
- list($menu) = SQL_FETCHROW($result_menu);\r
- //* DEBUG: */ echo "*".$name."/".$menu."*<br>";\r
-\r
- // An empty menu entry will be interpreted as N (no menu) to avoid problems\r
- if (empty($menu)) $menu = "N";\r
-\r
- // Load extensions\r
- $file1 = sprintf(PATH."inc/extensions/ext-%s.php", $name);\r
- $file2 = $file1; $EXT_CSS = "N"; $EXT_ALWAYS_ACTIVE = "N";\r
-\r
- // Special functions file\r
- $file3 = sprintf(PATH."inc/libs/%s_functions.php", $name);\r
-\r
- // Does the extension file exists?\r
- if (file_exists($file1) && is_readable($file1))\r
- {\r
- // If there's no language file specified we don't need to load one... ;-)\r
- if (!empty($lang)) {\r
- // Create language file\r
- $file2 = sprintf(PATH."inc/language/%s_%s.php", $lang, GET_LANGUAGE());\r
- }\r
-\r
- if (file_exists($file3) && is_readable($file3))\r
- {\r
- // Special functions file\r
- $funcs = "Y";\r
- require_once($file3);\r
- }\r
- else\r
- {\r
- // Don't load functions file\r
- $funcs = "N";\r
- }\r
-\r
- // Do we need a language file?\r
- if (($file1 != $file2) && (file_exists($file2)) && (is_readable($file2)))\r
- {\r
- // Load language file\r
- $lang = "Y";\r
- include($file2);\r
- }\r
- else\r
- {\r
- // Don't load language file\r
- $lang = "N";\r
- }\r
-\r
- // Load extension\r
- if ($name != "sql_patches")\r
- {\r
- // Load extension's file\r
- include_once($file1);\r
- }\r
- else\r
- {\r
- // KEEP sql_patches ALWAYS ACTIVE!\r
- $EXT_ALWAYS_ACTIVE = "Y";\r
- }\r
-\r
- if ($css == "Y")\r
- {\r
- $CSS_FILE = PATH."theme/".GET_CURR_THEME()."/css/".$name.".css";\r
- if (file_exists($CSS_FILE))\r
- {\r
- // CSS file for extension was found (use only relative path for now!)\r
- $EXT_CSS_FILES[] = $name.".css";\r
- }\r
- else\r
- {\r
- // Don't load CSS file\r
- $css = "N";\r
- }\r
- }\r
-\r
- // Add cache row\r
- if ($CACHE_FILE == "init")\r
- {\r
- $CACHE->add_row(array(\r
- 'ext_id' => $EXT_ID,\r
- 'ext_name' => $name,\r
- 'ext_lang' => $lang,\r
- 'ext_css' => $css,\r
- 'ext_menu' => $menu,\r
- 'ext_funcs' => $funcs,\r
- 'ext_active' => $active,\r
- 'ext_version' => $version,\r
- 'ext_keep' => $EXT_ALWAYS_ACTIVE,\r
- ));\r
- }\r
- elseif ($CACHE_FILE == "no")\r
- {\r
- // Remember this value for later usage\r
- $KEEP_ACTIVE[$name] = $EXT_ALWAYS_ACTIVE;\r
- }\r
- }\r
- elseif (!file_exists($file1))\r
- {\r
- // Deleted extension file so we mark it for removal from DB\r
- $DEL[] = $name;\r
- }\r
- }\r
-\r
- if ($CACHE_FILE == "init")\r
- {\r
- // Close cache file\r
- $CACHE->cache_close();\r
-\r
- // Load more cache files (like admins)\r
- require_once(PATH."inc/load_cache.php");\r
- }\r
-}\r
-\r
-// Free memory\r
-SQL_FREERESULT($res_ext_crt);\r
-\r
-// Compile configuration system\r
-/**\r
- * Commented out...\r
- *\r
- *foreach ($CONFIG as $k=>$v)\r
- *{\r
- * $CONFIG[$k] = COMPILE_CODE($v);\r
- *}\r
- */\r
-\r
-// Load include files\r
-if (!empty($INC_POOL[0]))\r
-{\r
- foreach ($INC_POOL as $inc)\r
- {\r
- require_once($inc);\r
- }\r
-}\r
-\r
-// Uninstall extensions that are no longer in our system\r
-if (!empty($DEL[0]))\r
-{\r
- // Remove extensions from two tables: extension registry and tasks table\r
- foreach ($DEL as $name)\r
- {\r
- // First remove entry from extensions table\r
- $result = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_extensions WHERE ext_name='%s' LIMIT 1",\r
- array($name), __FILE__, __LINE__);\r
-\r
- // Remove (maybe?) found tasks (main task and possible updates\r
- $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')",\r
- array($name), __FILE__, __LINE__);\r
- }\r
-\r
- // I think it's not neccessary to run the optimization function here\r
- // because we didn't delete so much data from database. Can you aggree?\r
-}\r
-//\r
-?>\r
+<?php
+/************************************************************************
+ * MXChange v0.2.1 Start: 06/26/2004 *
+ * =============== Last change: 07/01/2005 *
+ * *
+ * -------------------------------------------------------------------- *
+ * File : load_extensions.php *
+ * -------------------------------------------------------------------- *
+ * Short description : Load all extensions *
+ * -------------------------------------------------------------------- *
+ * Kurzbeschreibung : Alle Erweiterungen laden *
+ * -------------------------------------------------------------------- *
+ * *
+ * -------------------------------------------------------------------- *
+ * Copyright (c) 2003 - 2008 by Roland Haeder *
+ * For more information visit: http://www.mxchange.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ************************************************************************/
+
+// Some security stuff...
+if (ereg(basename(__FILE__), $_SERVER['PHP_SELF']))
+{
+ $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
+ require($INC);
+}
+//
+global $EXT_CSS_FILES;
+$EXT_CSS_FILES = array();
+$ADD = "";
+
+// Skip loading extensions
+if ((!mxchange_installed) || (mxchange_installing)) return;
+
+// Load default sql_patches extension if present
+if (file_exists(PATH."inc/extensions/ext-sql_patches.php") && is_readable(PATH."inc/extensions/ext-sql_patches.php"))
+{
+ // Load it...
+ $EXT_LOAD_MODE = "";
+ require_once(PATH."inc/extensions/ext-sql_patches.php");
+ $KEEP_ACTIVE = array('sql_patches' => "Y"); // KEEP THIS ALWAYS ACTIVE!
+}
+ else
+{
+ // Initialize array for "always keep active extensions"
+ $KEEP_ACTIVE = array();
+}
+
+//
+// Load extensions
+//
+if (EXT_IS_ACTIVE("cache"))
+{
+ // Load cache extension alone
+ include_once(PATH."inc/libs/cache_functions.php");
+ $CACHE_FILE = "";
+ include_once(PATH."inc/extensions/ext-cache.php");
+ switch($CACHE->cache_file("extensions", true))
+ {
+ case true : $CACHE_FILE = "load"; break;
+ case false: $CACHE_FILE = "init"; break;
+ }
+
+ // Do not recreate cache file when it's switched off!
+ if (($CACHE_FILE == "init") && ($CONFIG['cache_exts'] == "N")) $CACHE_FILE = "skip";
+
+ // Load language
+ if ($CACHE_FILE == "load") include(PATH."inc/language/cache_".GET_LANGUAGE().".php");
+}
+ else
+{
+ $CACHE_FILE = "no";
+}
+
+if ($CACHE_FILE == "load")
+{
+ // Load more cache files (like admins)
+ require_once(PATH."inc/load_cache.php");
+
+ // Re-initialize handler
+ $CACHE->cache_file("extensions", true);
+
+ // Load extension data from cache file
+ $EXT_DUMMY = $CACHE->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]);
+ $KEEP_ACTIVE['$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
+ $CACHE->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']);
+ $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()) $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) && (($CACHE_FILE == "init") || ($CACHE_FILE == "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 ($CACHE_FILE == "init") $CACHE->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."*<br>";
+
+ // 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 ($CACHE_FILE == "init")
+ {
+ $CACHE->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 ($CACHE_FILE == "no")
+ {
+ // Remember this value for later usage
+ $KEEP_ACTIVE[$name] = $EXT_ALWAYS_ACTIVE;
+ }
+ }
+ elseif (!file_exists($file1))
+ {
+ // Deleted extension file so we mark it for removal from DB
+ $DEL[] = $name;
+ }
+ }
+
+ if ($CACHE_FILE == "init")
+ {
+ // Close cache file
+ $CACHE->cache_close();
+
+ // Load more cache files (like admins)
+ require_once(PATH."inc/load_cache.php");
+ }
+}
+
+// Free memory
+SQL_FREERESULT($res_ext_crt);
+
+// Compile configuration system
+/**
+ * Commented out...
+ *
+ *foreach ($CONFIG as $k=>$v)
+ *{
+ * $CONFIG[$k] = COMPILE_CODE($v);
+ *}
+ */
+
+// 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?
+}
+//
+?>