X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fextensions%2Fext-cache.php;h=5f7a2d412beaad44aca637f0ea3cecf0f74fcf0a;hp=7921f89e2d50422c1a03edff21ec0ee7cf7c7787;hb=4c83f0cc7459cad9ec9c1c68963f5365155ee935;hpb=1b4494c45790f1ba6808bb6a037d777147bd8f23 diff --git a/inc/extensions/ext-cache.php b/inc/extensions/ext-cache.php index 7921f89e2d..5f7a2d412b 100644 --- a/inc/extensions/ext-cache.php +++ b/inc/extensions/ext-cache.php @@ -33,37 +33,45 @@ ************************************************************************/ // Some security stuff... -if ((ereg(basename(__FILE__), $_SERVER['PHP_SELF']))) -{ +if (!defined('__SECURITY')) { $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php"; require($INC); } // Version number -$EXT_VERSION = "0.1.7"; +$EXT_VERSION = "0.2.2"; // Auto-set extension version if (empty($EXT_VER)) $EXT_VER = $EXT_VERSION; // Version history array (add more with , "0.1" and so on) -$EXT_VER_HISTORY = array("0.0", "0.0.1", "0.0.2", "0.0.3", "0.0.4", "0.0.5", "0.0.6", "0.0.7", "0.0.8", "0.0.9", "0.1.0", "0.1.1", "0.1.2", "0.1.3", "0.1.4", "0.1.5", "0.1.6", "0.1.7"); +$EXT_VER_HISTORY = array("0.0", "0.0.1", "0.0.2", "0.0.3", "0.0.4", "0.0.5", "0.0.6", "0.0.7", "0.0.8", "0.0.9", "0.1.0", "0.1.1", "0.1.2", "0.1.3", "0.1.4", "0.1.5", "0.1.6", "0.1.7", "0.1.8", "0.1.9", "0.2.0", "0.2.1", "0.2.2"); switch ($EXT_LOAD_MODE) { -case "register": // Do stuff when installtion is running (modules.php?module=admin&action=login is called) +case "register": // Do stuff when installation is running (modules.php?module=admin&action=login is called) // SQL commands to run - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_update bigint(20) not null default '3600'"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_path varchar(255) not null default 'cache/'"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_tested tinyint(1) not null default '0'"; - $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('setup', 'config_cache', 'Cache-Einstellungen', 'Update-Interval des Caches usw. können Sie hier ändern.', 9)"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_update BIGINT(20) UNSIGNED NOT NULL DEFAULT 3600"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_path VARCHAR(255) NOT NULL DEFAULT 'cache/'"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_tested TINYINT(1) UNSIGNED NOT NULL DEFAULT 0"; + $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_cache','Cache-Einstellungen','Update-Interval des Caches usw. können Sie hier ändern.', 9)"; break; case "remove": // Do stuff when removing extension // SQL commands to run - $SQLs[] = "DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_admin_menu WHERE what='config_cache' OR what='cache_stats' LIMIT 2"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config DROP cache_update"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config DROP cache_path"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config DROP cache_tested"; + $SQLs[] = "DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE `what`='config_cache' OR `what`='cache_stats' LIMIT 2"; + + // Unregister all filters + UNREGISTER_FILTER('extension_update', 'CACHE_DESTROY_ON_EXT_CHANGE', true, $dry_run); + UNREGISTER_FILTER('post_extension_installed', 'CACHE_DESTROY_ON_EXT_CHANGE', true, $dry_run); + UNREGISTER_FILTER('post_extension_installed', 'CACHE_PURGE_ADMIN_MENU', true, $dry_run); + UNREGISTER_FILTER('post_extension_run_sql', 'CACHE_DESTROY_ON_EXT_CHANGE', true, $dry_run); + UNREGISTER_FILTER('post_extension_run_sql', 'CACHE_PURGE_ADMIN_MENU', true, $dry_run); + UNREGISTER_FILTER('post_admin_added', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, $dry_run); + UNREGISTER_FILTER('post_admin_edited', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, $dry_run); + UNREGISTER_FILTER('post_admin_deleted', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, $dry_run); + UNREGISTER_FILTER('post_admin_reset_pass', 'CACHE_DESTROY_ON_ADMIN_CHANGE', true, $dry_run); + UNREGISTER_FILTER('extension_remove', 'CACHE_DESTROY_ALL', true, $dry_run); break; case "activate": // Do stuff when admin activates this extension @@ -95,12 +103,13 @@ case "update": // Update an extension break; case "0.0.4": // SQL queries for v0.0.4 - // Update notes (these will be set as task text!) - if (EXT_IS_ACTIVE("cache")) - { + // Is the cache extension itself there? + if (EXT_IS_ACTIVE("cache")) { // Check for cache when extension is already installed - if ($CACHE->cache_file("extensions", true)) $CACHE->cache_destroy(); - } + if ($GLOBALS['cache_instance']->loadCacheFile("extensions", true)) $GLOBALS['cache_instance']->destroyCacheFile(); + } // END - if + + // Update notes (these will be set as task text!) $UPDATE_NOTES = "Spalte "keep_active" ist hinzugefügt. Cache wurde reinitialisiert."; break; @@ -115,9 +124,9 @@ case "update": // Update an extension break; case "0.0.7": // SQL queries for v0.0.7 - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD db_hits bigint(20) not null default '0'"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_hits bigint(20) not null default '0'"; - $SQLs[] = "INSERT INTO "._MYSQL_PREFIX."_admin_menu (action, what, title, descr, sort) VALUES ('stats', 'cache_stats', 'DB-Cache', 'Auf Cache und gesamte Datenbank registrierte Anfragen anzeigen.', 4)"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD db_hits BIGINT(20) UNSIGNED NOT NULL DEFAULT 0"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_hits BIGINT(20) UNSIGNED NOT NULL DEFAULT 0"; + $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('stats','cache_stats','DB-Cache','Auf Cache und gesamte Datenbank registrierte Anfragen anzeigen.', 4)"; // Update notes (these will be set as task text!) $UPDATE_NOTES = "Hits auf den Cache werden gezählt."; @@ -125,7 +134,7 @@ case "update": // Update an extension case "0.0.8": // SQL queries for v0.0.8 // Update notes (these will be set as task text!) - $UPDATE_NOTES = "Das Umschreiben der Cache-Daten hat eine Fehlermeldung Falsches Passwort! im Admin-Bereich verursacht."; + $UPDATE_NOTES = "Das Umschreiben der Cache-Daten hat eine Fehlermeldung Falsches Passwort! im Admin-Bereich verursacht."; break; case "0.0.9": // SQL queries for v0.0.9 @@ -140,22 +149,22 @@ case "update": // Update an extension case "0.1.1": // SQL queries for v0.1.1 // Update notes (these will be set as task text!) - $UPDATE_NOTES = "Fehler Division durch 0 repariert in den DB-Cache Statistiken."; + $UPDATE_NOTES = "Fehler Division durch 0 repariert in den DB-Cache Statistiken."; break; case "0.1.2": // SQL queries for v0.1.2 // Update notes (these will be set as task text!) - $UPDATE_NOTES = "Die Tabelen "._MYSQL_PREFIX."_config, "._MYSQL_PREFIX."_refsystem, "._MYSQL_PREFIX."_refdepths und "._MYSQL_PREFIX."_mod_reg werden nun auch ausgelagert."; + $UPDATE_NOTES = "Die Tabelen {!_MYSQL_PREFIX!}_config, {!_MYSQL_PREFIX!}_refsystem, {!_MYSQL_PREFIX!}_refdepths und {!_MYSQL_PREFIX!}_mod_reg werden nun auch ausgelagert."; break; case "0.1.3": // SQL queries for v0.1.3 - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_admins enum('Y', 'N') not null default 'Y'"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_acls enum('Y', 'N') not null default 'Y'"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_exts enum('Y', 'N') not null default 'Y'"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_config enum('Y', 'N') not null default 'Y'"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_modreg enum('Y', 'N') not null default 'Y'"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_refdepth enum('Y', 'N') not null default 'Y'"; - $SQLs[] = "ALTER TABLE "._MYSQL_PREFIX."_config ADD cache_refsys enum('Y', 'N') not null default 'Y'"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_admins ENUM('Y','N') NOT NULL DEFAULT 'Y'"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_acls ENUM('Y','N') NOT NULL DEFAULT 'Y'"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_exts ENUM('Y','N') NOT NULL DEFAULT 'Y'"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_config ENUM('Y','N') NOT NULL DEFAULT 'Y'"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_modreg ENUM('Y','N') NOT NULL DEFAULT 'Y'"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_refdepth ENUM('Y','N') NOT NULL DEFAULT 'Y'"; + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_refsys ENUM('Y','N') NOT NULL DEFAULT 'Y'"; // Update notes (these will be set as task text!) $UPDATE_NOTES = "Alle cache-baren Tabellen sind nun einzelnt ein- bzw. ausschaltbar. Falls die eine oder andere ausgelagerte Tabelle also Fehler verursachen sollte, so können Sie diese hier abschalten. Beachten Sie aber bitte, dass dann mehr Abfragen an die Datenbank gestellt wird und dies bedeutend mehr Zeit braucht, als nur die Daten aus einem Datenfeld zu laden, das sich im Speicher aufhält."; @@ -163,7 +172,7 @@ case "update": // Update an extension case "0.1.4": // SQL queries for v0.1.4 // Update notes (these will be set as task text!) - $UPDATE_NOTES = "Fehler Division durch 0 repariert in inc/load_cache.php."; + $UPDATE_NOTES = "Fehler Division durch 0 repariert in inc/load_cache.php."; break; case "0.1.5": // SQL queries for v0.1.5 @@ -173,52 +182,80 @@ case "update": // Update an extension case "0.1.6": // SQL queries for v0.1.6 // Update notes (these will be set as task text!) - $UPDATE_NOTES = "Probleme w&auuml;hrend des Installationsvorganges beseitigt."; + $UPDATE_NOTES = "Probleme während des Installationsvorganges beseitigt."; break; case "0.1.7": // SQL queries for v0.1.7 // Update notes (these will be set as task text!) $UPDATE_NOTES = "CSS-Klassenname gefixt in Templates."; break; + + case "0.1.8": // SQL queries for v0.1.8 + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_themes ENUM('Y','N') NOT NULL DEFAULT 'Y'"; + + // Update notes (these will be set as task text!) + $UPDATE_NOTES = "Daten von installierten Themes werden nun gecacht."; + break; + + case "0.1.9": // SQL queries for v0.1.9 + $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD cache_admin_menu ENUM('Y','N') NOT NULL DEFAULT 'N'"; + + // Update notes (these will be set as task text!) + $UPDATE_NOTES = "Administratormenü experimentell gecacht."; + break; + + case "0.2.0": // SQL queries for v0.2.0 + // This update depends on sql_patches + $EXT_UPDATE_DEPENDS = "sql_patches"; + + // Update notes (these will be set as task text!) + $UPDATE_NOTES = "Die Erweiterung hängt nun von der sql_patches ab."; + break; + + case "0.2.1": // SQL queries for v0.2.1 + // Register the new filter + REGISTER_FILTER('extension_update', 'CACHE_DESTROY_ON_EXT_CHANGE', false, true, $dry_run); + REGISTER_FILTER('post_extension_installed', 'CACHE_DESTROY_ON_EXT_CHANGE', false, true, $dry_run); + REGISTER_FILTER('post_extension_run_sql', 'CACHE_DESTROY_ON_EXT_CHANGE', false, true, $dry_run); + REGISTER_FILTER('post_admin_added', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, $dry_run); + REGISTER_FILTER('post_admin_edited', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, $dry_run); + REGISTER_FILTER('post_admin_deleted', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, $dry_run); + REGISTER_FILTER('post_admin_reset_pass', 'CACHE_DESTROY_ON_ADMIN_CHANGE', false, true, $dry_run); + REGISTER_FILTER('extension_remove', 'CACHE_DESTROY_ALL', false, true, $dry_run); + + // Update notes (these will be set as task text!) + $UPDATE_NOTES = "Filter für Erweiterungsmanagement hinzugefügt."; + break; + + case "0.2.2": // SQL queries for v0.2.2 + // Register the new filter + REGISTER_FILTER('post_extension_installed', 'CACHE_PURGE_ADMIN_MENU', false, true, $dry_run); + REGISTER_FILTER('post_extension_run_sql', 'CACHE_PURGE_ADMIN_MENU', false, true, $dry_run); + + // Update notes (these will be set as task text!) + $UPDATE_NOTES = "Weitere Filter hinzugefügt."; + break; } break; -default: // Do stuff when extension is loaded - $DUMMY = LOAD_CONFIG("0"); - - // Load config and destroy dummy array - $CONFIG['cache_update'] = $DUMMY['cache_update']; // Last time the cache files are been re-created - $CONFIG['cache_path'] = $DUMMY['cache_path']; // Relative path for the cache files to 'inc/' - $CONFIG['cache_tested'] = $DUMMY['cache_tested']; // Says if cache path is tested or not - $CONFIG['db_hits'] = $DUMMY['db_hits']; // Counted hits on the database (all!) - $CONFIG['cache_hits'] = $DUMMY['cache_hits']; // Counted hits on the cache arrays in memory - $CONFIG['cache_admins'] = $DUMMY['cache_admins']; // Is the table '_admins' cacheable? - $CONFIG['cache_acls'] = $DUMMY['cache_acls']; // Is the table '_admins_acls' cacheable? - $CONFIG['cache_exts'] = $DUMMY['cache_exts']; // Is the table '_extensions' cacheable? - $CONFIG['cache_config'] = $DUMMY['cache_config']; // Is the table '_config' cacheable? - $CONFIG['cache_modreg'] = $DUMMY['cache_modreg']; // Is the table '_mod_reg' cacheable? - $CONFIG['cache_refdepth'] = $DUMMY['cache_refdepth']; // Is the table '_refdepths' cacheable? - $CONFIG['cache_refsys'] = $DUMMY['cache_refsys']; // Is the table '_refsystem' cacheable? - unset($DUMMY); +case "test": // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305. + break; +default: // Do stuff when extension is loaded // Create instance on class - if ($CACHE_FILE != "init") - { + if ($GLOBALS['cacheMode'] != "init") { // Initialize cache system only when it's needed - $CACHE = new mxchange_cache($CONFIG['cache_update'], PATH."inc/".$CONFIG['cache_path'], $CONFIG['cache_tested']); - if ($CACHE->ret != "done") - { + $GLOBALS['cache_instance'] = new CacheSystem(getConfig('cache_update'), constant('PATH')."inc/".getConfig('cache_path'), getConfig('cache_tested')); + if ($GLOBALS['cache_instance']->getStatus() != "done") { // Failed to initialize cache sustem - ADD_FATAL(__FILE__."(".__LINE__."): ".CACHE_CANNOT_INITIALIZE); - } - } + addFatalMessage(__FILE__."(".__LINE__."): ".CACHE_CANNOT_INITIALIZE); + } // END - if + } // END - if break; } -// Language file prefix -$EXT_LANG_PREFIX = "cache"; -// Extension is always active? -$EXT_ALWAYS_ACTIVE = 'N'; +// Keep this extension always active! +$EXT_ALWAYS_ACTIVE = "Y"; // ?>