X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fload_extensions.php;h=f551ef47b7591c74e7b59193e56a1fa6505a87ab;hp=fae66b3b568d0b6bd4fc9ba83a9b5dd6fc6b0f11;hb=64c8349613addc3da2242c5cd6b99d64e3fb5f8e;hpb=3a9723e159b1d9621c8a62927c9b911d6b484286 diff --git a/inc/load_extensions.php b/inc/load_extensions.php index fae66b3b56..f551ef47b7 100644 --- a/inc/load_extensions.php +++ b/inc/load_extensions.php @@ -1,286 +1,3 @@ loadCacheFile("extensions", true)) && ($cacheInstance->extensionVersionMatches("sql_patches"))) { - case true : $cacheMode = "load"; break; - case false: $cacheMode = "init"; break; - } - - // Do we need to init the cache? - if (($cacheMode == "init") && (getConfig('cache_exts') == "Y")) { - // Init cache file - $cacheInstance->init("EXTENSIONS"); - $cacheInstance->storeExtensionVersion("sql_patches"); - } elseif (getConfig('cache_exts') == "N") { - // Cache will not be created for extensions - $cacheMode = "skip"; - } -} // END - if - -// Load cache? -if ($cacheMode == "load") { - // Init include array - $EXT_POOL = array(); - - // Re-initialize handler - $cacheInstance->loadCacheFile("extensions", true); - - // Load extension data from cache file - $EXT_DUMMY = $cacheInstance->getArrayFromCache(); - - // Is the cache file fine? - if (!isset($EXT_DUMMY['ext_name'])) { - // Cache file is damaged so kill it - $cacheInstance->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_CSS_FILES[] = "".$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 - $cacheArray['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']); - $cacheArray['extensions'] = $EXT_DUMMY; - unset($EXT_DUMMY); - - // No database load needed - $res_ext_crt = false; - - // Load more cache files (like admins) - require_once(PATH."inc/load_cache.php"); - - // Load all extension files - foreach ($EXT_POOL as $ext) { - LOAD_EXTENSION($ext); - } // END - foreach - - // 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()) && ($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 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) && ((($cacheMode == "init") && ($CSS != "1") && ($CSS != "-1")) || ($cacheMode == "no"))) { - // Load session management - require_once(PATH."inc/session.php"); - - // 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 - - // Load extensions - $file1 = sprintf("%sinc/extensions/ext-%s.php", PATH, $content['ext_name']); - $EXT_CSS = "N"; $EXT_ALWAYS_ACTIVE = "N"; - - // Does the extension file exists? - if (FILE_READABLE($file1)) { - // By default no extension is always active, except sql_patches - $EXT_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_ALWAYS_ACTIVE = "Y"; - } - - // Transfer EXT_ALWAYS_ACTIVE flag - $content['ext_keep'] = $EXT_ALWAYS_ACTIVE; - - // CSS file handling: - if ((!isset($content['ext_css'])) || ($content['ext_css'] == "Y")) { - // Create FQFN for the CSS file - $CSS_FILE = sprintf("%stheme/%s/css/%s.css", PATH, GET_CURR_THEME(), $content['ext_name']); - - // Is the file there? - if (FILE_READABLE($CSS_FILE)) { - // CSS file for extension was found (use only relative path for now!) - $EXT_CSS_FILES[] = $content['ext_name'].".css"; - $content['ext_css'] = "Y"; - } else { - // Don't load CSS file - $content['ext_css'] = "N"; - } - } // END - if - - // Shall we cache? - if ($cacheMode == "init") { - // Add cache row - $cacheInstance->addRow($content); - } elseif ($cacheMode == "no") { - // Remember this value for later usage - $cacheArray['active_extensions'][$content['ext_name']] = $EXT_ALWAYS_ACTIVE; - } - } elseif (!FILE_READABLE($file1)) { - // Deleted extension file so we mark it for removal from DB - $DEL[] = $content['ext_name']; - } - } // END - while - - if ($cacheMode == "init") { - // Close cache file - $cacheInstance->finalize(); - - // Load more cache files (like admins) - require_once(PATH."inc/load_cache.php"); - } // END - if - - // Free memory - SQL_FREERESULT($res_ext_crt); -} // END - if - -// Run the filter -RUN_FILTER('load_includes', $INC_POOL); - -// 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 ?>