Removed all LIMIT x statements from extension removal queries, several minor fixes
[mailer.git] / inc / extensions / ext-sql_patches.php
1 <?php
2 /************************************************************************
3  * MXChange v0.2.1                                    Start: 08/21/2004 *
4  * ================                             Last change: 12/04/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-sql_patches.php                              *
8  * -------------------------------------------------------------------- *
9  * Short description : SQL fixes for pro versions                       *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Ausgelagertes "Profildaten aendern"              *
12  * -------------------------------------------------------------------- *
13  * $Revision::                                                        $ *
14  * $Date::                                                            $ *
15  * $Tag:: 0.2.1-FINAL                                                 $ *
16  * $Author::                                                          $ *
17  * Needs to be in all Files and every File needs "svn propset           *
18  * svn:keywords Date Revision" (autoprobset!) at least!!!!!!            *
19  * -------------------------------------------------------------------- *
20  * Copyright (c) 2003 - 2008 by Roland Haeder                           *
21  * For more information visit: http://www.mxchange.org                  *
22  *                                                                      *
23  * This program is free software; you can redistribute it and/or modify *
24  * it under the terms of the GNU General Public License as published by *
25  * the Free Software Foundation; either version 2 of the License, or    *
26  * (at your option) any later version.                                  *
27  *                                                                      *
28  * This program is distributed in the hope that it will be useful,      *
29  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
30  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
31  * GNU General Public License for more details.                         *
32  *                                                                      *
33  * You should have received a copy of the GNU General Public License    *
34  * along with this program; if not, write to the Free Software          *
35  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
36  * MA  02110-1301  USA                                                  *
37  ************************************************************************/
38
39 // Some security stuff...
40 if (!defined('__SECURITY')) {
41         $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
42         require($INC);
43 }
44
45 // Version number
46 EXT_SET_VERSION("0.6.2");
47
48 // Version history array (add more with , "0.1" and so on)
49 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"));
50
51 switch ($EXT_LOAD_MODE)
52 {
53 case "register": // Do stuff when installation is running (modules.php?module=admin&action=login is called)
54         // SQL commands to run
55         ADD_SQL("");
56         break;
57
58 case "remove": // Do stuff when removing extension
59         // Drop tables
60         ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las`");
61         ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las_data`");
62         ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_stats`");
63         ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_user_stats_data`");
64         ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_user_book`");
65         ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_filters`");
66
67         // Delete admin menu entries
68         ADD_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE
69 `what`='config_extensions' OR
70 `what`='config_home' OR
71 `what`='list_unconfirmed' OR
72 `what`='config_refid' OR
73 `what`='config_title' OR
74 `what`='sub_points' OR
75 `what`='config_admin' OR
76 `what`='config_proxy' OR
77 `what`='config_session' OR
78 `what`='list_filter'
79 LIMIT 10");
80
81         // Delete/update member menu entries
82         ADD_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_member_menu` WHERE
83 `what`='stats2' OR
84 `what`='reflist' OR
85 (action='stats' AND (`what`='' OR `what` IS NULL)) OR
86 (action='extras' AND (`what`='' OR `what` IS NULL)) OR
87 (action='rals' AND (`what`='' OR `what` IS NULL)) OR
88 (action='account' AND (`what`='' OR `what` IS NULL))");
89         ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `action`='main' WHERE
90 action='stats' OR
91 action='extras' OR
92 action='rals' OR
93 action='account'");
94
95         // Drop indexes
96         /* @TODO SQL_ALTER_TABLE() should work now properly
97         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP UNIQUE KEY `ext_name`");
98         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admins` DROP UNIQUE KEY `login`");
99         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP INDEX `status`");
100         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refbanner` DROP INDEX `visible`");
101         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refdepths` DROP UNIQUE KEY `level`");
102         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` DROP INDEX `level`");
103         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_pool` DROP INDEX `data_type`");
104         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_mod_reg` DROP UNIQUE KEY `module`");
105         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` DROP INDEX `action`");
106         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` DROP INDEX `what`");
107         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `task_type`");
108         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `status`");
109         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `task_created`");
110         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP FULLTEXT `subject`");
111         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` DROP INDEX `subject`");
112         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP INDEX `ext_active`");
113         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP INDEX `status`");
114         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP FULLTEXT `family`");
115         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP INDEX `max_mails`");
116         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP INDEX `password`");
117         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `action`");
118         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `what`");
119         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `sort`");
120         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `visible`");
121         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `locked`");
122         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `what`");
123         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `sort`");
124         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `visible`");
125         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `locked`");
126         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_cats` DROP INDEX `visible`");
127         ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_cats` DROP INDEX `sort`");
128         */
129         break;
130
131 case "activate": // Do stuff when admin activates this extension
132         // SQL commands to run
133         ADD_SQL("");
134         break;
135
136 case "deactivate": // Do stuff when admin deactivates this extension
137         // SQL commands to run
138         ADD_SQL("");
139         break;
140
141 case "update": // Update an extension
142         switch ($EXT_VER)
143         {
144         case "0.0.1": // SQL queries for v0.0.1
145                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD ext_autopurge ENUM('Y','N') NOT NULL DEFAULT 'Y'");
146                 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('setup','config_extensions','Erweitungsmanagement','Alle Einstellungen am Erweiterungsmanagement.', 10)");
147
148                 // Update notes (these will be set as task text!)
149                 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.");
150                 break;
151
152         case "0.0.2": // SQL queries for v0.0.2
153                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` CHANGE auto_purge auto_purge BIGINT(20) UNSIGNED NOT NULL DEFAULT ".(getConfig('one_day')*14)."");
154
155                 // Update notes (these will be set as task text!)
156                 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.)");
157                 break;
158
159         case "0.0.3": // SQL queries for v0.0.3
160                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD points_word VARCHAR(255) NOT NULL DEFAULT 'Punkte'");
161
162                 // Update notes (these will be set as task text!)
163                 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.");
164                 break;
165
166         case "0.0.4": // SQL queries for v0.0.4
167                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mails_page BIGINT(20) UNSIGNED NOT NULL DEFAULT 10");
168
169                 // Update notes (these will be set as task text!)
170                 EXT_SET_UPDATE_NOTES("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugef&uuml;gt.");
171                 break;
172
173         case "0.0.5": // SQL queries for v0.0.5
174                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD index_home VARCHAR(255) NOT NULL DEFAULT 'welcome'");
175                 ADD_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)");
176
177                 // Update notes (these will be set as task text!)
178                 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.");
179                 break;
180
181         case "0.0.6": // SQL queries for v0.0.6
182                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` ADD ext_has_css ENUM('Y','N') NOT NULL DEFAULT 'N'");
183
184                 // Update notes (these will be set as task text!)
185                 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.");
186                 break;
187
188         case "0.0.7": // SQL queries for v0.0.7
189                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD verbose_sql ENUM('Y','N') NOT NULL DEFAULT 'Y'");
190
191                 // Update notes (these will be set as task text!)
192                 EXT_SET_UPDATE_NOTES("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
193                 break;
194
195         case "0.0.8": // SQL queries for v0.0.8
196                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD menu_blur_spacer VARCHAR(255) NOT NULL DEFAULT '&nbsp;<strong><big>&middot;</big></strong>&nbsp;'");
197
198                 // Update notes (these will be set as task text!)
199                 EXT_SET_UPDATE_NOTES("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
200                 break;
201
202         case "0.0.9": // SQL queries for v0.0.9
203                 ADD_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)");
204
205                 // Update notes (these will be set as task text!)
206                 EXT_SET_UPDATE_NOTES("Unbest&auml;tigte Maillinks k&ouml;nnen unter Email-Management -&gt; Unbest. Mails auflisten aufgelistet werden.");
207                 break;
208
209         case "0.1.0": // SQL queries for v0.2.1
210                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD reg_points_mode ENUM('ref','direct') NOT NULL DEFAULT 'ref'");
211
212                 // Update notes (these will be set as task text!)
213                 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?");
214                 break;
215
216         case "0.1.1": // SQL queries for v0.1.1
217                 ADD_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");
218                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD index_delay TINYINT(3) UNSIGNED NOT NULL DEFAULT 0");
219                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD index_cookie BIGINT(20) UNSIGNED NOT NULL DEFAULT ".(getConfig('one_day')*365)."");
220
221                 // Update notes (these will be set as task text!)
222                 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.");
223                 break;
224
225         case "0.1.2": // SQL queries for v0.1.2
226                 ADD_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)");
227                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD def_refid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
228
229                 // Update notes (these will be set as task text!)
230                 EXT_SET_UPDATE_NOTES("Standart Referal-ID kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
231                 break;
232
233         case "0.1.3": // SQL queries for v0.1.3
234                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD refid_target ENUM('register','index') NOT NULL DEFAULT 'register'");
235
236                 // Update notes (these will be set as task text!)
237                 EXT_SET_UPDATE_NOTES("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
238                 break;
239
240         case "0.1.4": // SQL queries for v0.1.4
241                 // Update notes (these will be set as task text!)
242                 EXT_SET_UPDATE_NOTES("Ung&uuml;ltiges Update (nach ext-theme.php verschoben!).");
243                 break;
244
245         case "0.1.5": // SQL queries for v0.1.5
246                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP ext_has_admin");
247
248                 // Update notes (these will be set as task text!)
249                 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.");
250                 break;
251
252         case "0.1.6": // SQL queries for v0.1.6
253                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD enable_title_deco ENUM('Y','N') NOT NULL DEFAULT 'Y'");
254                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD title_left VARCHAR(10) NOT NULL DEFAULT '[--'");
255                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD title_middle VARCHAR(10) NOT NULL DEFAULT '-'");
256                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD title_right VARCHAR(10) NOT NULL DEFAULT '--]'");
257                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD enable_mod_title ENUM('Y','N') NOT NULL DEFAULT 'Y'");
258                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD enable_what_title ENUM('Y','N') NOT NULL DEFAULT 'Y'");
259                 ADD_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)");
260
261                 // Update notes (these will be set as task text!)
262                 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.");
263                 break;
264
265         case "0.1.7": // SQL queries for v0.1.7
266                 // Update notes (these will be set as task text!)
267                 EXT_SET_UPDATE_NOTES("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
268                 break;
269
270         case "0.1.8": // SQL queries for v0.1.8
271                 // Update notes (these will be set as task text!)
272                 EXT_SET_UPDATE_NOTES("mad_count und last_mad werden nun aus der Datenbank geladen");
273                 break;
274
275         case "0.1.9": // SQL queries for v0.1.9
276                 // Update notes (these will be set as task text!)
277                 EXT_SET_UPDATE_NOTES("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
278                 break;
279
280         case "0.2.0": // SQL queries for v0.2.0
281                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_jackpot` CHANGE points points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
282
283                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_payments` CHANGE payment payment FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
284                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_payments` CHANGE price price FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
285
286                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` CHANGE used_points used_points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
287                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_points` CHANGE points points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
288                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_points` CHANGE locked_points locked_points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
289
290                 // Update notes (these will be set as task text!)
291                 EXT_SET_UPDATE_NOTES("5 Nachkommastellen implementiert");
292                 break;
293
294         case "0.2.1": // SQL queries for v0.2.1
295                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD css_php ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
296
297                 // Update notes (these will be set as task text!)
298                 EXT_SET_UPDATE_NOTES("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
299                 break;
300
301         case "0.2.2": // SQL queries for v0.2.2
302                 // Update notes (these will be set as task text!)
303                 EXT_SET_UPDATE_NOTES("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
304                 break;
305
306         case "0.2.3": // SQL queries for v0.2.3
307                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD guest_menu ENUM('Y','N') NOT NULL DEFAULT 'Y'");
308                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD member_menu ENUM('Y','N') NOT NULL DEFAULT 'Y'");
309                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD youre_here ENUM('Y','N') NOT NULL DEFAULT 'Y'");
310
311                 // Update notes (these will be set as task text!)
312                 EXT_SET_UPDATE_NOTES("Gast- und Mitgliedsmen&uuml;s lassen sich getrennt voneinander abschalten.");
313                 break;
314
315         case "0.2.4": // SQL queries for v0.2.4
316                 $auto_type = "png"; // PNG image is the default
317                 if ((INCLUDE_READABLE("theme/".GET_CURR_THEME()."/images/code_bg.jpg")) && function_exists('imagecreatefromjpeg')) {
318                         // Switch to JPEG format
319                         $auto_type = "jpg";
320                 }
321                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD img_type ENUM('jpg','png') NOT NULL DEFAULT '".$auto_type."'");
322
323                 // Update notes (these will be set as task text!)
324                 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.");
325                 break;
326
327         case "0.2.5": // SQL queries for v0.2.5
328                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` CHANGE receive_mails receive_mails BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
329                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` CHANGE max_mails max_mails BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
330
331                 // Update notes (these will be set as task text!)
332                 EXT_SET_UPDATE_NOTES("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
333                 break;
334
335         case "0.2.6": // SQL queries for v0.2.6
336                 ADD_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)");
337
338                 // Update notes (these will be set as task text!)
339                 EXT_SET_UPDATE_NOTES("Abzug von {!POINTS!} nun m&ouml;glich.");
340                 break;
341
342         case "0.2.7": // SQL queries for v0.2.7
343                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD stats_limit BIGINT(20) UNSIGNED NOT NULL DEFAULT 10");
344                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
345
346                 // Update notes (these will be set as task text!)
347                 EXT_SET_UPDATE_NOTES("<ol>
348 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
349 <li>Mitgliederstatistik mit Seitennavigation.</li>
350 </ol>");
351                 break;
352
353         case "0.2.8": // SQL queries for v0.2.8
354                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD last_login VARCHAR(10) NOT NULL DEFAULT 0");
355
356                 // Update notes (these will be set as task text!)
357                 EXT_SET_UPDATE_NOTES("Letzter Login wird gespeichert, Cache wird bei installierter Cache-Erweiterung bei Sprachen&auml;nderung aufgefrischt.");
358                 break;
359
360         case "0.2.9": // SQL queries for v0.2.9
361                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mt_word VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
362                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mt_word2 VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
363                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD mt_word3 VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
364
365                 // Update notes (these will be set as task text!)
366                 EXT_SET_UPDATE_NOTES("W&ouml;rter <strong>Mailtausch</strong>, <strong>Mailtausches</strong> und <strong>Mailtauscher</strong> sind austauschbar.");
367                 break;
368
369         case "0.3.0": // SQL queries for v0.3.0
370                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `title`='{!POINTS!}/Referal-Ebenen' WHERE `what`='config_points' LIMIT 1");
371                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `title`='Mailverg&uuml;tungen...' WHERE `what`='payments' LIMIT 1");
372
373                 // Update notes (these will be set as task text!)
374                 EXT_SET_UPDATE_NOTES("Zwei Men&uuml;punkte umbenannt.");
375                 break;
376
377         case "0.3.1": // SQL queries for v0.3.1
378                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` ADD UNIQUE KEY (ext_name)");
379                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admins` ADD UNIQUE KEY (login)");
380                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD INDEX (status)");
381                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refbanner` ADD INDEX (visible)");
382                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refdepths` ADD UNIQUE KEY (level)");
383                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` ADD INDEX (level)");
384                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_pool` ADD INDEX (data_type)");
385                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_mod_reg` ADD UNIQUE KEY (module)");
386                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` ADD INDEX (action)");
387                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` ADD INDEX (what)");
388                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (task_type)");
389                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (status)");
390                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (task_created)");
391                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD FULLTEXT (subject)");
392                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (subject)");
393                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` ADD INDEX (ext_active)");
394                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD INDEX (status)");
395                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD FULLTEXT (family)");
396                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD INDEX (max_mails)");
397                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD INDEX (password)");
398                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (action)");
399                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (what)");
400                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (sort)");
401                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (visible)");
402                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD INDEX (locked)");
403                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (what)");
404                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (sort)");
405                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (visible)");
406                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX (locked)");
407                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_cats` ADD INDEX (visible)");
408                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_cats` ADD INDEX (sort)");
409
410                 // Update notes (these will be set as task text!)
411                 EXT_SET_UPDATE_NOTES("Eindeutige Schl&uuml;ssel (UNIQUE KEY) und normale Schl&uuml;ssel (INDEX) gesetzt.");
412                 break;
413
414         case "0.3.2": // SQL queries for v0.3.2
415                 // Connection table between the menu system and the "logical area" system
416                 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las`");
417                 ADD_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_admin_menu_las` (
418 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
419 la_id VARCHAR(255) NOT NULL DEFAULT '',
420 la_action VARCHAR(255) NOT NULL DEFAULT '',
421 la_what VARCHAR(255) NOT NULL DEFAULT '',
422 INDEX (la_id),
423 INDEX (la_action),
424 INDEX (la_what),
425 PRIMARY KEY(id)
426 ) TYPE={!_TABLE_TYPE!}");
427                 // All "logical areas" together
428                 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_las_data`");
429                 ADD_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_admin_menu_las_data` (
430 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
431 la_id VARCHAR(255) NOT NULL DEFAULT '',
432 la_title VARCHAR(255) NOT NULL DEFAULT '',
433 la_posx BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
434 la_posy BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
435 UNIQUE KEY (la_id),
436 INDEX (la_posx),
437 INDEX (la_posy),
438 PRIMARY KEY(id)
439 ) TYPE={!_TABLE_TYPE!}");
440                 // Which menu do you like?
441                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD admin_menu ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
442
443                 // Insert menus
444                 ADD_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)");
445
446                 // Update notes (these will be set as task text!)
447                 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.");
448                 break;
449
450         case "0.3.3": // SQL queries for v0.3.3
451                 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
452                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD admin_menu_sorter ENUM('Y','N') NOT NULL DEFAULT 'Y'");
453
454                 // The statistics table
455                 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_admin_menu_stats`");
456                 ADD_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_admin_menu_stats` (
457 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
458 aid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
459 type ENUM('la','action','what') NOT NULL DEFAULT 'what',
460 clicks BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
461 INDEX (aid),
462 PRIMARY KEY (id)
463 ) TYPE={!_TABLE_TYPE!}");
464
465                 // Update notes (these will be set as task text!)
466                 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.");
467                 break;
468
469         case "0.3.4": // SQL queries for v0.3.4
470                 // Update notes (these will be set as task text!)
471                 EXT_SET_UPDATE_NOTES("Veraltetes Update (what=list_user&amp;mode=noref)");
472                 break;
473
474         case "0.3.5": // SQL queries for v0.3.5
475                 // List accounts with no referal
476                 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('stats',NULL,'Statistiken',4,'Y','N')");
477                 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('stats','stats2','Framekiller-Mails',2,'Y','N')");
478                 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('extras',NULL,'Extras',5,'Y','N')");
479                 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('rals',NULL,'Rallyes',6,'Y','N')");
480                 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('account',NULL,'Ihr Account',7,'Y','N')");
481                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `action`='stats', `sort`='1', `title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
482                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `action`='extras', `sort`='3' WHERE `what`='reflinks' LIMIT 1");
483
484                 // Update notes (these will be set as task text!)
485                 EXT_SET_UPDATE_NOTES("Mitgliedsmen&uuml; komplett umgebaut.");
486                 break;
487
488         case "0.3.6": // SQL queries for v0.3.6
489                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD salt_length TINYINT(3) UNSIGNED NOT NULL DEFAULT '9'");
490                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD pass_scramble VARCHAR(255) NOT NULL DEFAULT ''");
491                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` MODIFY password VARCHAR(255) NOT NULL DEFAULT ''");
492                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` MODIFY user_hash VARCHAR(255) NOT NULL DEFAULT ''");
493                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admins` MODIFY password VARCHAR(255) NOT NULL DEFAULT ''");
494                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD rand_no BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
495                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD file_hash VARCHAR(255) NOT NULL DEFAULT ''");
496                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD master_salt VARCHAR(255) NOT NULL DEFAULT ''");
497                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_config` SET rand_no=(ROUND(RAND() * 99999) + 100000) WHERE config=0 LIMIT 1");
498                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_mod_reg` ADD has_menu ENUM('Y','N') NOT NULL DEFAULT 'N'");
499                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_mod_reg` SET has_menu='Y' WHERE module='admin' OR module='index' OR module='login' LIMIT 3");
500
501                 // Update notes (these will be set as task text!)
502                 EXT_SET_UPDATE_NOTES("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
503                 break;
504
505         case "0.3.7": // SQL queries for v0.3.7
506                 EXT_SET_UPDATE_NOTES("Problem w&auml;hrend des Installationsvorganges behoben.");
507                 break;
508
509         case "0.3.8": // SQL queries for v0.3.8
510                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` CHANGE descr descr MEDIUMTEXT NULL");
511                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_pool` CHANGE `text` `text` LONGTEXT NOT NULL");
512
513                 // Update notes (these will be set as task text!)
514                 EXT_SET_UPDATE_NOTES("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
515                 break;
516
517         case "0.3.9": // SQL queries for v0.3.9
518                 ADD_SQL("UPDATE  `{!_MYSQL_PREFIX!}_admin_menu` SET title = REPLACE(title, '--POINTS--','!POINTS!') WHERE title LIKE '%--POINTS--%'");
519                 ADD_SQL("UPDATE  `{!_MYSQL_PREFIX!}_admin_menu` SET descr = REPLACE(descr, '--POINTS--','!POINTS!') WHERE descr LIKE '%--POINTS--%'");
520                 ADD_SQL("UPDATE  `{!_MYSQL_PREFIX!}_guest_menu` SET title = REPLACE(title, '--POINTS--','!POINTS!') WHERE title LIKE '%--POINTS--%'");
521                 ADD_SQL("UPDATE  `{!_MYSQL_PREFIX!}_member_menu` SET title = REPLACE(title, '--POINTS--','!POINTS!') WHERE title LIKE '%--POINTS--%'");
522
523                 // Update notes (these will be set as task text!)
524                 EXT_SET_UPDATE_NOTES("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
525                 break;
526
527         case "0.4.0": // SQL queries for v0.4.0
528                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET title = 'Email-Management' WHERE action = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
529
530                 // Update notes (these will be set as task text!)
531                 EXT_SET_UPDATE_NOTES("Email-Verwaltung nach Email-Management umbenannt.");
532                 break;
533
534         case "0.4.1": // SQL queries for v0.4.1
535                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP INDEX `status`");
536                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD INDEX `status_mails` (`status`,`max_mails`)");
537                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `show_timings` ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
538
539                 // Update notes (these will be set as task text!)
540                 EXT_SET_UPDATE_NOTES("Tabellen-Schl&uuml;ssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
541                 break;
542
543         case "0.4.2": // SQL queries for v0.4.2
544                 // Update notes (these will be set as task text!)
545                 EXT_SET_UPDATE_NOTES("Nicht mehr g&uuml;ltiges Update.");
546                 break;
547
548         case "0.4.3": // SQL queries for v0.4.3
549                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_host` VARCHAR(255) NOT NULL DEFAULT ''");
550                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_port` INT(5) UNSIGNED NOT NULL DEFAULT 0");
551                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_username` VARCHAR(255) NOT NULL DEFAULT ''");
552                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `proxy_password` VARCHAR(255) NOT NULL DEFAULT ''");
553                 ADD_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)");
554
555                 // Update notes (these will be set as task text!)
556                 EXT_SET_UPDATE_NOTES("Proxy-Einstellungen hinzugef&uuml;gt.");
557                 break;
558
559         case "0.4.4": // SQL queries for v0.4.4
560                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
561                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
562                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
563                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `what`=NULL WHERE `what`=''");
564                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_guest_menu` SET `what`=NULL WHERE `what`=''");
565                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `what`=NULL WHERE `what`=''");
566                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` DROP INDEX `what`");
567                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_admin_menu` ADD UNIQUE (`what`)");
568                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` DROP INDEX `what`");
569                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_guest_menu` ADD UNIQUE (`what`)");
570                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD INDEX `action` (`action`)");
571                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP INDEX `what`");
572                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` ADD UNIQUE (`what`)");
573
574                 // Update notes (these will be set as task text!)
575                 EXT_SET_UPDATE_NOTES("Schl&uuml;ssel in Admin-, Gast- und Mitgliedsmen&uuml; verbessert.");
576                 break;
577
578         case "0.4.5": // SQL queries for v0.4.5
579                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD last_month CHAR(2) NOT NULL DEFAULT '00'");
580                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD last_week CHAR(2) NOT NULL DEFAULT '00'");
581
582                 // Update notes (these will be set as task text!)
583                 EXT_SET_UPDATE_NOTES("T&auml;glichen/w&ouml;chentlichen/monatlichen Reset verbessert.");
584                 break;
585
586         case "0.4.6": // SQL queries for v0.4.6
587                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD gender ENUM ('M','F') NOT NULL DEFAULT 'M'");
588                 // @DEPRECATED ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET gender=sex WHERE sex != 'M'");
589                 // @DEPRECATED ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP sex");
590
591                 // Update notes (these will be set as task text!)
592                 EXT_SET_UPDATE_NOTES("Offensives Wort &quot;Sex&quot; gegen &quot;Gender&quot; ausgetauscht.");
593                 break;
594
595         case "0.4.7": // SQL queries for v0.4.7
596                 // Update notes (these will be set as task text!)
597                 EXT_SET_UPDATE_NOTES("Veraltetes Update.");
598                 break;
599
600         case "0.4.8": // SQL queries for v0.4.8
601                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_task_system` ADD INDEX (subject)");
602
603                 // Update notes (these will be set as task text!)
604                 EXT_SET_UPDATE_NOTES("Index f&uuml;r Betreff eingef&uuml;gt.");
605                 break;
606
607         case "0.4.9": // SQL queries for v0.4.9
608                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` CHANGE `user_hash` `user_hash` VARCHAR(255) NULL DEFAULT NULL");
609                 ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_user_data` SET user_hash=NULL WHERE user_hash IS NOT NULL AND `status`='CONFIRMED'");
610                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD UNIQUE (`user_hash`)");
611
612                 // Update notes (these will be set as task text!)
613                 EXT_SET_UPDATE_NOTES("User-Hash zum Best&auml;tigen wird auf NULL gesetzt, wenn Account best&auml;tigt wird.");
614                 break;
615
616         case "0.5.0": // SQL queries for v0.5.0
617                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` DROP INDEX `level`");
618                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` DROP INDEX `userid`");
619                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refsystem` ADD UNIQUE `userid_level` (`userid`,`level`)");
620
621                 // Update notes (these will be set as task text!)
622                 EXT_SET_UPDATE_NOTES("Referal-System unterst&uuml;tzt nun detailierte Referal-&Uuml;bersicht und vieles mehr.");
623                 break;
624
625         case "0.5.1": // SQL queries for v0.5.1
626                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_member_menu` DROP `descr`");
627
628                 // Update notes (these will be set as task text!)
629                 EXT_SET_UPDATE_NOTES("Beschreibungsspalte von Mitgliedsmen&uuml; entfernt, welche ohnehin nicht genutzt wird.");
630                 break;
631
632         case "0.5.2": // SQL queries for v0.5.2
633                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_refdepths` CHANGE `percents` `percents` FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000");
634
635                 // Update notes (these will be set as task text!)
636                 EXT_SET_UPDATE_NOTES("Prozents&aum;tze k&ouml;nnen nun f&uuml;nf Stelle hinter dem Komma sein.");
637                 break;
638
639         case "0.5.3": // SQL queries for v0.5.3
640                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD session_save_path VARCHAR(255) NOT NULL DEFAULT ''");
641                 ADD_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)");
642
643                 // Update notes (these will be set as task text!)
644                 EXT_SET_UPDATE_NOTES("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com n&ouml;tig.");
645                 break;
646
647         case "0.5.4": // SQL queries for v0.5.4
648                 ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`sort`,`visible`,`locked`) VALUES ('main','reflist','Ref-&Uuml;bersicht',5,'Y','N')");
649
650                 // Depends on refback extension
651                 EXT_SET_UPDATE_DEPENDS("refback");
652
653                 // Update notes (these will be set as task text!)
654                 EXT_SET_UPDATE_NOTES("Ref-&Uuml;bersicht eingebaut. Diese h&auml;ngt von der Erweiterung <strong>refback</strong> ab.");
655                 break;
656
657         case "0.5.5": // SQL queries for v0.5.5
658                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD show_points_unconfirmed ENUM('Y','N') NOT NULL DEFAULT 'Y'");
659
660                 // Update notes (these will be set as task text!)
661                 EXT_SET_UPDATE_NOTES("Anzeige der {!POINTS!} unter den unbest&auml;tigten Mails kann nun optional abgeschaltet werden.");
662                 break;
663
664         case "0.5.6": // SQL queries for v0.5.6
665                 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_user_stats_data`");
666                 ADD_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_user_stats_data` (
667 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
668 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
669 `stats_type` VARCHAR(255) NOT NULL DEFAULT 'unknown',
670 `stats_data` VARCHAR(255) NOT NULL DEFAULT '',
671 `inserted` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
672 PRIMARY KEY(`id`),
673 INDEX (`userid`),
674 INDEX (`stats_type`)
675 ) TYPE={!_TABLE_TYPE!} COMMENT='Member statistics data'");
676
677                 // Update notes (these will be set as task text!)
678                 EXT_SET_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.");
679                 break;
680
681         case "0.5.7": // SQL queries for v0.5.7
682                 ADD_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
683
684                 // Update notes (these will be set as task text!)
685                 EXT_SET_UPDATE_NOTES("Auflistung der Mitglieder ohne Werber nach what=list_user&amp;mode=norefs verschoben.");
686                 break;
687
688         case "0.5.8": // SQL queries for v0.5.8
689                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_extensions` DROP `ext_lang_file`");
690
691                 // Update notes (these will be set as task text!)
692                 EXT_SET_UPDATE_NOTES("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
693                 break;
694
695         case "0.5.9": // SQL queries for v0.5.9
696                 ADD_SQL("DROP TABLE IF EXISTS `{!_MYSQL_PREFIX!}_filters`");
697                 ADD_SQL("CREATE TABLE `{!_MYSQL_PREFIX!}_filters` (
698 `filter_id` BIGINT(20) UNSIGNED AUTO_INCREMENT,
699 `filter_name` VARCHAR(255) NOT NULL DEFAULT '',
700 `filter_function` VARCHAR(255) NOT NULL DEFAULT '',
701 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
702 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
703 PRIMARY KEY (`filter_id`)
704 ) TYPE={!_TABLE_TYPE!} COMMENT='Filter system'");
705                 ADD_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)");
706
707                 // Update notes (these will be set as task text!)
708                 EXT_SET_UPDATE_NOTES("Tabellen f&uuml;r Filter-System hinzugef&uuml;gt.");
709                 break;
710
711         case "0.6.0": // SQL queries for v0.6.0
712                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD `update_filter_usage` ENUM('N','Y') NOT NULL DEFAULT 'N'");
713
714                 // Update notes (these will be set as task text!)
715                 EXT_SET_UPDATE_NOTES("Benutzungsstatistik eingebaut. Das Z&auml;hlen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
716                 break;
717
718         case "0.6.1": // SQL queries for v0.6.1
719                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP login_failtures");
720                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` DROP last_failture");
721                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD login_failures BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
722                 ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD last_failure TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'");
723
724                 // Update notes (these will be set as task text!)
725                 EXT_SET_UPDATE_NOTES("Falsche Schreibweise korregiert.");
726                 break;
727
728         case "0.6.2": // SQL queries for v0.6.2
729                 // Depends on refback extension
730                 EXT_SET_UPDATE_DEPENDS("user");
731
732                 // Update notes (these will be set as task text!)
733                 EXT_SET_UPDATE_NOTES("Abh&auml;ngigkeit von <u>ext-user</u> gesetzt.");
734                 break;
735         }
736         break;
737
738 case "modify": // When the extension got modified
739         break;
740
741 case "test": // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
742         break;
743
744 default: // Do stuff when extension is loaded
745         // When the sql_patches is not installed we cannot load it's configuration... *sigh*
746         if (GET_EXT_VERSION("sql_patches") != '') {
747                 // Init key
748                 setConfigEntry('secret_key', "");
749
750                 // Read key from secret file
751                 if ((getConfig('file_hash') == "") || (getConfig('master_salt') == "") || (getConfig('pass_scramble') == "")) {
752                         // Cache instance
753                         // Maybe need setup of secret key!
754                         LOAD_INC_ONCE("inc/gen_sql_patches.php");
755
756                         // @TODO Rewrite this to a filter!
757                         if ((GET_EXT_VERSION("cache") >= "0.1.2") && (isCacheInstanceValid())) {
758                                 // Remove extensions and mod_reg cache file
759                                 LOAD_INC_ONCE("inc/libs/cache_functions.php");
760                                 require(sprintf("%sinc/extensions/ext-cache.php", constant('PATH')));
761                                 if ($GLOBALS['cache_instance']->loadCacheFile("extensions", true)) $GLOBALS['cache_instance']->destroyCacheFile();
762                                 if ($GLOBALS['cache_instance']->loadCacheFile("modreg"))           $GLOBALS['cache_instance']->destroyCacheFile();
763                         } // END - if
764                 } // END - if
765
766                 // Test again
767                 if ((getConfig('file_hash') != "") && (getConfig('master_salt') != "") && (getConfig('pass_scramble') != "")) {
768                         // File hash fas generated so we can also file the secret file... hopefully.
769                         $hashFile = sprintf("%sinc/.secret/.%s", constant('PATH'), getConfig('file_hash'));
770                         if (FILE_READABLE($hashFile)) {
771                                 // Read file
772                                 setConfigEntry('secret_key', READ_FILE($hashFile));
773                         } else {
774                                 // Remove it from database
775                                 UPDATE_CONFIG("file_hash", "");
776
777                                 // Cannot read secret file!
778                                 mxchange_die("Cannot read secret file! Please try to reload");
779                         }
780                 } // END - if
781
782                 // Transfer words/numbers to constants
783                 define('POINTS'  , getConfig('points_word'));
784                 define('MT_WORD' , getConfig('mt_word'));
785                 define('MT_WORD2', getConfig('mt_word2'));
786                 define('MT_WORD3', getConfig('mt_word3'));
787                 define('_MAX'    , getConfig('rand_no'));
788         } else {
789                 // Set some lame ( ;-) ) default settings
790                 setConfigEntry('def_refid'        , 0);
791                 setConfigEntry('enable_title_deco', "N");
792                 setConfigEntry('title_mod_show'   , "Y");
793                 setConfigEntry('title_middle'     , "-");
794                 // @TODO Can we remove this? setConfigEntry('verbose_sql'        , "N");
795                 define('MT_WORD' , getMessage('DEFAULT_MT_WORD'));
796                 define('MT_WORD2', getMessage('DEFAULT_MT_WORD2'));
797                 define('MT_WORD3', getMessage('DEFAULT_MT_WORD3'));
798                 define('POINTS'  , getMessage('DEFAULT_POINTS'));
799         }
800         break;
801 }
802
803 // Keep this extension always active!
804 EXT_SET_ALWAYS_ACTIVE("Y");
805
806 //
807 ?>