]> git.mxchange.org Git - mailer.git/blobdiff - inc/extensions/ext-sql_patches.php
Bug with multiple registration of filters fixed (see fix_filters.php for details)
[mailer.git] / inc / extensions / ext-sql_patches.php
index 80a91853bf4ced8f99e8ae5e484cc3600b088b45..ecb7ec650d754ee35f7aa86b4dd7f9381ae0dbeb 100644 (file)
  * -------------------------------------------------------------------- *
  * Kurzbeschreibung  : Ausgelagertes "Profildaten aendern"              *
  * -------------------------------------------------------------------- *
  * -------------------------------------------------------------------- *
  * Kurzbeschreibung  : Ausgelagertes "Profildaten aendern"              *
  * -------------------------------------------------------------------- *
- *                                                                      *
+ * $Revision::                                                        $ *
+ * $Date::                                                            $ *
+ * $Tag:: 0.2.1-FINAL                                                 $ *
+ * $Author::                                                          $ *
+ * Needs to be in all Files and every File needs "svn propset           *
+ * svn:keywords Date Revision" (autoprobset!) at least!!!!!!            *
  * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
  * For more information visit: http://www.mxchange.org                  *
  * -------------------------------------------------------------------- *
  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
  * For more information visit: http://www.mxchange.org                  *
 
 // Some security stuff...
 if (!defined('__SECURITY')) {
 
 // Some security stuff...
 if (!defined('__SECURITY')) {
-       $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
+       $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), '/inc') + 4) . '/security.php';
        require($INC);
        require($INC);
-}
+} // END - if
 
 // Version number
 
 // Version number
-$EXT_VERSION = "0.6.1";
-
-// Auto-set extension version
-if (!isset($EXT_VER)) $EXT_VER = $EXT_VERSION;
+EXT_SET_VERSION('0.6.3');
 
 
-// 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", "0.1.8", "0.1.9", "0.2.0", "0.2.1", "0.2.2", "0.2.3", "0.2.4", "0.2.5", "0.2.6", "0.2.7", "0.2.8", "0.2.9", "0.3.0", "0.3.1", "0.3.2", "0.3.3", "0.3.4", "0.3.5", "0.3.6", "0.3.7", "0.3.8", "0.3.9", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5", "0.4.6", "0.4.7", "0.4.8", "0.4.9", "0.5.0", "0.5.1", "0.5.2", "0.5.3", "0.5.4", "0.5.5", "0.5.6", "0.5.7", "0.5.8", "0.5.9", "0.6.0", "0.6.1");
+// Version history array (add more with , '0.1.0' and so on)
+EXT_SET_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', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3'));
 
 switch ($EXT_LOAD_MODE)
 {
 
 switch ($EXT_LOAD_MODE)
 {
-case "register": // Do stuff when installation is running (modules.php?module=admin&action=login is called)
-       // SQL commands to run
-       $SQLs[] = "";
-       break;
-
-case "remove": // Do stuff when removing extension
-       // Drop tables
-       $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las`";
-       $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las`_data";
-       $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_stats`";
-       $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_user_stats_data`";
-       $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_user_book`";
-       $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_filters`";
-
-       // Delete admin menu entries
-       $SQLs[] = "DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE
+       case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
+               // SQL commands to run
+               ADD_EXT_SQL('');
+               break;
+
+       case 'remove': // Do stuff when removing extension
+               // Drop tables
+               ADD_EXT_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las`");
+               ADD_EXT_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las_data`");
+               ADD_EXT_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_stats`");
+               ADD_EXT_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_filters`");
+
+               // Delete admin menu entries
+               ADD_EXT_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE
 `what`='config_extensions' OR
 `what`='config_home' OR
 `what`='list_unconfirmed' OR
 `what`='config_extensions' OR
 `what`='config_home' OR
 `what`='list_unconfirmed' OR
@@ -73,344 +73,326 @@ case "remove": // Do stuff when removing extension
 `what`='config_admin' OR
 `what`='config_proxy' OR
 `what`='config_session' OR
 `what`='config_admin' OR
 `what`='config_proxy' OR
 `what`='config_session' OR
-`what`='list_filter'
-LIMIT 10";
+`what`='list_filter'");
 
 
-       // Delete/update member menu entries
-       $SQLs[] = "DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_member_menu` WHERE
+               // Delete/update member menu entries
+               ADD_EXT_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_member_menu` WHERE
 `what`='stats2' OR
 `what`='reflist' OR
 `what`='stats2' OR
 `what`='reflist' OR
-(action='stats' AND (`what`='' OR `what` IS NULL)) OR
-(action='extras' AND (`what`='' OR `what` IS NULL)) OR
-(action='rals' AND (`what`='' OR `what` IS NULL)) OR
-(action='account' AND (`what`='' OR `what` IS NULL))";
-       $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET action='main' WHERE
-action='stats' OR
-action='extras' OR
-action='rals' OR
-action='account'";
-
-       // Drop indexes
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP UNIQUE KEY `ext_name`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_admins` DROP UNIQUE KEY `login`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP INDEX `status`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_refbanner` DROP INDEX `visible`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_refdepths` DROP UNIQUE KEY `level`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` DROP INDEX `level`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_pool` DROP INDEX `data_type`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_mod_reg` DROP UNIQUE KEY `module`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` DROP INDEX `action`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` DROP INDEX `what`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `task_type`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `status`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `task_created`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP FULLTEXT `subject`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `subject`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP INDEX `ext_active`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP INDEX `status`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP FULLTEXT `family`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP INDEX `max_mails`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP INDEX `password`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `action`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `what`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `sort`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `visible`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `locked`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `what`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `sort`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `visible`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `locked`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_cats` DROP INDEX `visible`";
-       $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_cats` DROP INDEX `sort`";
-       break;
-
-case "activate": // Do stuff when admin activates this extension
-       // SQL commands to run
-       $SQLs[] = "";
-       break;
-
-case "deactivate": // Do stuff when admin deactivates this extension
-       // SQL commands to run
-       $SQLs[] = "";
-       break;
-
-case "update": // Update an extension
-       switch ($EXT_VER)
-       {
-       case "0.0.1": // SQL queries for v0.0.1
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD ext_autopurge ENUM('Y','N') NOT NULL DEFAULT 'Y'";
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_extensions','Erweitungsmanagement','Alle Einstellungen am Erweiterungsmanagement.', 10)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Es kann nun bestimmt werden, ob vom Server gelöschte ext-xxx.php erkannt werden sollen und die verknüpften Daten auch aus der Datenbank entfernt werden sollen.";
-               break;
-
-       case "0.0.2": // SQL queries for v0.0.2
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` CHANGE auto_purge auto_purge BIGINT(20) UNSIGNED NOT NULL DEFAULT ".(getConfig('one_day')*14)."";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "In der Tabelle <strong>{!MYSQL_PREFIX!}_config</strong> musste die Spalte <strong>auto_purge</strong> (autom. L&ouml;schen von Best&auml;tigungsmails angepasst werden (war auf dem Testsystem auf TINYINT(4) gesetzt.)";
-               break;
-
-       case "0.0.3": // SQL queries for v0.0.3
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD points_word VARCHAR(255) NOT NULL DEFAULT 'Punkte'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Das Wort &quot;Punkte&quot; kann nun per Datenbank ge&auml;ndert werden. Damit k&ouml;nnen Sie anstelle des Wortes Punkte auch Klammlose oder &euro; schreiben.";
-               break;
-
-       case "0.0.4": // SQL queries for v0.0.4
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mails_page BIGINT(20) UNSIGNED NOT NULL DEFAULT 10";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugef&uuml;gt.";
-               break;
-
-       case "0.0.5": // SQL queries for v0.0.5
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD index_home VARCHAR(255) NOT NULL DEFAULT 'welcome'";
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_home','Home-Seite festlegen','Stellen Sie hier ein, welcher Men&uuml;punkt (what-welcome ist Standart) als Einstiegspunkt in das Men&uuml;system genutzt werden soll.', 5)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Die what-welcome.php ist derzeit die &quot;Home&quot;-Seite (Eingangsseite). Dies kann nun per Datenbank ge&auml;ndert werden.";
-               break;
-
-       case "0.0.6": // SQL queries for v0.0.6
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` ADD ext_has_css ENUM('Y','N') NOT NULL DEFAULT 'N'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Es k&ouml;nnen nun SQL-Updates von einander abh&auml;ngig gemacht werden und die CSS-Datei kann per Admin-Bereich (wegen Debuggings) ein- bzw. ausgeschaltet werden.";
-               break;
-
-       case "0.0.7": // SQL queries for v0.0.7
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD verbose_sql ENUM('Y','N') NOT NULL DEFAULT 'Y'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.";
-               break;
-
-       case "0.0.8": // SQL queries for v0.0.8
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD menu_blur_spacer VARCHAR(255) NOT NULL DEFAULT '&nbsp;<strong><big>&middot;</big></strong>&nbsp;'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)";
-               break;
-
-       case "0.0.9": // SQL queries for v0.0.9
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('email','list_unconfirmed','Unbest. Mails auflisten','Schauen Sie sich hier unbest&auml;tigte Maillinks an. Bitte diesen Link nur &uuml;ber dem EMail-Archiv oder EMail-Details aufrufen, direkt aufgerufen bekommen Sie eine Fehlermeldung.', 8)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Unbest&auml;tigte Maillinks k&ouml;nnen unter Email-Management -&gt; Unbest. Mails auflisten aufgelistet werden.";
-               break;
-
-       case "0.1.0": // SQL queries for v0.2.1
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD reg_points_mode ENUM('ref','direct') NOT NULL DEFAULT 'ref'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Soll der einmalige Ref-Bonus &uuml;ber das Referal-System (also alle oberen Refs bekommen auch etwas davon ab) oder direkt dem Werber aufgebucht werden?";
-               break;
-
-       case "0.1.1": // SQL queries for v0.1.1
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET title='Home-/Eingangsseite', descr='Stellen Sie hier ein, welcher Men&uuml;punkt (what-welcome ist Standart) als Einstiegspunkt in das Men&uuml;system genutzt werden soll und wie die automatische Weiterleitung in der Eingangsseite funktionieren soll.' WHERE `what`='config_home' LIMIT 1";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD index_delay TINYINT(3) UNSIGNED NOT NULL DEFAULT '-1'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD index_cookie BIGINT(20) UNSIGNED NOT NULL DEFAULT ".(getConfig('one_day')*365)."";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Sie k&ouml;nnen nun <a href=\"{!URL!}/modules.php?module=admin&amp;`what`=config_home\">hier</a> die Verz&ouml;gerungszeit in der <a href=\"{!URL!}/index.php\">Eingangsseite</a> einstellen.";
-               break;
-
-       case "0.1.2": // SQL queries for v0.1.2
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_refid','Standart-Ref-ID','Stellen Sie hier die User-ID ein, die genommen werden soll, wenn der Gast n icht per Referal-Link Ihren Mailtausch aufgerufen hat.', 7)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD def_refid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Standart Referal-ID kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)";
-               break;
-
-       case "0.1.3": // SQL queries for v0.1.3
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD refid_target ENUM('register','index') NOT NULL DEFAULT 'register'";
+(`action`='stats' AND (`what`='' OR `what` IS NULL)) OR
+(`action`='extras' AND (`what`='' OR `what` IS NULL)) OR
+(`action`='rals' AND (`what`='' OR `what` IS NULL)) OR
+(`action`='account' AND (`what`='' OR `what` IS NULL))");
+               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `action`='main' WHERE
+`action`='stats' OR
+`action`='extras' OR
+`action`='rals' OR
+`action`='account'");
+
+               // Drop indexes
+               /* @TODO SQL_ALTER_TABLE() should work now properly
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP UNIQUE KEY `ext_name`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admins` DROP UNIQUE KEY `login`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refbanner` DROP INDEX `visible`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refdepths` DROP UNIQUE KEY `level`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` DROP INDEX `level`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_pool` DROP INDEX `data_type`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_mod_reg` DROP UNIQUE KEY `module`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` DROP INDEX `action`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` DROP INDEX `what`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `task_type`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `status`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `task_created`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP FULLTEXT `subject`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `subject`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP INDEX `ext_active`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `action`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `what`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `sort`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `visible`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `locked`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `what`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `sort`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `visible`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `locked`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_cats` DROP INDEX `visible`");
+               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_cats` DROP INDEX `sort`");
+               */
+               break;
+
+       case 'activate': // Do stuff when admin activates this extension
+               // SQL commands to run
+               ADD_EXT_SQL('');
+               break;
+
+       case 'deactivate': // Do stuff when admin deactivates this extension
+               // SQL commands to run
+               ADD_EXT_SQL('');
+               break;
+
+       case 'update': // Update an extension
+               switch ($EXT_VER)
+               {
+                       case '0.0.1': // SQL queries for v0.0.1
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD ext_autopurge ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_extensions','Erweitungsmanagement','Alle Einstellungen am Erweiterungsmanagement.', 10)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Es kann nun bestimmt werden, ob vom Server gel&ouml;schte ext-xxx.php erkannt werden sollen und die verkn&uuml;pften Daten auch aus der Datenbank entfernt werden sollen.");
+                               break;
+
+                       case '0.0.2': // SQL queries for v0.0.2
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` CHANGE auto_purge auto_purge BIGINT(20) UNSIGNED NOT NULL DEFAULT ".(getConfig('one_day')*14)."");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("In der Tabelle <strong>{!_MYSQL_PREFIX!}_config</strong> musste die Spalte <strong>auto_purge</strong> (autom. L&ouml;schen von Best&auml;tigungsmails angepasst werden (war auf dem Testsystem auf TINYINT(4) gesetzt.)");
+                               break;
+
+                       case '0.0.3': // SQL queries for v0.0.3
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD points_word VARCHAR(255) NOT NULL DEFAULT 'Punkte'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Das Wort &quot;Punkte&quot; kann nun per Datenbank ge&auml;ndert werden. Damit k&ouml;nnen Sie anstelle des Wortes Punkte auch Klammlose oder &euro; schreiben.");
+                               break;
+
+                       case '0.0.4': // SQL queries for v0.0.4
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mails_page BIGINT(20) UNSIGNED NOT NULL DEFAULT 10");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugef&uuml;gt.");
+                               break;
+
+                       case '0.0.5': // SQL queries for v0.0.5
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD index_home VARCHAR(255) NOT NULL DEFAULT 'welcome'");
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_home','Home-Seite festlegen','Stellen Sie hier ein, welcher Men&uuml;punkt (what-welcome ist Standart) als Einstiegspunkt in das Men&uuml;system genutzt werden soll.', 5)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Die what-welcome.php ist derzeit die &quot;Home&quot;-Seite (Eingangsseite). Dies kann nun per Datenbank ge&auml;ndert werden.");
+                               break;
+
+                       case '0.0.6': // SQL queries for v0.0.6
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` ADD ext_has_css ENUM('Y','N') NOT NULL DEFAULT 'N'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Es k&ouml;nnen nun SQL-Updates von einander abh&auml;ngig gemacht werden und die CSS-Datei kann per Admin-Bereich (wegen Debuggings) ein- bzw. ausgeschaltet werden.");
+                               break;
+
+                       case '0.0.7': // SQL queries for v0.0.7
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD verbose_sql ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
+                               break;
+
+                       case '0.0.8': // SQL queries for v0.0.8
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD menu_blur_spacer VARCHAR(255) NOT NULL DEFAULT '&nbsp;<strong><big>&middot;</big></strong>&nbsp;'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
+                               break;
+
+                       case '0.0.9': // SQL queries for v0.0.9
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('email','list_unconfirmed','Unbest. Mails auflisten','Schauen Sie sich hier unbest&auml;tigte Maillinks an. Bitte diesen Link nur &uuml;ber dem EMail-Archiv oder EMail-Details aufrufen, direkt aufgerufen bekommen Sie eine Fehlermeldung.', 8)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Unbest&auml;tigte Maillinks k&ouml;nnen unter Email-Management -&gt; Unbest. Mails auflisten aufgelistet werden.");
+                               break;
+
+                       case '0.1.0': // SQL queries for v0.2.1
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD reg_points_mode ENUM('ref','direct') NOT NULL DEFAULT 'ref'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Soll der einmalige Ref-Bonus &uuml;ber das Referal-System (also alle oberen Refs bekommen auch etwas davon ab) oder direkt dem Werber aufgebucht werden?");
+                               break;
+
+                       case '0.1.1': // SQL queries for v0.1.1
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `title`='Home-/Eingangsseite', descr='Stellen Sie hier ein, welcher Men&uuml;punkt (what-welcome ist Standart) als Einstiegspunkt in das Men&uuml;system genutzt werden soll und wie die automatische Weiterleitung in der Eingangsseite funktionieren soll.' WHERE `what`='config_home' LIMIT 1");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD index_delay TINYINT(3) UNSIGNED NOT NULL DEFAULT 0");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD index_cookie BIGINT(20) UNSIGNED NOT NULL DEFAULT ".(getConfig('one_day')*365)."");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Sie k&ouml;nnen nun <a href=\"{!URL!}/modules.php?module=admin&amp;`what`=config_home\">hier</a> die Verz&ouml;gerungszeit in der <a href=\"{!URL!}/index.php\">Eingangsseite</a> einstellen.");
+                               break;
 
 
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?";
-               break;
-
-       case "0.1.4": // SQL queries for v0.1.4
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Ung&uuml;ltiges Update (nach ext-theme.php verschoben!).";
-               break;
+                       case '0.1.2': // SQL queries for v0.1.2
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_refid','Standart-Ref-ID','Stellen Sie hier die User-ID ein, die genommen werden soll, wenn der Gast n icht per Referal-Link Ihren Mailtausch aufgerufen hat.', 7)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD def_refid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
 
 
-       case "0.1.5": // SQL queries for v0.1.5
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP ext_has_admin";
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Standart Referal-ID kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
+                               break;
 
 
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Spalte <u>ext_has_admin</u> aus der Tabelle <u>{!MYSQL_PREFIX!}_extensions</u> entfernt, da sie keinen Sinn mehr macht.";
-               break;
-
-       case "0.1.6": // SQL queries for v0.1.6
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD enable_title_deco ENUM('Y','N') NOT NULL DEFAULT 'Y'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD title_left VARCHAR(10) NOT NULL DEFAULT '[--'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD title_middle VARCHAR(10) NOT NULL DEFAULT '-'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD title_right VARCHAR(10) NOT NULL DEFAULT '--]'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD enable_mod_title ENUM('Y','N') NOT NULL DEFAULT 'Y'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD enable_what_title ENUM('Y','N') NOT NULL DEFAULT 'Y'";
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_title','Seitentitel &auml;ndern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Dekorationen des Seitentiteles lassen sich ein- und ausschalten und selber definieren; Modul-Titel und Titel der <strong>what</strong>-Dateien kann hinzugef&uuml;gt werden.";
-               break;
+                       case '0.1.3': // SQL queries for v0.1.3
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD refid_target ENUM('register','index') NOT NULL DEFAULT 'register'");
 
 
-       case "0.1.7": // SQL queries for v0.1.7
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.";
-               break;
-
-       case "0.1.8": // SQL queries for v0.1.8
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "mad_count und last_mad werden nun aus der Datenbank geladen";
-               break;
-
-       case "0.1.9": // SQL queries for v0.1.9
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.";
-               break;
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
+                               break;
 
 
-       case "0.2.0": // SQL queries for v0.2.0
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_jackpot` CHANGE points points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000";
+                       case '0.1.4': // SQL queries for v0.1.4
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Ung&uuml;ltiges Update (nach ext-theme.php verschoben!).");
+                               break;
+
+                       case '0.1.5': // SQL queries for v0.1.5
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP ext_has_admin");
 
 
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_payments` CHANGE payment payment FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_payments` CHANGE price price FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000";
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{!_MYSQL_PREFIX!}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
+                               break;
 
 
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` CHANGE used_points used_points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_points` CHANGE points points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_points` CHANGE locked_points locked_points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "5 Nachkommastellen implementiert";
-               break;
-
-       case "0.2.1": // SQL queries for v0.2.1
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD css_php ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.";
-               break;
-
-       case "0.2.2": // SQL queries for v0.2.2
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Erweiterung bleibt wegen integrierten Schalters immer aktiv.";
-               break;
-
-       case "0.2.3": // SQL queries for v0.2.3
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD guest_menu ENUM('Y','N') NOT NULL DEFAULT 'Y'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD member_menu ENUM('Y','N') NOT NULL DEFAULT 'Y'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD youre_here ENUM('Y','N') NOT NULL DEFAULT 'Y'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Gast- und Mitgliedsmen&uuml;s lassen sich getrennt voneinander abschalten.";
-               break;
-
-       case "0.2.4": // SQL queries for v0.2.4
-               $auto_type = "png"; // PNG image is the default
-               if ((FILE_READABLE(PATH."theme/".GET_CURR_THEME()."/images/code_bg.jpg")) && function_exists('imagecreatefromjpeg')) {
-                       // Switch to JPEG format
-                       $auto_type = "jpg";
-               }
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD img_type ENUM('jpg','png') NOT NULL DEFAULT '".$auto_type."'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Generierung des Mailbest&auml;tigungscodes h&auml;ngt davon ab, ob die PHP-Funktion <u>imagecreatefromjpeg()</u> und das JPEG-Bild vorhanden sind oder nicht.";
-               break;
-
-       case "0.2.5": // SQL queries for v0.2.5
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` CHANGE receive_mails receive_mails BIGINT(20) UNSIGNED NOT NULL DEFAULT 0";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` CHANGE max_mails max_mails BIGINT(20) UNSIGNED NOT NULL DEFAULT 0";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.";
-               break;
-
-       case "0.2.6": // SQL queries for v0.2.6
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('user','sub_points','{!POINTS!} abziehen','Allen oder einem Mitglied {!POINTS!} abziehen.', 8)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Abzug von {!POINTS!} nun m&ouml;glich.";
-               break;
-
-       case "0.2.7": // SQL queries for v0.2.7
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD stats_limit BIGINT(20) UNSIGNED NOT NULL DEFAULT 10";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "<ol>
+                       case '0.1.6': // SQL queries for v0.1.6
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD enable_title_deco ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD title_left VARCHAR(10) NOT NULL DEFAULT '[--'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD title_middle VARCHAR(10) NOT NULL DEFAULT '-'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD title_right VARCHAR(10) NOT NULL DEFAULT '--]'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD enable_mod_title ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD enable_what_title ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_title','Seitentitel &auml;ndern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Dekorationen des Seitentiteles lassen sich ein- und ausschalten und selber definieren; Modul-Titel und Titel der <strong>what</strong>-Dateien kann hinzugef&uuml;gt werden.");
+                               break;
+
+                       case '0.1.7': // SQL queries for v0.1.7
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
+                               break;
+
+                       case '0.1.8': // SQL queries for v0.1.8
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("mad_count und last_mad werden nun aus der Datenbank geladen");
+                               break;
+
+                       case '0.1.9': // SQL queries for v0.1.9
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
+                               break;
+
+                       case '0.2.0': // SQL queries for v0.2.0
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_jackpot` CHANGE points points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
+
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_payments` CHANGE payment payment FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_payments` CHANGE price price FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("5 Nachkommastellen implementiert");
+                               break;
+
+                       case '0.2.1': // SQL queries for v0.2.1
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD css_php ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
+                               break;
+
+                       case '0.2.2': // SQL queries for v0.2.2
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
+                               break;
+
+                       case '0.2.3': // SQL queries for v0.2.3
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD guest_menu ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD member_menu ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD youre_here ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Gast- und Mitgliedsmen&uuml;s lassen sich getrennt voneinander abschalten.");
+                               break;
+
+                       case '0.2.4': // SQL queries for v0.2.4
+                               $auto_type = 'png'; // PNG image is the default
+                               if ((isIncludeReadable('theme/'.getCurrentTheme().'/images/code_bg.jpg')) && function_exists('imagecreatefromjpeg')) {
+                                       // Switch to JPEG format
+                                       $auto_type = 'jpg';
+                               }
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD img_type ENUM('jpg','png') NOT NULL DEFAULT '".$auto_type."'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Generierung des Mailbest&auml;tigungscodes h&auml;ngt davon ab, ob die PHP-Funktion <u>imagecreatefromjpeg()</u> und das JPEG-Bild vorhanden sind oder nicht.");
+                               break;
+
+                       case '0.2.5': // SQL queries for v0.2.5
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
+                               break;
+
+                       case '0.2.6': // SQL queries for v0.2.6
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('user','sub_points','{!POINTS!} abziehen','Allen oder einem Mitglied {!POINTS!} abziehen.', 8)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Abzug von {!POINTS!} nun m&ouml;glich.");
+                               break;
+
+                       case '0.2.7': // SQL queries for v0.2.7
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD stats_limit BIGINT(20) UNSIGNED NOT NULL DEFAULT 10");
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("<ol>
 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
 <li>Mitgliederstatistik mit Seitennavigation.</li>
 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
 <li>Mitgliederstatistik mit Seitennavigation.</li>
-</ol>";
-               break;
-
-       case "0.2.8": // SQL queries for v0.2.8
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD last_login VARCHAR(10) NOT NULL DEFAULT 0";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Letzter Login wird gespeichert, Cache wird bei installierter Cache-Erweiterung bei Sprachen&auml;nderung aufgefrischt.";
-               break;
-
-       case "0.2.9": // SQL queries for v0.2.9
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mt_word VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mt_word2 VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mt_word3 VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "W&ouml;rter <strong>Mailtausch</strong>, <strong>Mailtausches</strong> und <strong>Mailtauscher</strong> sind austauschbar.";
-               break;
-
-       case "0.3.0": // SQL queries for v0.3.0
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET title='{!POINTS!}/Referal-Ebenen' WHERE `what`='config_points' LIMIT 1";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET title='Mailverg&uuml;tungen...' WHERE `what`='payments' LIMIT 1";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Zwei Men&uuml;punkte umbenannt.";
-               break;
-
-       case "0.3.1": // SQL queries for v0.3.1
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` ADD UNIQUE KEY (ext_name)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_admins` ADD UNIQUE KEY (login)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD INDEX (status)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_refbanner` ADD INDEX (visible)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_refdepths` ADD UNIQUE KEY (level)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` ADD INDEX (level)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_pool` ADD INDEX (data_type)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_mod_reg` ADD UNIQUE KEY (module)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` ADD INDEX (action)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` ADD INDEX (what)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (task_type)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (status)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (task_created)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD FULLTEXT (subject)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (subject)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` ADD INDEX (ext_active)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD INDEX (status)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD FULLTEXT (family)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD INDEX (max_mails)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD INDEX (password)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (action)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (what)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (sort)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (visible)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (locked)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (what)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (sort)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (visible)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (locked)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_cats` ADD INDEX (visible)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_cats` ADD INDEX (sort)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Eindeutige Schl&uuml;ssel (UNIQUE KEY) und normale Schl&uuml;ssel (INDEX) gesetzt.";
-               break;
-
-       case "0.3.2": // SQL queries for v0.3.2
-               // Connection table between the menu system and the "logical area" system
-               $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las`";
-               $SQLs[] = "CREATE TABLE `{!_MYSQL_PREFIX!}_admin_menu_las` (
+</ol>");
+                               break;
+
+                       case '0.2.8': // SQL queries for v0.2.8
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Nicht mehr g&uuml;ltiges Update.");
+                               break;
+
+                       case '0.2.9': // SQL queries for v0.2.9
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mt_word VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mt_word2 VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mt_word3 VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("W&ouml;rter <strong>Mailtausch</strong>, <strong>Mailtausches</strong> und <strong>Mailtauscher</strong> sind austauschbar.");
+                               break;
+
+                       case '0.3.0': // SQL queries for v0.3.0
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `title`='{!POINTS!}/Referal-Ebenen' WHERE `what`='config_points' LIMIT 1");
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `title`='Mailverg&uuml;tungen...' WHERE `what`='payments' LIMIT 1");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Zwei Men&uuml;punkte umbenannt.");
+                               break;
+
+                       case '0.3.1': // SQL queries for v0.3.1
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` ADD UNIQUE KEY (ext_name)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admins` ADD UNIQUE KEY (login)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refbanner` ADD INDEX (visible)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refdepths` ADD UNIQUE KEY (level)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` ADD INDEX (level)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_pool` ADD INDEX (data_type)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_mod_reg` ADD UNIQUE KEY (module)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` ADD INDEX (action)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` ADD INDEX (what)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (task_type)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (status)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (task_created)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD FULLTEXT (subject)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (subject)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` ADD INDEX (ext_active)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (action)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (what)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (sort)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (visible)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (locked)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (what)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (sort)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (visible)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (locked)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_cats` ADD INDEX (visible)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_cats` ADD INDEX (sort)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Eindeutige Schl&uuml;ssel (UNIQUE KEY) und normale Schl&uuml;ssel (INDEX) gesetzt.");
+                               break;
+
+                       case '0.3.2': // SQL queries for v0.3.2
+                               // Connection table between the menu system and the "logical area" system
+                               ADD_EXT_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las`");
+                               ADD_EXT_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_admin_menu_las` (
 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
 la_id VARCHAR(255) NOT NULL DEFAULT '',
 la_action VARCHAR(255) NOT NULL DEFAULT '',
 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
 la_id VARCHAR(255) NOT NULL DEFAULT '',
 la_action VARCHAR(255) NOT NULL DEFAULT '',
@@ -419,10 +401,10 @@ INDEX (la_id),
 INDEX (la_action),
 INDEX (la_what),
 PRIMARY KEY(id)
 INDEX (la_action),
 INDEX (la_what),
 PRIMARY KEY(id)
-) TYPE=MyISAM";
-               // All "logical areas" together
-               $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las`_data";
-               $SQLs[] = "CREATE TABLE `{!_MYSQL_PREFIX!}_admin_menu_las`_data (
+) TYPE={!_TABLE_TYPE!}");
+                               // All "logical areas" together
+                               ADD_EXT_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las_data`");
+                               ADD_EXT_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_admin_menu_las_data` (
 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
 la_id VARCHAR(255) NOT NULL DEFAULT '',
 la_title VARCHAR(255) NOT NULL DEFAULT '',
 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
 la_id VARCHAR(255) NOT NULL DEFAULT '',
 la_title VARCHAR(255) NOT NULL DEFAULT '',
@@ -432,360 +414,351 @@ UNIQUE KEY (la_id),
 INDEX (la_posx),
 INDEX (la_posy),
 PRIMARY KEY(id)
 INDEX (la_posx),
 INDEX (la_posy),
 PRIMARY KEY(id)
-) TYPE=MyISAM";
-               // Which menu do you like?
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD admin_menu ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'";
+) TYPE={!_TABLE_TYPE!}");
+                               // Which menu do you like?
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD admin_menu ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
 
 
-               // Insert menus
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_admin','Adminmen&uuml;','Diverse Einstellungen am Adminmen&uuml; vornehmen.', 9)";
+                               // Insert menus
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_admin','Adminmen&uuml;','Diverse Einstellungen am Adminmen&uuml; vornehmen.', 9)");
 
 
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Logische Bereiche (Logical Areas = LAs) eingef&uuml;hrt. Dadurch wird das immer st&auml;rker anwachsende Admin-Men&uuml; in grosse Hauptgruppen unterteilt, wodurch ein Auffinden von Men&uuml;punkten verbessert wird.";
-               break;
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Logische Bereiche (Logical Areas = LAs) eingef&uuml;hrt. Dadurch wird das immer st&auml;rker anwachsende Admin-Men&uuml; in grosse Hauptgruppen unterteilt, wodurch ein Auffinden von Men&uuml;punkten verbessert wird.");
+                               break;
 
 
-       case "0.3.3": // SQL queries for v0.3.3
-               // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD admin_menu_sorter ENUM('Y','N') NOT NULL DEFAULT 'Y'";
+                       case '0.3.3': // SQL queries for v0.3.3
+                               // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD admin_menu_sorter ENUM('Y','N') NOT NULL DEFAULT 'Y'");
 
 
-               // The statistics table
-               $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_stats`";
-               $SQLs[] = "CREATE TABLE `{!_MYSQL_PREFIX!}_admin_menu_stats` (
+                               // The statistics table
+                               ADD_EXT_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_stats`");
+                               ADD_EXT_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_admin_menu_stats` (
 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
 aid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
 type ENUM('la','action','what') NOT NULL DEFAULT 'what',
 clicks BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
 INDEX (aid),
 PRIMARY KEY (id)
 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
 aid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
 type ENUM('la','action','what') NOT NULL DEFAULT 'what',
 clicks BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
 INDEX (aid),
 PRIMARY KEY (id)
-) TYPE=MyISAM";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Admin-abh&auml;ngig werden nun Klicks im Admin-Men&uuml; gez&auml;hlt, die zur automatischen Anpassung des Men&uuml;s in den logischen Bereichen diennen. Dieses &quot;intelligente Unbauen&quot; k&ouml;nnen Sie auch ganz abschalten.";
-               break;
-
-       case "0.3.4": // SQL queries for v0.3.4
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Veraltetes Update (what=list_user&amp;mode=noref)";
-               break;
-
-       case "0.3.5": // SQL queries for v0.3.5
-               // List accounts with no referal
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('stats',NULL,'Statistiken',4,'Y','N')";
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('stats','stats2','Framekiller-Mails',2,'Y','N')";
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('extras',NULL,'Extras',5,'Y','N')";
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('rals',NULL,'Rallyes',6,'Y','N')";
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('account',NULL,'Ihr Account',7,'Y','N')";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET action='stats', sort='1', title='Klick-Mails' WHERE `what`='stats' LIMIT 1";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET action='extras', sort='3' WHERE `what`='reflinks' LIMIT 1";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Mitgliedsmen&uuml; komplett umgebaut.";
-               break;
-
-       case "0.3.6": // SQL queries for v0.3.6
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD salt_length TINYINT(3) UNSIGNED NOT NULL DEFAULT '9'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD pass_scramble VARCHAR(255) NOT NULL DEFAULT ''";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` MODIFY password VARCHAR(255) NOT NULL DEFAULT ''";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` MODIFY user_hash VARCHAR(255) NOT NULL DEFAULT ''";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_admins` MODIFY password VARCHAR(255) NOT NULL DEFAULT ''";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD rand_no BIGINT(20) UNSIGNED NOT NULL DEFAULT 0";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD file_hash VARCHAR(255) NOT NULL DEFAULT ''";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD master_salt VARCHAR(255) NOT NULL DEFAULT ''";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_config` SET rand_no=(ROUND(RAND() * 99999) + 100000) WHERE config=0 LIMIT 1";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_mod_reg` ADD has_menu ENUM('Y','N') NOT NULL DEFAULT 'N'";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_mod_reg` SET has_menu='Y' WHERE module='admin' OR module='index' OR module='login' LIMIT 3";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)";
-               break;
-
-       case "0.3.7": // SQL queries for v0.3.7
-               $UPDATE_NOTES = "Problem w&auml;hrend des Installationsvorganges behoben.";
-               break;
-
-       case "0.3.8": // SQL queries for v0.3.8
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` CHANGE descr descr MEDIUMTEXT NULL";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_pool` CHANGE `text` `text` LONGTEXT NOT NULL";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.";
-               break;
-
-       case "0.3.9": // SQL queries for v0.3.9
-               $SQLs[] = "UPDATE  `{!_MYSQL_PREFIX!}_admin_menu` SET title = REPLACE(title, '--POINTS--','!POINTS!') WHERE title LIKE '%--POINTS--%'";
-               $SQLs[] = "UPDATE  `{!_MYSQL_PREFIX!}_admin_menu` SET descr = REPLACE(descr, '--POINTS--','!POINTS!') WHERE descr LIKE '%--POINTS--%'";
-               $SQLs[] = "UPDATE  `{!_MYSQL_PREFIX!}_guest_menu` SET title = REPLACE(title, '--POINTS--','!POINTS!') WHERE title LIKE '%--POINTS--%'";
-               $SQLs[] = "UPDATE  `{!_MYSQL_PREFIX!}_member_menu` SET title = REPLACE(title, '--POINTS--','!POINTS!') WHERE title LIKE '%--POINTS--%'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.";
-               break;
-
-       case "0.4.0": // SQL queries for v0.4.0
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET title = 'Email-Management' WHERE action = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Email-Verwaltung nach Email-Management umbenannt.";
-               break;
-
-       case "0.4.1": // SQL queries for v0.4.1
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP INDEX `status` , ADD INDEX `status` ( `status` , `max_mails` )";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `show_timings` ENUM ('Y','N') NOT NULL DEFAULT 'Y'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Tabellen-Schl&uuml;ssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.";
-               break;
-
-       case "0.4.2": // SQL queries for v0.4.2
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_online` ADD INDEX `admin_member` (`is_admin`,`is_member`)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Neuen Schl&uuml;ssel zur Online-Tabelle hinzugef&uuml;gt.";
-               break;
-
-       case "0.4.3": // SQL queries for v0.4.3
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_host` VARCHAR(255) NOT NULL DEFAULT ''";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_port` INT(5) UNSIGNED NOT NULL DEFAULT 0";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_username` VARCHAR(255) NOT NULL DEFAULT ''";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_password` VARCHAR(255) NOT NULL DEFAULT ''";
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_proxy','Proxy-Einstellungen','Sollte Ihr Webserver sich hinter einem Proxy befinden, so k&ouml;nnen Sie hier MXChange so konfigurieren, dass es Updates durch diesen hindurch sucht!', 15)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Proxy-Einstellungen hinzugef&uuml;gt.";
-               break;
-
-       case "0.4.4": // SQL queries for v0.4.4
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `what`=NULL WHERE `what`=''";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_guest_menu` SET `what`=NULL WHERE `what`=''";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `what`=NULL WHERE `what`=''";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` DROP INDEX `what`, ADD UNIQUE (`what`)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `what`, ADD UNIQUE (`what`)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX `action` (`action`)";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `what`, ADD UNIQUE (`what`)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Schl&uuml;ssel in Admin-, Gast- und Mitgliedsmen&uuml; verbessert.";
-               break;
-
-       case "0.4.5": // SQL queries for v0.4.5
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD last_month CHAR(2) NOT NULL DEFAULT '00'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD last_week CHAR(2) NOT NULL DEFAULT '00'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "T&auml;glichen/w&ouml;chentlichen/monatlichen Reset verbessert.";
-               break;
-
-       case "0.4.6": // SQL queries for v0.4.6
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD gender ENUM ('M','F') NOT NULL DEFAULT 'M'";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_user_data` SET gender=sex WHERE sex != 'M'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP sex";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Offensives Wort &quot;Sex&quot; gegen &quot;Gender&quot; ausgetauscht.";
-               break;
-
-       case "0.4.7": // SQL queries for v0.4.7
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Veraltetes Update.";
-               break;
-
-       case "0.4.8": // SQL queries for v0.4.8
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (subject)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Index f&uuml;r Betreff eingef&uuml;gt.";
-               break;
-
-       case "0.4.9": // SQL queries for v0.4.9
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` CHANGE `user_hash` `user_hash` VARCHAR(255) NULL DEFAULT NULL";
-               $SQLs[] = "UPDATE `{!_MYSQL_PREFIX!}_user_data` SET user_hash=NULL WHERE user_hash IS NOT NULL AND `status`='CONFIRMED'";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD UNIQUE (`user_hash`)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "User-Hash zum Best&auml;tigen wird auf NULL gesetzt, wenn Account best&auml;tigt wird.";
-               break;
-
-       case "0.5.0": // SQL queries for v0.5.0
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` DROP INDEX `level`";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` DROP INDEX `userid`, ADD UNIQUE `userid_level` (`userid`,`level`)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Referal-System unterst&uuml;tzt nun detailierte Referal-&Uuml;bersicht und vieles mehr.";
-               break;
-
-       case "0.5.1": // SQL queries for v0.5.1
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP `descr`";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Beschreibungsspalte von Mitgliedsmen&uuml; entfernt, welche ohnehin nicht genutzt wird.";
-               break;
-
-       case "0.5.2": // SQL queries for v0.5.2
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_refdepths` CHANGE `percents` `percents` FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Prozents&aum;tze k&ouml;nnen nun f&uuml;nf Stelle hinter dem Komma sein.";
-               break;
-
-       case "0.5.3": // SQL queries for v0.5.3
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD session_save_path VARCHAR(255) NOT NULL DEFAULT ''";
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_session','Session-Einstellungen','&Auml;ndern Sie hier den Speicherpfad f&uuml;r Sessiondateien (Sitzungsdateien) ab, falls die Standart-Einstellung bei Ihrem Hoster zu Problem f&uuml;hren sollte.', 16)";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com n&ouml;tig.";
-               break;
+) TYPE={!_TABLE_TYPE!}");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Admin-abh&auml;ngig werden nun Klicks im Admin-Men&uuml; gez&auml;hlt, die zur automatischen Anpassung des Men&uuml;s in den logischen Bereichen diennen. Dieses &quot;intelligente Unbauen&quot; k&ouml;nnen Sie auch ganz abschalten.");
+                               break;
+
+                       case '0.3.4': // SQL queries for v0.3.4
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Veraltetes Update (what=list_user&amp;mode=noref)");
+                               break;
+
+                       case '0.3.5': // SQL queries for v0.3.5
+                               // List accounts with no referal
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('stats',NULL,'Statistiken',4,'Y','N')");
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('stats','stats2','Framekiller-Mails',2,'Y','N')");
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('extras',NULL,'Extras',5,'Y','N')");
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('rals',NULL,'Rallyes',6,'Y','N')");
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('account',NULL,'Ihr Account',7,'Y','N')");
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `action`='stats', `sort`='1', `title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `action`='extras', `sort`='3' WHERE `what`='reflinks' LIMIT 1");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Mitgliedsmen&uuml; komplett umgebaut.");
+                               break;
+
+                       case '0.3.6': // SQL queries for v0.3.6
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD salt_length TINYINT(3) UNSIGNED NOT NULL DEFAULT '9'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD pass_scramble VARCHAR(255) NOT NULL DEFAULT ''");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admins` MODIFY password VARCHAR(255) NOT NULL DEFAULT ''");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD rand_no BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD file_hash VARCHAR(255) NOT NULL DEFAULT ''");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD master_salt VARCHAR(255) NOT NULL DEFAULT ''");
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_config` SET rand_no=(ROUND(RAND() * 99999) + 100000) WHERE config=0 LIMIT 1");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_mod_reg` ADD has_menu ENUM('Y','N') NOT NULL DEFAULT 'N'");
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_mod_reg` SET has_menu='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
+                               break;
+
+                       case '0.3.7': // SQL queries for v0.3.7
+                               EXT_SET_UPDATE_NOTES("Problem w&auml;hrend des Installationsvorganges behoben.");
+                               break;
+
+                       case '0.3.8': // SQL queries for v0.3.8
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` CHANGE descr descr MEDIUMTEXT NULL");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_pool` CHANGE `text` `text` LONGTEXT NOT NULL");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
+                               break;
+
+                       case '0.3.9': // SQL queries for v0.3.9
+                               ADD_EXT_SQL("UPDATE  `{!_MYSQL_PREFIX!}_admin_menu` SET title = REPLACE(title, '--POINTS--','!POINTS!') WHERE title LIKE '%--POINTS--%'");
+                               ADD_EXT_SQL("UPDATE  `{!_MYSQL_PREFIX!}_admin_menu` SET descr = REPLACE(descr, '--POINTS--','!POINTS!') WHERE descr LIKE '%--POINTS--%'");
+                               ADD_EXT_SQL("UPDATE  `{!_MYSQL_PREFIX!}_guest_menu` SET title = REPLACE(title, '--POINTS--','!POINTS!') WHERE title LIKE '%--POINTS--%'");
+                               ADD_EXT_SQL("UPDATE  `{!_MYSQL_PREFIX!}_member_menu` SET title = REPLACE(title, '--POINTS--','!POINTS!') WHERE title LIKE '%--POINTS--%'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
+                               break;
+
+                       case '0.4.0': // SQL queries for v0.4.0
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET title = 'Email-Management' WHERE action = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Email-Verwaltung nach Email-Management umbenannt.");
+                               break;
+
+                       case '0.4.1': // SQL queries for v0.4.1
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `show_timings` ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Tabellen-Schl&uuml;ssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
+                               break;
+
+                       case '0.4.2': // SQL queries for v0.4.2
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Nicht mehr g&uuml;ltiges Update.");
+                               break;
+
+                       case '0.4.3': // SQL queries for v0.4.3
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_host` VARCHAR(255) NOT NULL DEFAULT ''");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_port` INT(5) UNSIGNED NOT NULL DEFAULT 0");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_username` VARCHAR(255) NOT NULL DEFAULT ''");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_password` VARCHAR(255) NOT NULL DEFAULT ''");
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_proxy','Proxy-Einstellungen','Sollte Ihr Webserver sich hinter einem Proxy befinden, so k&ouml;nnen Sie hier MXChange so konfigurieren, dass es Updates durch diesen hindurch sucht!', 15)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Proxy-Einstellungen hinzugef&uuml;gt.");
+                               break;
+
+                       case '0.4.4': // SQL queries for v0.4.4
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `what`=NULL WHERE `what`=''");
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_guest_menu` SET `what`=NULL WHERE `what`=''");
+                               ADD_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `what`=NULL WHERE `what`=''");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` DROP INDEX `what`");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` ADD UNIQUE (`what`)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `what`");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD UNIQUE (`what`)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX `action` (`action`)");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `what`");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD UNIQUE (`what`)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Schl&uuml;ssel in Admin-, Gast- und Mitgliedsmen&uuml; verbessert.");
+                               break;
+
+                       case '0.4.5': // SQL queries for v0.4.5
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD last_month CHAR(2) NOT NULL DEFAULT '00'");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD last_week CHAR(2) NOT NULL DEFAULT '00'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("T&auml;glichen/w&ouml;chentlichen/monatlichen Reset verbessert.");
+                               break;
+
+                       case '0.4.6': // SQL queries for v0.4.6
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Nicht mehr g&uuml;ltiges Update.");
+                               break;
+
+                       case '0.4.7': // SQL queries for v0.4.7
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Veraltetes Update.");
+                               break;
+
+                       case '0.4.8': // SQL queries for v0.4.8
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (subject)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Index f&uuml;r Betreff eingef&uuml;gt.");
+                               break;
+
+                       case '0.4.9': // SQL queries for v0.4.9
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Nicht mehr g&uuml;ltiges Update.");
+                               break;
+
+                       case '0.5.0': // SQL queries for v0.5.0
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` DROP INDEX `level`");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` DROP INDEX `userid`");
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` ADD UNIQUE `userid_level` (`userid`,`level`)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Referal-System unterst&uuml;tzt nun detailierte Referal-&Uuml;bersicht und vieles mehr.");
+                               break;
+
+                       case '0.5.1': // SQL queries for v0.5.1
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP `descr`");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Beschreibungsspalte von Mitgliedsmen&uuml; entfernt, welche ohnehin nicht genutzt wird.");
+                               break;
+
+                       case '0.5.2': // SQL queries for v0.5.2
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refdepths` CHANGE `percents` `percents` FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Prozents&aum;tze k&ouml;nnen nun f&uuml;nf Stelle hinter dem Komma sein.");
+                               break;
+
+                       case '0.5.3': // SQL queries for v0.5.3
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD session_save_path VARCHAR(255) NOT NULL DEFAULT ''");
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_session','Session-Einstellungen','&Auml;ndern Sie hier den Speicherpfad f&uuml;r Sessiondateien (Sitzungsdateien) ab, falls die Standart-Einstellung bei Ihrem Hoster zu Problem f&uuml;hren sollte.', 16)");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com n&ouml;tig.");
+                               break;
+
+                       case '0.5.4': // SQL queries for v0.5.4
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('main','reflist','Ref-&Uuml;bersicht',5,'Y','N')");
+
+                               // Depends on refback extension
+                               EXT_ADD_UPDATE_DEPENDS('refback');
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Ref-&Uuml;bersicht eingebaut. Diese h&auml;ngt von der Erweiterung <strong>refback</strong> ab.");
+                               break;
+
+                       case '0.5.5': // SQL queries for v0.5.5
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD show_points_unconfirmed ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Anzeige der {!POINTS!} unter den unbest&auml;tigten Mails kann nun optional abgeschaltet werden.");
+                               break;
+
+                       case '0.5.6': // SQL queries for v0.5.6
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Nicht mehr g&uuml;ltiges Update.");
+                               break;
+
+                       case '0.5.7': // SQL queries for v0.5.7
+                               ADD_EXT_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Auflistung der Mitglieder ohne Werber nach what=list_user&amp;mode=norefs verschoben.");
+                               break;
 
 
-       case "0.5.4": // SQL queries for v0.5.4
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('main','reflist','Ref-&Uuml;bersicht',5,'Y','N')";
+                       case '0.5.8': // SQL queries for v0.5.8
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP `ext_lang_file`");
 
 
-               // Depends on refback extension
-               $EXT_UPDATE_DEPENDS = "refback";
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
+                               break;
 
 
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Ref-&Uuml;bersicht eingebaut. Diese h&auml;ngt von der Erweiterung <strong>refback</strong> ab.";
-               break;
-
-       case "0.5.5": // SQL queries for v0.5.5
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD show_points_unconfirmed ENUM('Y','N') NOT NULL DEFAULT 'Y'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Anzeige der {!POINTS!} unter den unbest&auml;tigten Mails kann nun optional abgeschaltet werden.";
-               break;
-
-       case "0.5.6": // SQL queries for v0.5.6
-               $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_user_stats_data`";
-               $SQLs[] = "CREATE TABLE `{!_MYSQL_PREFIX!}_user_stats_data` (
-`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
-`userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
-`stats_type` VARCHAR(255) NOT NULL DEFAULT 'unknown',
-`stats_data` VARCHAR(255) NOT NULL DEFAULT '',
-`inserted` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
-PRIMARY KEY(`id`),
-INDEX (`userid`),
-INDEX (`stats_type`)
-) TYPE=MyISAM COMMENT='Member statistics data'";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Mitglieder k&ouml;nnnen nun z.B. in den Mail-Details zu jeder Mail sehen, wann sie diese best&auml;tigt haben. Die neue Statistik-Tabelle ist aber universell einsetzbar.";
-               break;
-
-       case "0.5.7": // SQL queries for v0.5.7
-               $SQLs[] = "DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE what='list_norefs' LIMIT 1";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Auflistung der Mitglieder ohne Werber nach what=list_user&amp;mode=norefs verschoben.";
-               break;
-
-       case "0.5.8": // SQL queries for v0.5.8
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP `ext_lang_file`";
-
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Sprachdateinamen werden nicht mehr in der Datenbank behalten.";
-               break;
-
-       case "0.5.9": // SQL queries for v0.5.9
-               $SQLs[] = "DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_filters`";
-               $SQLs[] = "CREATE TABLE `{!_MYSQL_PREFIX!}_filters` (
+                       case '0.5.9': // SQL queries for v0.5.9
+                               ADD_EXT_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_filters`");
+                               ADD_EXT_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_filters` (
 `filter_id` BIGINT(20) UNSIGNED AUTO_INCREMENT,
 `filter_name` VARCHAR(255) NOT NULL DEFAULT '',
 `filter_function` VARCHAR(255) NOT NULL DEFAULT '',
 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
 `filter_id` BIGINT(20) UNSIGNED AUTO_INCREMENT,
 `filter_name` VARCHAR(255) NOT NULL DEFAULT '',
 `filter_function` VARCHAR(255) NOT NULL DEFAULT '',
 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
+`filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
 PRIMARY KEY (`filter_id`)
 PRIMARY KEY (`filter_id`)
-) TYPE=MyISAM COMMENT='Filter system'";
-               $SQLs[] = "INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und l&auml;sst diese de- bzw. wieder aktivieren.', 17)";
+) TYPE={!_TABLE_TYPE!} COMMENT='Filter system'");
+                               ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und l&auml;sst diese de- bzw. wieder aktivieren.', 17)");
 
 
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Tabellen f&uuml;r Filter-System hinzugef&uuml;gt.";
-               break;
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Tabellen f&uuml;r Filter-System hinzugef&uuml;gt.");
+                               break;
 
 
-       case "0.6.0": // SQL queries for v0.6.0
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_filters` ADD `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `update_filter_usage` ENUM('N','Y') NOT NULL DEFAULT 'N'";
+                       case '0.6.0': // SQL queries for v0.6.0
+                               ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `update_filter_usage` ENUM('N','Y') NOT NULL DEFAULT 'N'");
 
 
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Benutzungsstatistik eingebaut. Das Z&auml;hlen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.";
-               break;
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Benutzungsstatistik eingebaut. Das Z&auml;hlen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
+                               break;
 
 
-       case "0.6.1": // SQL queries for v0.6.1
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP login_failtures";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP last_failture";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD login_failures BIGINT(20) UNSIGNED NOT NULL DEFAULT 0";
-               $SQLs[] = "ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD last_failure TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'";
+                       case '0.6.1': // SQL queries for v0.6.1
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Nicht mehr g&uuml;ltiges Update.");
+                               break;
 
 
-               // Update notes (these will be set as task text!)
-               $UPDATE_NOTES = "Falsche Schreibweise korregiert.";
+                       case '0.6.2': // SQL queries for v0.6.2
+                               // Depends on refback extension
+                               EXT_ADD_UPDATE_DEPENDS('user');
+
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Abh&auml;ngigkeit von <u>ext-user</u> gesetzt.");
+                               break;
+
+                       case '0.6.3': // SQL queries for v0.6.3
+                               // Update notes (these will be set as task text!)
+                               EXT_SET_UPDATE_NOTES("Filter-Tabelle bereinigt um doppelte Eintr&auml;ge und Unique-Key auf <em>filter_name</em> und <em>filter_function</em> zusammen gesetzt.");
+
+                               // Include special filte
+                               loadIncludeOnce('inc/fix_filters.php');
+                               break;
+               }
                break;
                break;
-       }
-       break;
-
-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
-       // When the sql_patches is not installed we cannot load it's configuration... *sigh*
-       if (GET_EXT_VERSION("sql_patches") != '') {
-               // Init key
-               setConfigEntry('secret_key', "");
-
-               // Read key from secret file
-               if ((getConfig('file_hash') == "") || (getConfig('master_salt') == "") || (getConfig('pass_scramble') == "")) {
-                       // Cache instance
-                       global $cacheInstance;
-
-                       // Maybe need setup of secret key!
-                       LOAD_INC_ONCE("inc/gen_sql_patches.php");
-
-                       // @TODO Rewrite this to a filter!
-                       if ((GET_EXT_VERSION("cache") >= "0.1.2") && (isset($cacheInstance)) && (is_object($cacheInstance))) {
-                               // Remove extensions and mod_reg cache file
-                               LOAD_INC_ONCE("inc/libs/cache_functions.php");
-                               require(sprintf("%sinc/extensions/ext-cache.php", constant('PATH')));
-                               if ($cacheInstance->loadCacheFile("extensions", true)) $cacheInstance->destroyCacheFile();
-                               if ($cacheInstance->loadCacheFile("mod_reg"))          $cacheInstance->destroyCacheFile();
-                       } // END - if
-               } // END - if
-
-               // Test again
-               if ((getConfig('file_hash') != "") && (getConfig('master_salt') != "") && (getConfig('pass_scramble') != "")) {
-                       // File hash fas generated so we can also file the secret file... hopefully.
-                       $hashFile = sprintf("%sinc/.secret/.%s", constant('PATH'), getConfig('file_hash'));
-                       if (FILE_READABLE($hashFile)) {
-                               // Read file
-                               setConfigEntry('secret_key', READ_FILE($hashFile));
-                       } else {
-                               // Remove it from database
-                               UPDATE_CONFIG("file_hash", "");
-
-                               // Cannot read secret file!
-                               mxchange_die("Cannot read secret file! Please try to reload");
-                       }
-               } // END - if
-
-               // Transfer words/numbers to constants
-               define('POINTS'  , getConfig('points_word'));
-               define('MT_WORD' , getConfig('mt_word'));
-               define('MT_WORD2', getConfig('mt_word2'));
-               define('MT_WORD3', getConfig('mt_word3'));
-               define('_MAX'    , getConfig('rand_no'));
-       } else {
-               // Set some lame ( ;-) ) default settings
-               setConfigEntry('def_refid'] = 0;
-               setConfigEntry('enable_title_deco', = "N");
-               setConfigEntry('title_mod_show'   , = "Y");
-               setConfigEntry('title_middle'     , = "-");
-               // @TODO Can we remove this? setConfigEntry('verbose_sql'        , "N");
-               define('MT_WORD' , DEFAULT_MT_WORD );
-               define('MT_WORD2', DEFAULT_MT_WORD2);
-               define('MT_WORD3', DEFAULT_MT_WORD3);
-               define('POINTS'  , DEFAULT_POINTS);
-       }
-       break;
+
+                       case 'modify': // When the extension got modified
+                               break;
+
+                       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
+                               // When the sql_patches is not installed we cannot load it's configuration... *sigh*
+                               if (GET_EXT_VERSION('sql_patches') != '') {
+                                       // Init key
+                                       setConfigEntry('secret_key', '');
+
+                                       // Read key from secret file
+                                       if ((getConfig('file_hash') == '') || (getConfig('master_salt') == '') || (getConfig('pass_scramble') == '')) {
+                                               // Cache instance
+                                               // Maybe need setup of secret key!
+                                               loadIncludeOnce('inc/gen_sql_patches.php');
+
+                                               // @TODO Rewrite this to a filter!
+                                               if ((GET_EXT_VERSION('cache') >= '0.1.2') && (isCacheInstanceValid())) {
+                                                       // Remove extensions and mod_reg cache file
+                                                       loadIncludeOnce('inc/libs/cache_functions.php');
+                                                       require(sprintf("%sinc/extensions/ext-cache.php", constant('PATH')));
+                                                       if ($GLOBALS['cache_instance']->loadCacheFile("extensions", true)) $GLOBALS['cache_instance']->destroyCacheFile();
+                                                       if ($GLOBALS['cache_instance']->loadCacheFile("modreg"))           $GLOBALS['cache_instance']->destroyCacheFile();
+                                               } // END - if
+                                       } // END - if
+
+                                       // Test again
+                                       if ((getConfig('file_hash') != '') && (getConfig('master_salt') != '') && (getConfig('pass_scramble') != '')) {
+                                               // File hash fas generated so we can also file the secret file... hopefully.
+                                               $hashFile = sprintf("%sinc/.secret/.%s", constant('PATH'), getConfig('file_hash'));
+                                               if (isFileReadable($hashFile)) {
+                                                       // Read file
+                                                       setConfigEntry('secret_key', readFromFile($hashFile));
+                                               } else {
+                                                       // Remove it from database
+                                                       updateConfiguration('file_hash', '');
+
+                                                       // Cannot read secret file!
+                                                       app_die(__FILE__, __LINE__, "Cannot read secret file! Please try to reload");
+                                               }
+                                       } // END - if
+
+                                       // Transfer words/numbers to constants
+                                       define('POINTS'  , getConfig('points_word'));
+                                       define('MT_WORD' , getConfig('mt_word'));
+                                       define('MT_WORD2', getConfig('mt_word2'));
+                                       define('MT_WORD3', getConfig('mt_word3'));
+                                       define('_MAX'    , getConfig('rand_no'));
+                               } else {
+                                       // Set some lame ( ;-) ) default settings
+                                       setConfigEntry('def_refid'        , 0);
+                                       setConfigEntry('enable_title_deco', 'N');
+                                       setConfigEntry('title_mod_show'   , 'Y');
+                                       setConfigEntry('title_middle'     , '-');
+                                       // @TODO Can we remove this? setConfigEntry('verbose_sql'        , 'N');
+                                       define('MT_WORD' , getMessage('DEFAULT_MT_WORD'));
+                                       define('MT_WORD2', getMessage('DEFAULT_MT_WORD2'));
+                                       define('MT_WORD3', getMessage('DEFAULT_MT_WORD3'));
+                                       define('POINTS'  , getMessage('DEFAULT_POINTS'));
+                               }
+                               break;
 }
 
 // Keep this extension always active!
 }
 
 // Keep this extension always active!
-$EXT_ALWAYS_ACTIVE = "Y";
+EXT_SET_ALWAYS_ACTIVE('Y');
 
 //
 ?>
 
 //
 ?>