X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=0.2.1%2Finc%2Fload_extensions.php;h=91a3fb690cd07b10325107e7ced61ec730342d45;hb=f29e62abafcf57b076a02b9fe30e14f93baf12f1;hp=9154effc5100b59a45ef6e473050d4c37b5ed0b0;hpb=2408c1599f73859fe4a2938e87bc080b9dcb9cca;p=mailer.git diff --git a/0.2.1/inc/load_extensions.php b/0.2.1/inc/load_extensions.php index 9154effc51..91a3fb690c 100644 --- a/0.2.1/inc/load_extensions.php +++ b/0.2.1/inc/load_extensions.php @@ -1,345 +1,345 @@ - "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."*
"; - - // 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? -} -// -?> + "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."*
"; + + // 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? +} +// +?>