8cc9bbc63ab938270762d7a0e3090a7317faf901
[mailer.git] / inc / extensions / ext-sql_patches.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                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  * -------------------------------------------------------------------- *
18  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
19  * Copyright (c) 2009 - 2011 by Mailer Developer Team                   *
20  * For more information visit: http://www.mxchange.org                  *
21  *                                                                      *
22  * This program is free software; you can redistribute it and/or modify *
23  * it under the terms of the GNU General Public License as published by *
24  * the Free Software Foundation; either version 2 of the License, or    *
25  * (at your option) any later version.                                  *
26  *                                                                      *
27  * This program is distributed in the hope that it will be useful,      *
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
30  * GNU General Public License for more details.                         *
31  *                                                                      *
32  * You should have received a copy of the GNU General Public License    *
33  * along with this program; if not, write to the Free Software          *
34  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
35  * MA  02110-1301  USA                                                  *
36  ************************************************************************/
37
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
40         die();
41 } // END - if
42
43 // Version number
44 setThisExtensionVersion('0.8.2');
45
46 // Version history array (add more with , '0.0.1' and so on)
47 setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8', '0.6.9', '0.7.0', '0.7.1', '0.7.2', '0.7.3', '0.7.4', '0.7.5', '0.7.6', '0.7.7', '0.7.8', '0.7.9', '0.8.0', '0.8.1', '0.8.2'));
48
49 // Keep this extension always active!
50 setExtensionAlwaysActive('Y');
51
52 switch (getExtensionMode()) {
53         case 'register': // Do stuff when installation is running
54                 // This depends on 'cache' now
55                 addExtensionDependency('cache');
56                 break;
57
58         case 'remove': // Do stuff when removing extension
59                 // Drop tables
60                 addDropTableSql('admin_menu_las');
61                 addDropTableSql('admin_menu_las_data');
62                 addDropTableSql('admin_las_stats');
63                 addDropTableSql('dns_cache');
64
65                 // Delete admin menu entries
66                 addExtensionSql("DELETE LOW_PRIORITY FROM
67         `{?_MYSQL_PREFIX?}_admin_menu`
68 WHERE
69         `what`
70 IN (
71         'config_extensions',
72         'config_home',
73         'list_unconfirmed',
74         'config_refid',
75         'config_title',
76         'sub_points',
77         'config_admin',
78         'config_proxy',
79         'config_session',
80         'list_filter',
81         'list_point_accounts'
82 )");
83
84                 // Delete/update member menu entries
85                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE
86 `what`='stats2' OR
87 `what`='reflist' OR
88 (`action`='stats' AND (`what`='' OR `what` IS NULL)) OR
89 (`action`='extras' AND (`what`='' OR `what` IS NULL)) OR
90 (`action`='rals' AND (`what`='' OR `what` IS NULL)) OR
91 (`action`='account' AND (`what`='' OR `what` IS NULL)) OR
92 `action`='earn'");
93                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='main' WHERE
94 `action`='stats' OR
95 `action`='extras' OR
96 `action`='rals' OR
97 `action`='account'");
98
99                 // Unregister filter
100                 unregisterFilter(__FUNCTION__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', true, isExtensionDryRun());
101                 break;
102
103         case 'activate': // Do stuff when admin activates this extension
104                 // SQL commands to run
105                 addExtensionSql('');
106                 break;
107
108         case 'deactivate': // Do stuff when admin deactivates this extension
109                 // SQL commands to run
110                 addExtensionSql('');
111                 break;
112
113         case 'update': // Update an extension
114                 switch (getCurrentExtensionVersion()) {
115                         case '0.0.1': // SQL queries for v0.0.1
116                                 addConfigAddSql('ext_autopurge', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
117                                 addAdminMenuSql('setup','config_extensions','Erweitungsmanagement','Alle Einstellungen am Erweiterungsmanagement.', 10);
118
119                                 // Update notes (these will be set as task text!)
120                                 setExtensionUpdateNotes("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.");
121                                 break;
122
123                         case '0.0.2': // SQL queries for v0.0.2
124                                 addConfigChangeSql('auto_purge', 'auto_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay()*14));
125
126                                 // Update notes (these will be set as task text!)
127                                 setExtensionUpdateNotes("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.)");
128                                 break;
129
130                         case '0.0.3': // SQL queries for v0.0.3
131                                 addConfigAddSql('points_word', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_TEMPLATE}DEFAULT_POINTS{CLOSE_TEMPLATE}'");
132
133                                 // Update notes (these will be set as task text!)
134                                 setExtensionUpdateNotes("Das Wort &quot;Punkte&quot; kann nun per Datenbank ge&auml;ndert werden. Damit k&ouml;nnen Sie anstelle des Wortes Punkte auch Klammlose, Wernis, Primera oder &euro; schreiben.");
135                                 break;
136
137                         case '0.0.4': // SQL queries for v0.0.4
138                                 addConfigAddSql('mails_page', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
139
140                                 // Update notes (these will be set as task text!)
141                                 setExtensionUpdateNotes("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugef&uuml;gt.");
142                                 break;
143
144                         case '0.0.5': // SQL queries for v0.0.5
145                                 addConfigAddSql('index_home', "VARCHAR(255) NOT NULL DEFAULT 'welcome'");
146                                 addAdminMenuSql('setup','config_home','Home-Seite festlegen','Stellen Sie hier ein, welcher Men&uuml;punkt (what-welcome ist Standard) als Einstiegspunkt in das Men&uuml;system genutzt werden soll.', 5);
147
148                                 // Update notes (these will be set as task text!)
149                                 setExtensionUpdateNotes("Die what-welcome.php ist derzeit die &quot;Home&quot;-Seite (Eingangsseite). Dies kann nun per Datenbank ge&auml;ndert werden.");
150                                 break;
151
152                         case '0.0.6': // SQL queries for v0.0.6
153                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD `ext_has_css` ENUM('Y','N') NOT NULL DEFAULT 'N'");
154
155                                 // Update notes (these will be set as task text!)
156                                 setExtensionUpdateNotes("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.");
157                                 break;
158
159                         case '0.0.7': // SQL queries for v0.0.7
160                                 addConfigAddSql('verbose_sql', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
161
162                                 // Update notes (these will be set as task text!)
163                                 setExtensionUpdateNotes("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
164                                 break;
165
166                         case '0.0.8': // SQL queries for v0.0.8
167                                 addConfigAddSql('menu_blur_spacer', "VARCHAR(255) NOT NULL DEFAULT '&nbsp;<strong><big>&middot;</big></strong>&nbsp;'");
168
169                                 // Update notes (these will be set as task text!)
170                                 setExtensionUpdateNotes("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
171                                 break;
172
173                         case '0.0.9': // SQL queries for v0.0.9
174                                 addAdminMenuSql('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);
175
176                                 // Update notes (these will be set as task text!)
177                                 setExtensionUpdateNotes("Unbest&auml;tigte Maillinks k&ouml;nnen unter Email-Management -&gt; Unbest. Mails auflisten aufgelistet werden.");
178                                 break;
179
180                         case '0.1.0': // SQL queries for v0.1.0
181                                 // Update notes (these will be set as task text!)
182                                 setExtensionUpdateNotes("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?");
183                                 break;
184
185                         case '0.1.1': // SQL queries for v0.1.1
186                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Home-/Eingangsseite', descr='Stellen Sie hier ein, welcher Men&uuml;punkt (what-welcome ist Standard) 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");
187                                 addConfigAddSql('index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
188                                 addConfigAddSql('index_cookie', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 365));
189
190                                 // Update notes (these will be set as task text!)
191                                 setExtensionUpdateNotes("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.");
192                                 break;
193
194                         case '0.1.2': // SQL queries for v0.1.2
195                                 addAdminMenuSql('setup','config_refid','Standard-Ref-Id','Stellen Sie hier die Mitglieder-Id ein, die genommen werden soll, wenn der Gast n icht per Referal-Link Ihren {?mt_word?} aufgerufen hat.', 7);
196                                 addConfigAddSql('def_refid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
197
198                                 // Update notes (these will be set as task text!)
199                                 setExtensionUpdateNotes("Standard Referal-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
200                                 break;
201
202                         case '0.1.3': // SQL queries for v0.1.3
203                                 addConfigAddSql('refid_target', "ENUM('register','index') NOT NULL DEFAULT 'register'");
204
205                                 // Update notes (these will be set as task text!)
206                                 setExtensionUpdateNotes("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
207                                 break;
208
209                         case '0.1.4': // SQL queries for v0.1.4
210                                 // Update notes (these will be set as task text!)
211                                 setExtensionUpdateNotes("Ung&uuml;ltiges Update (nach ext-theme.php verschoben!).");
212                                 break;
213
214                         case '0.1.5': // SQL queries for v0.1.5
215                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_has_admin`");
216
217                                 // Update notes (these will be set as task text!)
218                                 setExtensionUpdateNotes("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{?_MYSQL_PREFIX?}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
219                                 break;
220
221                         case '0.1.6': // SQL queries for v0.1.6
222                                 addConfigAddSql('enable_title_deco', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
223                                 addConfigAddSql('title_left', "VARCHAR(10) NOT NULL DEFAULT '[--'");
224                                 addConfigAddSql('title_middle', "VARCHAR(10) NOT NULL DEFAULT '-'");
225                                 addConfigAddSql('title_right', "VARCHAR(10) NOT NULL DEFAULT '--]'");
226                                 addConfigAddSql('enable_mod_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
227                                 addConfigAddSql('enable_what_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
228                                 addAdminMenuSql('setup','config_title','Seitentitel &auml;ndern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8);
229
230                                 // Update notes (these will be set as task text!)
231                                 setExtensionUpdateNotes("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.");
232                                 break;
233
234                         case '0.1.7': // SQL queries for v0.1.7
235                                 // Update notes (these will be set as task text!)
236                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
237                                 break;
238
239                         case '0.1.8': // SQL queries for v0.1.8
240                                 // Update notes (these will be set as task text!)
241                                 setExtensionUpdateNotes("mad_count und last_mad werden nun aus der Datenbank geladen");
242                                 break;
243
244                         case '0.1.9': // SQL queries for v0.1.9
245                                 // Update notes (these will be set as task text!)
246                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
247                                 break;
248
249                         case '0.2.0': // SQL queries for v0.2.0
250                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_jackpot` CHANGE `points` `points` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
251
252                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payments` CHANGE `payment` `payment` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
253                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payments` CHANGE `price` `price` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
254
255                                 // Update notes (these will be set as task text!)
256                                 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
257                                 break;
258
259                         case '0.2.1': // SQL queries for v0.2.1
260                                 addConfigAddSql('css_php', "ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
261
262                                 // Update notes (these will be set as task text!)
263                                 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
264                                 break;
265
266                         case '0.2.2': // SQL queries for v0.2.2
267                                 // Update notes (these will be set as task text!)
268                                 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
269                                 break;
270
271                         case '0.2.3': // SQL queries for v0.2.3
272                                 addConfigAddSql('guest_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
273                                 addConfigAddSql('member_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
274                                 addConfigAddSql('youre_here', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
275
276                                 // Update notes (these will be set as task text!)
277                                 setExtensionUpdateNotes("Gast- und Mitgliedsmen&uuml;s lassen sich getrennt voneinander abschalten.");
278                                 break;
279
280                         case '0.2.4': // SQL queries for v0.2.4
281                                 // PNG image is the default
282                                 $auto_type = 'png';
283
284                                 // Is the JPEG file found and required PHP function there?
285                                 if ((isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.jpg')) && function_exists('imagecreatefromjpeg')) {
286                                         // Switch to JPEG format
287                                         $auto_type = 'jpg';
288                                 } // END - if
289                                 addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
290
291                                 // Update notes (these will be set as task text!)
292                                 setExtensionUpdateNotes("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.");
293                                 break;
294
295                         case '0.2.5': // SQL queries for v0.2.5
296                                 // Update notes (these will be set as task text!)
297                                 setExtensionUpdateNotes("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
298                                 break;
299
300                         case '0.2.6': // SQL queries for v0.2.6
301                                 addAdminMenuSql('user','sub_points','{OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen','Allen oder einem Mitglied {OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen.', 8);
302
303                                 // Update notes (these will be set as task text!)
304                                 setExtensionUpdateNotes("Abzug von {?POINTS?} nun m&ouml;glich.");
305                                 break;
306
307                         case '0.2.7': // SQL queries for v0.2.7
308                                 addConfigAddSql('stats_limit', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
309                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
310
311                                 // Update notes (these will be set as task text!)
312                                 setExtensionUpdateNotes("<ol>
313 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
314 <li>Mitgliederstatistik mit Seitennavigation.</li>
315 </ol>");
316                                 break;
317
318                         case '0.2.8': // SQL queries for v0.2.8
319                                 // Update notes (these will be set as task text!)
320                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
321                                 break;
322
323                         case '0.2.9': // SQL queries for v0.2.9
324                                 addConfigAddSql('mt_word', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
325                                 addConfigAddSql('mt_word2', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
326                                 addConfigAddSql('mt_word3', "VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
327
328                                 // Update notes (these will be set as task text!)
329                                 setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
330                                 break;
331
332                         case '0.3.0': // SQL queries for v0.3.0
333                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG}/Referal-Ebenen' WHERE `what`='config_points' LIMIT 1");
334                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailverg&uuml;tungen...' WHERE `what`='payments' LIMIT 1");
335
336                                 // Update notes (these will be set as task text!)
337                                 setExtensionUpdateNotes("Zwei Men&uuml;punkte umbenannt.");
338                                 break;
339
340                         case '0.3.1': // SQL queries for v0.3.1
341                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD UNIQUE KEY `ext_name` (`ext_name`)");
342                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` ADD UNIQUE KEY `login` (`login`)");
343                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refbanner` ADD INDEX `visible` (`visible`)");
344                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` ADD UNIQUE KEY `level` (`level`)");
345                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD INDEX `level` (`level`)");
346                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD INDEX `data_type` (`data_type`)");
347                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD UNIQUE KEY `module` (`module`)");
348                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `action` (`action`)");
349                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `what` (`what`)");
350                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_type` (`task_type`)");
351                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `status` (`status`)");
352                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_created` (`task_created`)");
353                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD FULLTEXT `subject` (`subject`)");
354                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `subject` (`subject`)");
355                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD INDEX `ext_active` (`ext_active`)");
356                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `action` (`action`)");
357                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `what` (`what`)");
358                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `sort` (`sort`)");
359                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `visible` (`visible`)");
360                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `locked` (`locked`)");
361                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `what` (`what`)");
362                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `sort` (`sort`)");
363                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `visible` (`visible`)");
364                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `locked` (`locked`)");
365                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `visible` (`visible`)");
366                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `sort` (`sort`)");
367
368                                 // Update notes (these will be set as task text!)
369                                 setExtensionUpdateNotes("Eindeutige Schl&uuml;ssel (UNIQUE KEY) und normale Schl&uuml;ssel (INDEX) gesetzt.");
370                                 break;
371
372                         case '0.3.2': // SQL queries for v0.3.2
373                                 // Connection table between the menu system and the "logical area system"
374                                 addDropTableSql('admin_menu_las');
375                                 addCreateTableSql('admin_menu_las', "
376 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
377 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
378 `la_action` VARCHAR(255) NOT NULL DEFAULT '',
379 `la_what` VARCHAR(255) NOT NULL DEFAULT '',
380 PRIMARY KEY (`id`),
381 INDEX (`la_id`),
382 INDEX (`la_action`),
383 INDEX (`la_what`)",
384                                         'Menu system -> LAS');
385
386                                 // All "logical areas" together
387                                 addDropTableSql('admin_menu_las_data');
388                                 addCreateTableSql('admin_menu_las_data', "
389 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
390 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
391 `la_title` VARCHAR(255) NOT NULL DEFAULT '',
392 `la_posx` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
393 `la_posy` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
394 PRIMARY KEY (`id`),
395 UNIQUE KEY (`la_id`),
396 INDEX (`la_posx`),
397 INDEX (`la_posy`)",
398                                         'LAS position and title data');
399
400                                 // Which menu do you like?
401                                 addConfigAddSql('admin_menu', "ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
402
403                                 // Insert menus
404                                 addAdminMenuSql('setup', 'config_admin', 'Adminmen&uuml;', 'Diverse Einstellungen am Adminmen&uuml; vornehmen.', 9);
405
406                                 // Update notes (these will be set as task text!)
407                                 setExtensionUpdateNotes("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.");
408                                 break;
409
410                         case '0.3.3': // SQL queries for v0.3.3
411                                 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
412                                 addConfigAddSql('admin_menu_sorter', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
413
414                                 // The statistics table
415                                 addDropTableSql('admin_las_stats');
416                                 addCreateTableSql('admin_las_stats', "
417 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
418 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
419 `type` ENUM('la','action','what') NOT NULL DEFAULT 'what',
420 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
421 PRIMARY KEY (`id`),
422 INDEX (`admin_id`)",
423                                         'LAS click data');
424
425                                 // Update notes (these will be set as task text!)
426                                 setExtensionUpdateNotes("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.");
427                                 break;
428
429                         case '0.3.4': // SQL queries for v0.3.4
430                                 // Update notes (these will be set as task text!)
431                                 setExtensionUpdateNotes("Veraltetes Update (what=list_user&amp;mode=noref)");
432                                 break;
433
434                         case '0.3.5': // SQL queries for v0.3.5
435                                 // List accounts with no referal
436                                 addMemberMenuSql('stats', NULL, 'Statistiken', 4);
437                                 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 2);
438                                 addMemberMenuSql('extras', NULL, 'Extras', 5);
439                                 addMemberMenuSql('rals', NULL, 'Rallyes', 6);
440                                 addMemberMenuSql('account', NULL, 'Ihr Account', 7);
441                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='stats', `sort`=1, `title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
442                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=3 WHERE `what`='reflinks' LIMIT 1");
443
444                                 // Update notes (these will be set as task text!)
445                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
446                                 break;
447
448                         case '0.3.6': // SQL queries for v0.3.6
449                                 addConfigAddSql('salt_length', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
450                                 addConfigAddSql('pass_scramble', "VARCHAR(255) NOT NULL DEFAULT ''");
451                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` CHANGE `password` `password` VARCHAR(255) NOT NULL DEFAULT ''");
452                                 addConfigAddSql('rand_no', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
453                                 addConfigAddSql('file_hash', "VARCHAR(255) NOT NULL DEFAULT ''");
454                                 addConfigAddSql('master_salt', "VARCHAR(255) NOT NULL DEFAULT ''");
455                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_config` SET `rand_no`=(ROUND(RAND() * 99999) + 100000) WHERE `config`=0 LIMIT 1");
456                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD `has_menu` ENUM('Y','N') NOT NULL DEFAULT 'N'");
457                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `has_menu`='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
458
459                                 // Update notes (these will be set as task text!)
460                                 setExtensionUpdateNotes("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
461                                 break;
462
463                         case '0.3.7': // SQL queries for v0.3.7
464                                 setExtensionUpdateNotes("Problem w&auml;hrend des Installationsvorganges behoben.");
465                                 break;
466
467                         case '0.3.8': // SQL queries for v0.3.8
468                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `descr` `descr` MEDIUMTEXT NULL");
469                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` CHANGE `text` `text` LONGTEXT NOT NULL");
470
471                                 // Update notes (these will be set as task text!)
472                                 setExtensionUpdateNotes("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
473                                 break;
474
475                         case '0.3.9': // SQL queries for v0.3.9
476                                 // Update notes (these will be set as task text!)
477                                 setExtensionUpdateNotes("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
478                                 break;
479
480                         case '0.4.0': // SQL queries for v0.4.0
481                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Email-Management' WHERE `action` = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
482
483                                 // Update notes (these will be set as task text!)
484                                 setExtensionUpdateNotes("Email-Verwaltung nach Email-Management umbenannt.");
485                                 break;
486
487                         case '0.4.1': // SQL queries for v0.4.1
488                                 addConfigAddSql('show_timings', "ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
489
490                                 // Update notes (these will be set as task text!)
491                                 setExtensionUpdateNotes("Tabellen-Schl&uuml;ssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
492                                 break;
493
494                         case '0.4.2': // SQL queries for v0.4.2
495                                 // Update notes (these will be set as task text!)
496                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
497                                 break;
498
499                         case '0.4.3': // SQL queries for v0.4.3
500                                 addConfigAddSql('proxy_host', "VARCHAR(255) NOT NULL DEFAULT ''");
501                                 addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
502                                 addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
503                                 addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
504                                 addAdminMenuSql('setup','config_proxy','Proxy-Einstellungen','Sollte Ihr Webserver sich hinter einem Proxy befinden, so k&ouml;nnen Sie Ihren {?mt_word?} so konfigurieren, dass es Updates durch diesen hindurch sucht!', 15);
505
506                                 // Update notes (these will be set as task text!)
507                                 setExtensionUpdateNotes("Proxy-Einstellungen hinzugef&uuml;gt.");
508                                 break;
509
510                         case '0.4.4': // SQL queries for v0.4.4
511                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
512                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
513                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
514                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`=NULL WHERE `what`=''");
515                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `what`=NULL WHERE `what`=''");
516                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `what`=NULL WHERE `what`=''");
517
518                                 // Make this depending on ext-menu
519                                 addExtensionDependency('menu');
520
521                                 // Update notes (these will be set as task text!)
522                                 setExtensionUpdateNotes("Schl&uuml;ssel in Admin-, Gast- und Mitgliedsmen&uuml; verbessert.");
523                                 break;
524
525                         case '0.4.5': // SQL queries for v0.4.5
526                                 addConfigAddSql('last_month', 'CHAR(2) NOT NULL DEFAULT 00');
527                                 addConfigAddSql('last_week', 'CHAR(2) NOT NULL DEFAULT 00');
528
529                                 // Update notes (these will be set as task text!)
530                                 setExtensionUpdateNotes("T&auml;glichen/w&ouml;chentlichen/monatlichen Reset verbessert.");
531                                 break;
532
533                         case '0.4.6': // SQL queries for v0.4.6
534                                 // Update notes (these will be set as task text!)
535                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
536                                 break;
537
538                         case '0.4.7': // SQL queries for v0.4.7
539                                 // Update notes (these will be set as task text!)
540                                 setExtensionUpdateNotes("Veraltetes Update.");
541                                 break;
542
543                         case '0.4.8': // SQL queries for v0.4.8
544                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX (`subject`)');
545
546                                 // Update notes (these will be set as task text!)
547                                 setExtensionUpdateNotes("Index f&uuml;r Betreff eingef&uuml;gt.");
548                                 break;
549
550                         case '0.4.9': // SQL queries for v0.4.9
551                                 // Update notes (these will be set as task text!)
552                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
553                                 break;
554
555                         case '0.5.0': // SQL queries for v0.5.0
556                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `level`');
557                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `userid`');
558                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD UNIQUE `userid_level` (`userid`, `level`)');
559
560                                 // Update notes (these will be set as task text!)
561                                 setExtensionUpdateNotes("Referal-System unterst&uuml;tzt nun detailierte Referal-&Uuml;bersicht und vieles mehr.");
562                                 break;
563
564                         case '0.5.1': // SQL queries for v0.5.1
565                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` DROP `descr`');
566
567                                 // Update notes (these will be set as task text!)
568                                 setExtensionUpdateNotes("Beschreibungsspalte von Mitgliedsmen&uuml; entfernt, welche ohnehin nicht genutzt wird.");
569                                 break;
570
571                         case '0.5.2': // SQL queries for v0.5.2
572                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` CHANGE `percents` `percents` FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
573
574                                 // Update notes (these will be set as task text!)
575                                 setExtensionUpdateNotes("Prozents&auml;tze k&ouml;nnen nun f&uuml;nf Stellen hinter dem Komma sein.");
576                                 break;
577
578                         case '0.5.3': // SQL queries for v0.5.3
579                                 addConfigAddSql('session_save_path', "VARCHAR(255) NOT NULL DEFAULT ''");
580                                 addAdminMenuSql('setup','config_session','Session-Einstellungen','&Auml;ndern Sie hier den Speicherpfad f&uuml;r Sessiondateien (Sitzungsdateien) ab, falls die Standard-Einstellung bei Ihrem Hoster zu Problem f&uuml;hren sollte.', 16);
581
582                                 // Update notes (these will be set as task text!)
583                                 setExtensionUpdateNotes("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com n&ouml;tig.");
584                                 break;
585
586                         case '0.5.4': // SQL queries for v0.5.4
587                                 addMemberMenuSql('main', 'reflist', 'Ref-&Uuml;bersicht', 5);
588
589                                 // Update notes (these will be set as task text!)
590                                 setExtensionUpdateNotes("Ref-&Uuml;bersicht eingebaut. Diese h&auml;ngt von der Erweiterung <strong>refback</strong> ab.");
591                                 break;
592
593                         case '0.5.5': // SQL queries for v0.5.5
594                                 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
595
596                                 // Update notes (these will be set as task text!)
597                                 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbest&auml;tigten Mails kann nun optional abgeschaltet werden.");
598                                 break;
599
600                         case '0.5.6': // SQL queries for v0.5.6
601                                 // Update notes (these will be set as task text!)
602                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
603                                 break;
604
605                         case '0.5.7': // SQL queries for v0.5.7
606                                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
607
608                                 // Update notes (these will be set as task text!)
609                                 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&amp;mode=norefs verschoben.");
610                                 break;
611
612                         case '0.5.8': // SQL queries for v0.5.8
613                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_lang_file`');
614
615                                 // Update notes (these will be set as task text!)
616                                 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
617                                 break;
618
619                         case '0.5.9': // SQL queries for v0.5.9
620                                 // Table 'filters' is vital because many functionality depends on it, so don't remove it
621                                 addCreateTableSql('filters', "
622 `filter_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
623 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
624 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
625 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
626 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
627 PRIMARY KEY (`filter_id`),
628 UNIQUE `name_function` (`filter_name` , `filter_function`)",
629                                         'Filter system');
630
631                                 // Admin menu
632                                 addAdminMenuSql('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und l&auml;sst diese de- bzw. wieder aktivieren.', 17);
633
634                                 // Update notes (these will be set as task text!)
635                                 setExtensionUpdateNotes("Tabellen f&uuml;r Filter-System hinzugef&uuml;gt.");
636                                 break;
637
638                         case '0.6.0': // SQL queries for v0.6.0
639                                 addConfigAddSql('update_filter_usage', "ENUM('N','Y') NOT NULL DEFAULT 'N'");
640
641                                 // Update notes (these will be set as task text!)
642                                 setExtensionUpdateNotes("Benutzungsstatistik eingebaut. Das Z&auml;hlen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
643                                 break;
644
645                         case '0.6.1': // SQL queries for v0.6.1
646                                 // Update notes (these will be set as task text!)
647                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
648                                 break;
649
650                         case '0.6.2': // SQL queries for v0.6.2
651                                 // Depends on refback extension
652                                 addExtensionDependency('user');
653
654                                 // Update notes (these will be set as task text!)
655                                 setExtensionUpdateNotes("Abh&auml;ngigkeit von <u>ext-user</u> gesetzt.");
656                                 break;
657
658                         case '0.6.3': // SQL queries for v0.6.3
659                                 // Update notes (these will be set as task text!)
660                                 setExtensionUpdateNotes("Filter-Tabelle bereinigt um doppelte Eintr&auml;ge und Unique-Key auf <em>filter_name</em> und <em>filter_function</em> zusammen gesetzt.");
661
662                                 // Add special fix include to fix filters
663                                 addIncludeToPool('extension', 'inc/fix_filters.php');
664                                 break;
665
666                         case '0.6.4': // SQL queries for v0.6.4
667                                 // Update admin menu
668                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
669                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_admin_menu` SET `descr` = REPLACE(`descr`, '!POINTS!', '?POINTS?') WHERE `descr` LIKE '%!POINTS!%'");
670                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_guest_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
671                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_member_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
672
673                                 // Update notes (these will be set as task text!)
674                                 setExtensionUpdateNotes("Datenbank umgestellt auf Konfigurationselemente.");
675                                 break;
676
677                         case '0.6.5': // SQL queries for v0.6.5
678                                 addConfigChangeSql('css_php', 'css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
679
680                                 // Update notes (these will be set as task text!)
681                                 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
682                                 break;
683
684                         case '0.6.6': // SQL queries for v0.6.6
685                                 addAdminMenuSql('setup','config_secure','Sicherheitseinstellungen','Stellen Sie ein, wie lange das Passwort eines Mitgliedes mindestens sein muss uvm.',9);
686                                 addAdminMenuSql('setup','config_points','{OPEN_CONFIG}POINTS{CLOSE_CONFIG}','Stellen Sie hier die Willkommensgutschrift, Referal-Gutschrift (einmalige) usw. ein.',10);
687                                 addAdminMenuSql('email','email_archiv','E-Mail Archiv','Sehen Sie sich hier bereits gesendete Mails an.',6);
688
689                                 // Update notes (these will be set as task text!)
690                                 setExtensionUpdateNotes("Die Sicherheitseinstellungen, {?POINTS?}-Einstellungen und Email-Archiv funktionieren nur, wenn diese Erweiterung installiert ist.");
691                                 break;
692
693                         case '0.6.7': // SQL queries for v0.6.7
694                                 addConfigChangeSql('index_delay', 'index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
695
696                                 // Update notes (these will be set as task text!)
697                                 setExtensionUpdateNotes("Die Weiterleitungseinstellung muss auch Werte kleiner Null akzeptieren.");
698                                 break;
699
700                         case '0.6.8': // SQL queries for v0.6.8
701                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
702                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
703                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
704                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
705                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
706                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
707
708                                 // Update notes (these will be set as task text!)
709                                 setExtensionUpdateNotes("Spalten verk&uuml;rzt, damit die Schl&uuml;ssel passen.");
710                                 break;
711
712                         case '0.6.9': // SQL queries for 0.6.9
713                                 // Register filter
714                                 registerFilter('member_login_check', 'RESET_USER_LOGIN_FAILURE', false, true, isExtensionDryRun());
715
716                                 // Update notes (these will be set as task text!)
717                                 setExtensionUpdateNotes("Filter zum Zur&uuml;cksetzens des fehlgeschlagenen Mitgliederlogins hinzugef&uuml;gt (internes TODO).");
718                                 break;
719
720                         case '0.7.0': // SQL queries for 0.7.0
721                                 // Table definition
722                                 addDropTableSql('dns_cache');
723                                 addCreateTableSql('dns_cache', "
724 `hostname` VARCHAR(255) NOT NULL,
725 `ip` VARCHAR(15) NOT NULL,
726 `added` DATETIME NOT NULL,
727 PRIMARY KEY (`hostname`),
728 INDEX (`ip`)",
729                                         'Cache for DNS requests');
730
731                                 // Configuration
732                                 addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
733
734                                 // Register filter
735                                 registerFilter('reset', 'CLEANUP_DNS_CACHE', false, true, isExtensionDryRun());
736
737                                 // Update notes (these will be set as task text!)
738                                 setExtensionUpdateNotes("IP-Resolver-Klasse hinzugef&uuml;gt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
739                                 break;
740
741                         case '0.7.1': // SQL queries for v0.7.1
742                                 // This update just depends on ext-timezone to make integration of an essential extension much easier
743                                 addExtensionDependency('timezone');
744
745                                 // Update notes (these will be set as task text!)
746                                 setExtensionUpdateNotes("Zeitzone ist nun mit ext-timezone konfigurierbar.");
747                                 break;
748
749                         case '0.7.2': // SQL queries for v0.7.2
750                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `task_type`='MEMBER_SUPPORT' WHERE `task_type`='SUPPORT_MEMBER'");
751
752                                 // Update notes (these will be set as task text!)
753                                 setExtensionUpdateNotes("Daten an Namenskonvention angepasst.");
754                                 break;
755
756                         case '0.7.3': // SQL queries for v0.7.3
757                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_filters` CHANGE `filter_name` `filter_name` VARCHAR(50) NOT NULL DEFAULT ''");
758                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_filters` CHANGE `filter_function` `filter_function` VARCHAR(100) NOT NULL DEFAULT ''");
759
760                                 // Update notes (these will be set as task text!)
761                                 setExtensionUpdateNotes("Spalten in Filtertabelle gek&uuml;rzt (SQL-Fehler wegen zu grossem Schl&uuml;ssel).");
762                                 break;
763
764                         case '0.7.4': // SQL queries for v0.7.4
765                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD `mails_sent` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
766
767                                 // Update notes (these will be set as task text!)
768                                 setExtensionUpdateNotes("Spalten in Filtertabelle gek&uuml;rzt (SQL-Fehler wegen zu grossem Schl&uuml;ssel).");
769                                 break;
770
771                         case '0.7.5': // SQL queries for v0.7.5
772                                 addConfigAddSql('last_hour', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
773
774                                 // Update notes (these will be set as task text!)
775                                 setExtensionUpdateNotes("Aktuelle Stunde hinzugef&uuml;gt (ist nicht konfigurierbar).");
776                                 break;
777
778                         case '0.7.6': // SQL queries for v0.7.6
779                                 addConfigChangeSql('last_month', 'last_month', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
780                                 addConfigChangeSql('last_week', 'last_week', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
781
782                                 // Update notes (these will be set as task text!)
783                                 setExtensionUpdateNotes("Spaltentyp fuer kleine Zahlen sollten auch z.B. TINYINT sein.");
784                                 break;
785
786                         case '0.7.7': // SQL queries for v0.7.7
787                                 addMemberMenuSql('earn', NULL, 'Verdienen', 2);
788                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='earn', `sort`=1 WHERE `what`='unconfirmed' LIMIT 1");
789
790                                 // Update notes (these will be set as task text!)
791                                 setExtensionUpdateNotes("Men&uuml;punkt <strong>Verdienen</strong> hinzugef&uuml;gt und <strong>Unbest&auml;tigte Mails</strong> als ersten Punkt dort hin verschoben.");
792                                 break;
793
794                         case '0.7.8': // SQL queries for v0.7.8
795                                 // Update notes (these will be set as task text!)
796                                 setExtensionUpdateNotes("Konfigurationseintr&auml;ge mit Spaltentyp <strong>ENUM</strong> werden nun immer komplett gross geschrieben.");
797                                 break;
798
799                         case '0.7.9': // SQL queries for v0.7.9
800                                 addExtensionSQL("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_email_max_rec' WHERE `what`='config_email' LIMIT 1");
801
802                                 // Update notes (these will be set as task text!)
803                                 setExtensionUpdateNotes("Adminscript <strong>what-config_email.php</strong> nach <strong>what-list_email_max_rec.php</strong> umbenannt.");
804                                 break;
805
806                         case '0.8.0': // SQL queries for v0.8.0
807                                 // Points account data (this table should not be dropped or else you may have to re-install a lot extensions)
808                                 addCreateTableSql('points_data', "
809 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
810 `subject` VARCHAR(255) NOT NULL DEFAULT '',
811 `column_name` VARCHAR(255) NOT NULL DEFAULT 'points',
812 `locked_mode` ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED',
813 `payment_method` ENUM('DIRECT','REFERAL') NOT NULL DEFAULT 'REFERAL',
814 `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N',
815 PRIMARY KEY(`id`),
816 INDEX (`subject`)",
817                                         'Points account data');
818
819                                 // Admin menu
820                                 addAdminMenuSql('setup','list_point_accounts','Guthabenkonten...','Veralten Sie hier bequem Einstellungen zu den Guthabenkonten.',5);
821
822                                 // Update notes (these will be set as task text!)
823                                 setExtensionUpdateNotes("Tabelle <em>points_data</em> erzeugt, diese soll das {?POINTS?}-Guthaben komplett lenken.");
824                                 break;
825
826                         case '0.8.1': // SQL queries for v0.8.1
827                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` CHANGE `level` `level` TINYINT(3) UNSIGNED NULL DEFAULT NULL');
828                                 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_refdepths` SET `level`=NULL WHERE `level`=0 LIMIT 1');
829
830                                 // Update notes (these will be set as task text!)
831                                 setExtensionUpdateNotes("Level 0 ist nun auch NULL.");
832                                 break;
833
834                         case '0.8.2': // SQL queries for v0.8.2
835                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` DROP INDEX `ext_name`");
836                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` CHANGE `ext_name` `subject` VARCHAR(255) NOT NULL DEFAULT ''");
837                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` CHANGE `payment_method` `payment_method` ENUM('DIRECT','REFERAL') NOT NULL DEFAULT 'REFERAL'");
838                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD INDEX `subject` (`subject`)");
839                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N'");
840                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`) VALUES ('pool_payback','points','LOCKED','DIRECT')");
841                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`) VALUES ('mail_deleted','points','LOCKED','DIRECT')");
842                                 addConfigDropSql('reg_points_mode');
843
844                                 // Update notes (these will be set as task text!)
845                                 setExtensionUpdateNotes("Es sollte der Gutschriftenbetreff und nicht der Erweiterungsname gepeichert werden, zudem brauchen wir einen Konfigurationseintrag nicht mehr.");
846                                 break;
847                 } // END - switch
848                 break;
849
850         case 'modify': // When the extension got modified
851                 break;
852
853         case 'test': // For testing purposes
854                 break;
855
856         case 'init': // Do stuff when extension is initialized
857                 // Init key
858                 setConfigEntry('secret_key', '');
859
860                 // Read key from secret file
861                 if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && ((getFileHash() == '') || (getMasterSalt() == '') || (getPassScramble() == ''))) {
862                         // Maybe need setup of secret key!
863                         loadIncludeOnce('inc/gen_sql_patches.php');
864                 } // END - if
865
866                 // Test again
867                 if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && (getFileHash() != '') && (getMasterSalt() != '') && (getPassScramble() != '')) {
868                         // File hash fas generated so we can also file the secret file... hopefully.
869                         $hashFile = sprintf("%s%s.%s.cache", getPath(), getCachePath(), getFileHash());
870                         if (isFileReadable($hashFile)) {
871                                 // Read file
872                                 setConfigEntry('secret_key', readFromFile($hashFile));
873                         } else {
874                                 // Remove it from database
875                                 updateConfiguration('file_hash', '');
876
877                                 // Cannot read secret file!
878                                 debug_report_bug(__FILE__, __LINE__, 'Cannot read secret file! Please try to reload.');
879                         }
880                 } // END - if
881
882                 // Transfer words/numbers to constants if config entry is found
883                 if (isExtensionInstalledAndNewer('sql_patches', '0.0.3')) {
884                         setConfigEntry('POINTS', getPointsWord());
885                 } // END - if
886                 break;
887
888         default: // Unknown extension mode
889                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
890                 break;
891 } // END - switch
892
893 // [EOF]
894 ?>