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