Added purging of subid and server_name logs
[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 - 2012 by Mailer Developer Team                   *
20  * For more information visit: http://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.9.3');
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', '0.8.3', '0.8.4', '0.8.5', '0.8.6', '0.8.7', '0.8.8', '0.8.9', '0.9.0', '0.9.1', '0.9.2', '0.9.3'));
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 ext-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                 addDropTableSql('server_name_log');
65
66                 // Delete admin menu entries
67                 addExtensionSql("DELETE LOW_PRIORITY FROM
68         `{?_MYSQL_PREFIX?}_admin_menu`
69 WHERE
70         `what`
71 IN (
72         'config_extensions',
73         'config_home',
74         'list_unconfirmed',
75         'config_refid',
76         'config_title',
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                 // Remove points data
100                 unregisterExtensionPointsData('pool_payback');
101                 unregisterExtensionPointsData('mail_deleted');
102                 unregisterExtensionPointsData('admin_add_single');
103                 unregisterExtensionPointsData('admin_add_single_ref');
104                 unregisterExtensionPointsData('admin_add_all');
105                 unregisterExtensionPointsData('admin_add_all_ref');
106
107                 // Unregister filter
108                 unregisterFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', TRUE, isExtensionDryRun());
109                 unregisterFilter(__FILE__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', TRUE, isExtensionDryRun());
110                 unregisterFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', TRUE, isExtensionDryRun());
111                 unregisterFilter(__FILE__, __LINE__, 'extra_autopurge', 'SERVER_NAME_EXTRA_AUTOPURGE', TRUE, isExtensionDryRun());
112                 break;
113
114         case 'activate': // Do stuff when admin activates this extension
115                 // SQL commands to run
116                 addExtensionSql('');
117                 break;
118
119         case 'deactivate': // Do stuff when admin deactivates this extension
120                 // SQL commands to run
121                 addExtensionSql('');
122                 break;
123
124         case 'update': // Update an extension
125                 switch (getCurrentExtensionVersion()) {
126                         case '0.0.1': // SQL queries for v0.0.1
127                                 addAdminMenuSql('setup', 'config_extensions', 'Erweitungsmanagement', 'Alle Einstellungen am Erweiterungsmanagement.', 10);
128
129                                 // Update notes (these will be set as task text!)
130                                 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.");
131                                 break;
132
133                         case '0.0.2': // SQL queries for v0.0.2
134                                 addConfigChangeSql('auto_purge', 'auto_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay()*14));
135
136                                 // Update notes (these will be set as task text!)
137                                 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.)");
138                                 break;
139
140                         case '0.0.3': // SQL queries for v0.0.3
141                                 addConfigAddSql('points_word', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_TEMPLATE}DEFAULT_POINTS{CLOSE_TEMPLATE}'");
142
143                                 // Update notes (these will be set as task text!)
144                                 setExtensionUpdateNotes("Das Wort &quot;Punkte&quot; kann nun per Datenbank ge&auml;ndert werden. Damit k&ouml;nnen anstelle des Wortes Punkte auch Klammlose, Wernis, Primera und auch &euro; geschrieben werden.");
145                                 break;
146
147                         case '0.0.4': // SQL queries for v0.0.4
148                                 addConfigAddSql('mails_page', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
149
150                                 // Update notes (these will be set as task text!)
151                                 setExtensionUpdateNotes("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugef&uuml;gt.");
152                                 break;
153
154                         case '0.0.5': // SQL queries for v0.0.5
155                                 addConfigAddSql('index_home', "VARCHAR(255) NOT NULL DEFAULT 'welcome'");
156                                 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);
157
158                                 // Update notes (these will be set as task text!)
159                                 setExtensionUpdateNotes("Die what-welcome.php ist derzeit die &quot;Home&quot;-Seite (Eingangsseite). Dies kann nun per Datenbank ge&auml;ndert werden.");
160                                 break;
161
162                         case '0.0.6': // SQL queries for v0.0.6
163                                 addExtensionAddTableColumnSql('extensions', 'ext_has_css', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
164
165                                 // Update notes (these will be set as task text!)
166                                 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.");
167                                 break;
168
169                         case '0.0.7': // SQL queries for v0.0.7
170                                 addConfigAddSql('verbose_sql', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
171
172                                 // Update notes (these will be set as task text!)
173                                 setExtensionUpdateNotes("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
174                                 break;
175
176                         case '0.0.8': // SQL queries for v0.0.8
177                                 addConfigAddSql('menu_blur_spacer', "VARCHAR(255) NOT NULL DEFAULT '&nbsp;<strong><big>&middot;</big></strong>&nbsp;'");
178
179                                 // Update notes (these will be set as task text!)
180                                 setExtensionUpdateNotes("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
181                                 break;
182
183                         case '0.0.9': // SQL queries for v0.0.9
184                                 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);
185
186                                 // Update notes (these will be set as task text!)
187                                 setExtensionUpdateNotes("Unbest&auml;tigte Maillinks k&ouml;nnen unter Email-Management -&gt; Unbest. Mails auflisten aufgelistet werden.");
188                                 break;
189
190                         case '0.1.0': // SQL queries for v0.1.0
191                                 // Update notes (these will be set as task text!)
192                                 setExtensionUpdateNotes("Soll der einmalige Ref-Bonus &uuml;ber das Referral-System (also alle oberen Refs bekommen auch etwas davon ab) oder direkt dem Werber aufgebucht werden?");
193                                 break;
194
195                         case '0.1.1': // SQL queries for v0.1.1
196                                 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");
197                                 addConfigAddSql('index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
198                                 addConfigAddSql('index_cookie', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 365));
199
200                                 // Update notes (these will be set as task text!)
201                                 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.");
202                                 break;
203
204                         case '0.1.2': // SQL queries for v0.1.2
205                                 addAdminMenuSql('setup','config_refid','Standard-Ref-Id','Stellen Sie hier die Mitglieds-Id ein, die genommen werden soll, wenn der Gast n icht per Referral-Link Ihren {?mt_word?} aufgerufen hat.', 7);
206                                 addConfigAddSql('def_refid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
207
208                                 // Update notes (these will be set as task text!)
209                                 setExtensionUpdateNotes("Standard Referral-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
210                                 break;
211
212                         case '0.1.3': // SQL queries for v0.1.3
213                                 addConfigAddSql('refid_target', "ENUM('register','index') NOT NULL DEFAULT 'register'");
214
215                                 // Update notes (these will be set as task text!)
216                                 setExtensionUpdateNotes("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
217                                 break;
218
219                         case '0.1.4': // SQL queries for v0.1.4
220                                 // Update notes (these will be set as task text!)
221                                 setExtensionUpdateNotes("Ung&uuml;ltiges Update (nach ext-theme.php verschoben!).");
222                                 break;
223
224                         case '0.1.5': // SQL queries for v0.1.5
225                                 addExtensionDropTableColumnSql('extensions', 'ext_has_admin');
226
227                                 // Update notes (these will be set as task text!)
228                                 setExtensionUpdateNotes("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{?_MYSQL_PREFIX?}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
229                                 break;
230
231                         case '0.1.6': // SQL queries for v0.1.6
232                                 addConfigAddSql('enable_title_deco', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
233                                 addConfigAddSql('title_left', "VARCHAR(10) NOT NULL DEFAULT '[--'");
234                                 addConfigAddSql('title_middle', "VARCHAR(10) NOT NULL DEFAULT '-'");
235                                 addConfigAddSql('title_right', "VARCHAR(10) NOT NULL DEFAULT '--]'");
236                                 addConfigAddSql('enable_mod_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
237                                 addConfigAddSql('enable_what_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
238                                 addAdminMenuSql('setup','config_title','Seitentitel &auml;ndern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8);
239
240                                 // Update notes (these will be set as task text!)
241                                 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.");
242                                 break;
243
244                         case '0.1.7': // SQL queries for v0.1.7
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.1.8': // SQL queries for v0.1.8
250                                 // Update notes (these will be set as task text!)
251                                 setExtensionUpdateNotes("mad_count und last_mad werden nun aus der Datenbank geladen");
252                                 break;
253
254                         case '0.1.9': // SQL queries for v0.1.9
255                                 // Update notes (these will be set as task text!)
256                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
257                                 break;
258
259                         case '0.2.0': // SQL queries for v0.2.0
260                                 addExtensionChangeTableColumnSql('jackpot', 'points', 'points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
261
262                                 addExtensionChangeTableColumnSql('payments', 'payment', 'payment', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
263                                 addExtensionChangeTableColumnSql('payments', 'price', 'price', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
264
265                                 // Update notes (these will be set as task text!)
266                                 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
267                                 break;
268
269                         case '0.2.1': // SQL queries for v0.2.1
270                                 addConfigAddSql('css_php', "ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
271
272                                 // Update notes (these will be set as task text!)
273                                 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
274                                 break;
275
276                         case '0.2.2': // SQL queries for v0.2.2
277                                 // Update notes (these will be set as task text!)
278                                 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
279                                 break;
280
281                         case '0.2.3': // SQL queries for v0.2.3
282                                 addConfigAddSql('guest_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
283                                 addConfigAddSql('member_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
284                                 addConfigAddSql('youre_here', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
285
286                                 // Update notes (these will be set as task text!)
287                                 setExtensionUpdateNotes("Gast- und Mitgliedsmen&uuml;s lassen sich getrennt voneinander abschalten.");
288                                 break;
289
290                         case '0.2.4': // SQL queries for v0.2.4
291                                 // PNG image is the default
292                                 $auto_type = 'png';
293
294                                 // Is the JPEG file found and required PHP function there?
295                                 if ((!isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.png')) || (!function_exists('imagecreatefrompng'))) {
296                                         // Switch to JPEG format because PNG is not available
297                                         $auto_type = 'jpg';
298                                 } // END - if
299                                 addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
300
301                                 // Update notes (these will be set as task text!)
302                                 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.");
303                                 break;
304
305                         case '0.2.5': // SQL queries for v0.2.5
306                                 // Update notes (these will be set as task text!)
307                                 setExtensionUpdateNotes("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
308                                 break;
309
310                         case '0.2.6': // SQL queries for v0.2.6
311                                 // Update notes (these will be set as task text!)
312                                 setExtensionUpdateNotes("Verschoben nach <strong>ext-user</strong>.");
313                                 break;
314
315                         case '0.2.7': // SQL queries for v0.2.7
316                                 addConfigAddSql('stats_limit', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
317                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
318
319                                 // Update notes (these will be set as task text!)
320                                 setExtensionUpdateNotes("<ol>
321 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
322 <li>Mitgliederstatistik mit Seitennavigation.</li>
323 </ol>");
324                                 break;
325
326                         case '0.2.8': // SQL queries for v0.2.8
327                                 // Update notes (these will be set as task text!)
328                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
329                                 break;
330
331                         case '0.2.9': // SQL queries for v0.2.9
332                                 addConfigAddSql('mt_word', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
333                                 addConfigAddSql('mt_word2', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
334                                 addConfigAddSql('mt_word3', "VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
335
336                                 // Update notes (these will be set as task text!)
337                                 setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
338                                 break;
339
340                         case '0.3.0': // SQL queries for v0.3.0
341                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG}/Referral-Ebenen' WHERE `what`='config_points' LIMIT 1");
342                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailverg&uuml;tungen...' WHERE `what`='payments' LIMIT 1");
343
344                                 // Update notes (these will be set as task text!)
345                                 setExtensionUpdateNotes("Zwei Men&uuml;punkte umbenannt.");
346                                 break;
347
348                         case '0.3.1': // SQL queries for v0.3.1
349                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD UNIQUE INDEX `ext_name` (`ext_name`)");
350                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` ADD UNIQUE INDEX `login` (`login`)");
351                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refbanner` ADD INDEX `visible` (`visible`)");
352                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` ADD UNIQUE INDEX `level` (`level`)");
353                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD INDEX `level` (`level`)");
354                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD INDEX `data_type` (`data_type`)");
355                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD UNIQUE INDEX `module` (`module`)");
356                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `action` (`action`)");
357                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `what` (`what`)");
358                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_type` (`task_type`)");
359                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `status` (`status`)");
360                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_created` (`task_created`)");
361                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD FULLTEXT `subject` (`subject`)");
362                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `subject` (`subject`)");
363                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD INDEX `ext_active` (`ext_active`)");
364                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `action` (`action`)");
365                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `what` (`what`)");
366                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `sort` (`sort`)");
367                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `visible` (`visible`)");
368                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `locked` (`locked`)");
369                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `what` (`what`)");
370                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `sort` (`sort`)");
371                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `visible` (`visible`)");
372                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `locked` (`locked`)");
373                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `visible` (`visible`)");
374                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `sort` (`sort`)");
375
376                                 // Update notes (these will be set as task text!)
377                                 setExtensionUpdateNotes("Eindeutige Schl&uuml;ssel (UNIQUE) und normale Schl&uuml;ssel (INDEX) gesetzt.");
378                                 break;
379
380                         case '0.3.2': // SQL queries for v0.3.2
381                                 // Connection table between the menu system and the "logical area system"
382                                 addDropTableSql('admin_menu_las');
383                                 addCreateTableSql('admin_menu_las', "
384 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
385 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
386 `la_action` VARCHAR(255) NOT NULL DEFAULT '',
387 `la_what` VARCHAR(255) NOT NULL DEFAULT '',
388 PRIMARY KEY (`id`),
389 INDEX (`la_id`),
390 INDEX (`la_action`),
391 INDEX (`la_what`)",
392                                         'Menu system -> LAS');
393
394                                 // All "logical areas" together
395                                 addDropTableSql('admin_menu_las_data');
396                                 addCreateTableSql('admin_menu_las_data', "
397 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
398 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
399 `la_title` VARCHAR(255) NOT NULL DEFAULT '',
400 `la_posx` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
401 `la_posy` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
402 PRIMARY KEY (`id`),
403 UNIQUE INDEX (`la_id`),
404 INDEX (`la_posx`),
405 INDEX (`la_posy`)",
406                                         'LAS position and title data');
407
408                                 // Which menu do you like?
409                                 addConfigAddSql('admin_menu', "ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
410
411                                 // Insert menus
412                                 addAdminMenuSql('setup', 'config_admin', 'Adminmen&uuml;', 'Diverse Einstellungen am Adminmen&uuml; vornehmen.', 9);
413
414                                 // Update notes (these will be set as task text!)
415                                 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.");
416                                 break;
417
418                         case '0.3.3': // SQL queries for v0.3.3
419                                 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
420                                 addConfigAddSql('admin_menu_sorter', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
421
422                                 // The statistics table
423                                 addDropTableSql('admin_las_stats');
424                                 addCreateTableSql('admin_las_stats', "
425 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
426 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
427 `type` ENUM('la','action','what') NOT NULL DEFAULT 'what',
428 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
429 PRIMARY KEY (`id`),
430 INDEX (`admin_id`)",
431                                         'LAS click data');
432
433                                 // Update notes (these will be set as task text!)
434                                 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.");
435                                 break;
436
437                         case '0.3.4': // SQL queries for v0.3.4
438                                 // Update notes (these will be set as task text!)
439                                 setExtensionUpdateNotes("Veraltetes Update (what=list_user&amp;mode=noref)");
440                                 break;
441
442                         case '0.3.5': // SQL queries for v0.3.5
443                                 // List accounts with no referral
444                                 addMemberMenuSql('stats', NULL, 'Statistiken', 4);
445                                 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 2);
446                                 addMemberMenuSql('extras', NULL, 'Extras', 5);
447                                 addMemberMenuSql('rals', NULL, 'Rallyes', 6);
448                                 addMemberMenuSql('account', NULL, 'Ihr Account', 7);
449                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='stats',`sort`=1,`title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
450                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras',`sort`=3 WHERE `what`='reflinks' LIMIT 1");
451
452                                 // Update notes (these will be set as task text!)
453                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
454                                 break;
455
456                         case '0.3.6': // SQL queries for v0.3.6
457                                 addConfigAddSql('salt_length', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
458                                 addConfigAddSql('pass_scramble', "VARCHAR(255) NOT NULL DEFAULT ''");
459                                 addExtensionChangeTableColumnSql('admins', 'password', 'password', "VARCHAR(255) NOT NULL DEFAULT ''");
460                                 addConfigAddSql('rand_no', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
461                                 addConfigAddSql('file_hash', "VARCHAR(255) NOT NULL DEFAULT ''");
462                                 addConfigAddSql('master_salt', "VARCHAR(255) NOT NULL DEFAULT ''");
463                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_config` SET `rand_no`=(ROUND(RAND() * 99999) + 100000) WHERE `config`=0 LIMIT 1");
464                                 addExtensionAddTableColumnSql('mod_reg', 'has_menu', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
465                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `has_menu`='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
466
467                                 // Update notes (these will be set as task text!)
468                                 setExtensionUpdateNotes("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
469                                 break;
470
471                         case '0.3.7': // SQL queries for v0.3.7
472                                 setExtensionUpdateNotes("Problem w&auml;hrend des Installationsvorganges behoben.");
473                                 break;
474
475                         case '0.3.8': // SQL queries for v0.3.8
476                                 addExtensionChangeTableColumnSql('admin_menu', 'descr', 'descr', 'MEDIUMTEXT NULL');
477                                 addExtensionChangeTableColumnSql('pool', 'text', 'text', 'LONGTEXT NOT NULL');
478
479                                 // Update notes (these will be set as task text!)
480                                 setExtensionUpdateNotes("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
481                                 break;
482
483                         case '0.3.9': // SQL queries for v0.3.9
484                                 // Update notes (these will be set as task text!)
485                                 setExtensionUpdateNotes("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
486                                 break;
487
488                         case '0.4.0': // SQL queries for v0.4.0
489                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Email-Management' WHERE `action` = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
490
491                                 // Update notes (these will be set as task text!)
492                                 setExtensionUpdateNotes("Email-Verwaltung nach Email-Management umbenannt.");
493                                 break;
494
495                         case '0.4.1': // SQL queries for v0.4.1
496                                 addConfigAddSql('show_timings', "ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
497
498                                 // Update notes (these will be set as task text!)
499                                 setExtensionUpdateNotes("Tabellen-Schl&uuml;ssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
500                                 break;
501
502                         case '0.4.2': // SQL queries for v0.4.2
503                                 // Update notes (these will be set as task text!)
504                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
505                                 break;
506
507                         case '0.4.3': // SQL queries for v0.4.3
508                                 addConfigAddSql('proxy_host', "VARCHAR(255) NOT NULL DEFAULT ''");
509                                 addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
510                                 addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
511                                 addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
512                                 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 z.B. Updates, Abfragen von Netzwerkupdates &uuml;ber diesen t&auml;tigt.', 15);
513
514                                 // Update notes (these will be set as task text!)
515                                 setExtensionUpdateNotes("Proxy-Einstellungen hinzugef&uuml;gt.");
516                                 break;
517
518                         case '0.4.4': // SQL queries for v0.4.4
519                                 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
520                                 addExtensionChangeTableColumnSql('guest_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
521                                 addExtensionChangeTableColumnSql('member_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
522                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`=NULL WHERE `what`=''");
523                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `what`=NULL WHERE `what`=''");
524                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `what`=NULL WHERE `what`=''");
525
526                                 // Make this depending on ext-menu
527                                 addExtensionDependency('menu');
528
529                                 // Update notes (these will be set as task text!)
530                                 setExtensionUpdateNotes("Schl&uuml;ssel in Admin-, Gast- und Mitgliedsmen&uuml; verbessert.");
531                                 break;
532
533                         case '0.4.5': // SQL queries for v0.4.5
534                                 addConfigAddSql('last_month', 'CHAR(2) NOT NULL DEFAULT 00');
535                                 addConfigAddSql('last_week', 'CHAR(2) NOT NULL DEFAULT 00');
536
537                                 // Update notes (these will be set as task text!)
538                                 setExtensionUpdateNotes("T&auml;glichen/w&ouml;chentlichen/monatlichen Reset verbessert.");
539                                 break;
540
541                         case '0.4.6': // SQL queries for v0.4.6
542                                 // Update notes (these will be set as task text!)
543                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
544                                 break;
545
546                         case '0.4.7': // SQL queries for v0.4.7
547                                 // Update notes (these will be set as task text!)
548                                 setExtensionUpdateNotes("Veraltetes Update.");
549                                 break;
550
551                         case '0.4.8': // SQL queries for v0.4.8
552                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX (`subject`)');
553
554                                 // Update notes (these will be set as task text!)
555                                 setExtensionUpdateNotes("Index f&uuml;r Betreff eingef&uuml;gt.");
556                                 break;
557
558                         case '0.4.9': // SQL queries for v0.4.9
559                                 // Update notes (these will be set as task text!)
560                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
561                                 break;
562
563                         case '0.5.0': // SQL queries for v0.5.0
564                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `level`');
565                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `userid`');
566                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD UNIQUE INDEX `userid_level` (`userid`, `level`)');
567
568                                 // Update notes (these will be set as task text!)
569                                 setExtensionUpdateNotes("Referral-System unterst&uuml;tzt nun detailierte Referral-&Uuml;bersicht und vieles mehr.");
570                                 break;
571
572                         case '0.5.1': // SQL queries for v0.5.1
573                                 addExtensionDropTableColumnSql('member_menu', 'descr');
574
575                                 // Update notes (these will be set as task text!)
576                                 setExtensionUpdateNotes("Beschreibungsspalte von Mitgliedsmen&uuml; entfernt, welche ohnehin nicht genutzt wird.");
577                                 break;
578
579                         case '0.5.2': // SQL queries for v0.5.2
580                                 addExtensionChangeTableColumnSql('refdepths', 'percents', 'percents', 'FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
581
582                                 // Update notes (these will be set as task text!)
583                                 setExtensionUpdateNotes("Prozents&auml;tze k&ouml;nnen nun f&uuml;nf Stellen hinter dem Komma sein.");
584                                 break;
585
586                         case '0.5.3': // SQL queries for v0.5.3
587                                 addConfigAddSql('session_save_path', "VARCHAR(255) NOT NULL DEFAULT ''");
588                                 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);
589
590                                 // Update notes (these will be set as task text!)
591                                 setExtensionUpdateNotes("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com n&ouml;tig.");
592                                 break;
593
594                         case '0.5.4': // SQL queries for v0.5.4
595                                 addMemberMenuSql('main', 'reflist', 'Ref-&Uuml;bersicht', 5);
596
597                                 // Update notes (these will be set as task text!)
598                                 setExtensionUpdateNotes("Ref-&Uuml;bersicht eingebaut. Diese h&auml;ngt von der Erweiterung <strong>refback</strong> ab.");
599                                 break;
600
601                         case '0.5.5': // SQL queries for v0.5.5
602                                 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
603
604                                 // Update notes (these will be set as task text!)
605                                 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbest&auml;tigten Mails kann nun optional abgeschaltet werden.");
606                                 break;
607
608                         case '0.5.6': // SQL queries for v0.5.6
609                                 // Update notes (these will be set as task text!)
610                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
611                                 break;
612
613                         case '0.5.7': // SQL queries for v0.5.7
614                                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
615
616                                 // Update notes (these will be set as task text!)
617                                 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&amp;mode=norefs verschoben.");
618                                 break;
619
620                         case '0.5.8': // SQL queries for v0.5.8
621                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_lang_file`');
622
623                                 // Update notes (these will be set as task text!)
624                                 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
625                                 break;
626
627                         case '0.5.9': // SQL queries for v0.5.9
628                                 // Table 'filters' is vital because many functionality depends on it, so don't remove it
629                                 addCreateTableSql('filters', "
630 `filter_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
631 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
632 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
633 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
634 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
635 PRIMARY KEY (`filter_id`),
636 UNIQUE INDEX `name_function` (`filter_name`, `filter_function`)",
637                                         'Filter system');
638
639                                 // Admin menu
640                                 addAdminMenuSql('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und l&auml;sst diese de- bzw. wieder aktivieren.', 17);
641
642                                 // Update notes (these will be set as task text!)
643                                 setExtensionUpdateNotes("Tabellen f&uuml;r Filter-System hinzugef&uuml;gt.");
644                                 break;
645
646                         case '0.6.0': // SQL queries for v0.6.0
647                                 addConfigAddSql('update_filter_usage', "ENUM('N','Y') NOT NULL DEFAULT 'N'");
648
649                                 // Update notes (these will be set as task text!)
650                                 setExtensionUpdateNotes("Benutzungsstatistik eingebaut. Das Z&auml;hlen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
651                                 break;
652
653                         case '0.6.1': // SQL queries for v0.6.1
654                                 // Update notes (these will be set as task text!)
655                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
656                                 break;
657
658                         case '0.6.2': // SQL queries for v0.6.2
659                                 // Depends on refback extension
660                                 addExtensionDependency('user');
661
662                                 // Update notes (these will be set as task text!)
663                                 setExtensionUpdateNotes("Abh&auml;ngigkeit von <u>ext-user</u> gesetzt.");
664                                 break;
665
666                         case '0.6.3': // SQL queries for v0.6.3
667                                 // Update notes (these will be set as task text!)
668                                 setExtensionUpdateNotes("Filter-Tabelle bereinigt um doppelte Eintr&auml;ge und Unique-Key auf <span class=\"bad\">filter_name</span> und <span class=\"bad\">filter_function</span> zusammen gesetzt.");
669
670                                 // Add special fix include to fix filters
671                                 addIncludeToPool('extension', 'inc/fix_filters.php');
672                                 break;
673
674                         case '0.6.4': // SQL queries for v0.6.4
675                                 // Update admin menu
676                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
677                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_admin_menu` SET `descr` = REPLACE(`descr`, '!POINTS!', '?POINTS?') WHERE `descr` LIKE '%!POINTS!%'");
678                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_guest_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
679                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_member_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
680
681                                 // Update notes (these will be set as task text!)
682                                 setExtensionUpdateNotes("Datenbank umgestellt auf Konfigurationselemente.");
683                                 break;
684
685                         case '0.6.5': // SQL queries for v0.6.5
686                                 addConfigChangeSql('css_php', 'css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
687
688                                 // Update notes (these will be set as task text!)
689                                 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
690                                 break;
691
692                         case '0.6.6': // SQL queries for v0.6.6
693                                 addAdminMenuSql('setup', 'config_secure', 'Sicherheitseinstellungen', 'Stellen Sie ein, wie lange das Passwort eines Mitgliedes mindestens sein muss uvm.', 9);
694                                 addAdminMenuSql('setup', 'config_points', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG}', 'Stellen Sie hier die Willkommensgutschrift, Referral-Gutschrift (einmalige) usw. ein.', 10);
695                                 addAdminMenuSql('email', 'email_archiv', 'E-Mail Archiv', 'Sehen Sie sich hier bereits gesendete Mails an.', 6);
696
697                                 // Update notes (these will be set as task text!)
698                                 setExtensionUpdateNotes("Die Sicherheitseinstellungen, {?POINTS?}-Einstellungen und Email-Archiv funktionieren nur, wenn diese Erweiterung installiert ist.");
699                                 break;
700
701                         case '0.6.7': // SQL queries for v0.6.7
702                                 addConfigChangeSql('index_delay', 'index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
703
704                                 // Update notes (these will be set as task text!)
705                                 setExtensionUpdateNotes("Die Weiterleitungseinstellung muss auch Werte kleiner Null akzeptieren.");
706                                 break;
707
708                         case '0.6.8': // SQL queries for v0.6.8
709                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
710                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
711                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
712                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
713                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
714                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
715
716                                 // Update notes (these will be set as task text!)
717                                 setExtensionUpdateNotes("Spalten verk&uuml;rzt, damit die Schl&uuml;ssel passen.");
718                                 break;
719
720                         case '0.6.9': // SQL queries for 0.6.9
721                                 // Register filter
722                                 registerFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', FALSE, TRUE, isExtensionDryRun());
723
724                                 // Update notes (these will be set as task text!)
725                                 setExtensionUpdateNotes("Filter zum Zur&uuml;cksetzens des fehlgeschlagenen Mitgliederlogins hinzugef&uuml;gt (internes TODO).");
726                                 break;
727
728                         case '0.7.0': // SQL queries for 0.7.0
729                                 // Table definition
730                                 addDropTableSql('dns_cache');
731                                 addCreateTableSql('dns_cache', "
732 `hostname` VARCHAR(255) NOT NULL,
733 `ip` VARCHAR(15) NOT NULL,
734 `added` DATETIME NOT NULL,
735 PRIMARY KEY (`hostname`),
736 INDEX (`ip`)",
737                                         'Cache for DNS requests');
738
739                                 // Configuration
740                                 addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
741
742                                 // Register filter
743                                 registerFilter(__FILE__, __LINE__, 'reset', 'CLEANUP_DNS_CACHE', FALSE, TRUE, isExtensionDryRun());
744
745                                 // Update notes (these will be set as task text!)
746                                 setExtensionUpdateNotes("IP-Resolver-Klasse hinzugef&uuml;gt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
747                                 break;
748
749                         case '0.7.1': // SQL queries for v0.7.1
750                                 // This update just depends on ext-timezone to make integration of an essential extension much easier
751                                 addExtensionDependency('timezone');
752
753                                 // Update notes (these will be set as task text!)
754                                 setExtensionUpdateNotes("Zeitzone ist nun mit ext-timezone konfigurierbar.");
755                                 break;
756
757                         case '0.7.2': // SQL queries for v0.7.2
758                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `task_type`='MEMBER_SUPPORT' WHERE `task_type`='SUPPORT_MEMBER'");
759
760                                 // Update notes (these will be set as task text!)
761                                 setExtensionUpdateNotes("Daten an Namenskonvention angepasst.");
762                                 break;
763
764                         case '0.7.3': // SQL queries for v0.7.3
765                                 addExtensionChangeTableColumnSql('filters', 'filter_name', 'filter_name', "VARCHAR(50) NOT NULL DEFAULT ''");
766                                 addExtensionChangeTableColumnSql('filters', 'filter_function', 'filter_function', "VARCHAR(100) NOT NULL DEFAULT ''");
767
768                                 // Update notes (these will be set as task text!)
769                                 setExtensionUpdateNotes("Spalten in Filtertabelle gek&uuml;rzt (SQL-Fehler wegen zu grossem Schl&uuml;ssel).");
770                                 break;
771
772                         case '0.7.4': // SQL queries for v0.7.4
773                                 addExtensionAddTableColumnSql('pool', 'mails_sent', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
774
775                                 // Update notes (these will be set as task text!)
776                                 setExtensionUpdateNotes("Spalten in Filtertabelle gek&uuml;rzt (SQL-Fehler wegen zu grossem Schl&uuml;ssel).");
777                                 break;
778
779                         case '0.7.5': // SQL queries for v0.7.5
780                                 addConfigAddSql('last_hour', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
781
782                                 // Update notes (these will be set as task text!)
783                                 setExtensionUpdateNotes("Aktuelle Stunde hinzugef&uuml;gt (ist nicht konfigurierbar).");
784                                 break;
785
786                         case '0.7.6': // SQL queries for v0.7.6
787                                 addConfigChangeSql('last_month', 'last_month', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
788                                 addConfigChangeSql('last_week', 'last_week', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
789
790                                 // Update notes (these will be set as task text!)
791                                 setExtensionUpdateNotes("Spaltentyp fuer kleine Zahlen sollten auch z.B. TINYINT sein.");
792                                 break;
793
794                         case '0.7.7': // SQL queries for v0.7.7
795                                 addMemberMenuSql('earn', NULL, 'Verdienen', 2);
796                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='earn',`sort`=1 WHERE `what`='unconfirmed' LIMIT 1");
797
798                                 // Update notes (these will be set as task text!)
799                                 setExtensionUpdateNotes("Men&uuml;punkt <strong>Verdienen</strong> hinzugef&uuml;gt und <strong>Unbest&auml;tigte Mails</strong> als ersten Punkt dort hin verschoben.");
800                                 break;
801
802                         case '0.7.8': // SQL queries for v0.7.8
803                                 // Update notes (these will be set as task text!)
804                                 setExtensionUpdateNotes("Konfigurationseintr&auml;ge mit Spaltentyp <strong>ENUM</strong> werden nun immer komplett gross geschrieben.");
805                                 break;
806
807                         case '0.7.9': // SQL queries for v0.7.9
808                                 addExtensionSQL("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_email_max_rec' WHERE `what`='config_email' LIMIT 1");
809
810                                 // Update notes (these will be set as task text!)
811                                 setExtensionUpdateNotes("Adminscript <strong>what-config_email.php</strong> nach <strong>what-list_email_max_rec.php</strong> umbenannt.");
812                                 break;
813
814                         case '0.8.0': // SQL queries for v0.8.0
815                                 // Points account data (this table should not be dropped or else you may have to re-install a lot extensions)
816                                 addCreateTableSql('points_data', "
817 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
818 `subject` VARCHAR(255) NOT NULL DEFAULT '',
819 `column_name` VARCHAR(255) NOT NULL DEFAULT 'points',
820 `locked_mode` ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED',
821 `payment_method` ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL',
822 `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N',
823 PRIMARY KEY (`id`),
824 UNIQUE KEY (`subject`)",
825                                         'Points account data');
826
827                                 // Admin menu
828                                 addAdminMenuSql('setup', 'list_point_accounts', 'Guthabenkonten...', 'Veralten Sie hier bequem Einstellungen zu den Guthabenkonten.', 5);
829
830                                 // Update notes (these will be set as task text!)
831                                 setExtensionUpdateNotes("Tabelle <span class=\"bad\">points_data</span> erzeugt, diese soll das {?POINTS?}-Guthaben komplett lenken.");
832                                 break;
833
834                         case '0.8.1': // SQL queries for v0.8.1
835                                 addExtensionChangeTableColumnSql('refdepths', 'level', 'level', 'TINYINT(3) UNSIGNED NULL DEFAULT NULL');
836                                 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_refdepths` SET `level`=NULL WHERE `level`=0 LIMIT 1');
837
838                                 // Update notes (these will be set as task text!)
839                                 setExtensionUpdateNotes("Level 0 ist nun auch NULL.");
840                                 break;
841
842                         case '0.8.2': // SQL queries for v0.8.2
843                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` DROP INDEX `ext_name`");
844                                 addExtensionChangeTableColumnSql('points_data', 'ext_name', 'subject', "VARCHAR(255) NOT NULL DEFAULT ''");
845                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD INDEX `subject` (`subject`)");
846                                 addExtensionAddTableColumnSql('points_data', 'notify_recipient', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
847
848                                 // Register points data
849                                 registerExtensionPointsData('pool_payback', 'points', 'LOCKED', 'DIRECT');
850                                 registerExtensionPointsData('mail_deleted', 'points', 'LOCKED', 'DIRECT');
851
852                                 // Remove deprecated configuration entry
853                                 addConfigDropSql('reg_points_mode');
854
855                                 // Update notes (these will be set as task text!)
856                                 setExtensionUpdateNotes("Es sollte der Gutschriftenbetreff und nicht der Erweiterungsname gepeichert werden, zudem brauchen wir einen Konfigurationseintrag nicht mehr.");
857                                 break;
858
859                         case '0.8.3': // SQL queries for v0.8.3
860                                 addConfigAddSql('display_home_in_index', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
861
862                                 // Update notes (these will be set as task text!)
863                                 setExtensionUpdateNotes("Es kann nun die &quot;Home&quot;-Seite in <strong>index.php</strong> angezeigt werden, anstelle der Weiterleitung.");
864                                 break;
865
866                         case '0.8.4': // SQL queries for v0.8.4
867                                 addCreateTableSql('history', "
868 `history_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
869 `history_subject` VARCHAR(255) NOT NULL DEFAULT 'GENERIC',
870 `history_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
871 `history_value` VARCHAR(255) NOT NULL DEFAULT '',
872 `history_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
873 `history_last_used` TIMESTAMP NULL DEFAULT NULL,
874 PRIMARY KEY (`history_id`),
875 INDEX `userid` (`history_userid`),
876 INDEX (`history_last_used` DESC)",
877                                         'History of used data');
878
879                                 // Register filter
880                                 registerFilter(__FILE__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', FALSE, TRUE, isExtensionDryRun());
881
882                                 // Update notes (these will be set as task text!)
883                                 setExtensionUpdateNotes("Allgemeine Historie-Tabelle hinzugef&uuml;gt.");
884                                 break;
885
886                         case '0.8.5': // SQL queries for v0.8.5
887                                 // Old-lost configuration entry
888                                 addConfigDropSql('ext_autopurge');
889
890                                 // Update notes (these will be set as task text!)
891                                 setExtensionUpdateNotes("Uralten Konfigurationseintrag entfernt.");
892                                 break;
893
894                         case '0.8.6': // SQL queries for v0.8.6
895                                 addExtensionChangeTableColumnSql('points_data', 'payment_method', 'payment_method', "ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL'");
896                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_points_data` SET `payment_method`='REFERRAL' WHERE `payment_method` != 'DIRECT'");
897
898                                 // Update notes (these will be set as task text!)
899                                 setExtensionUpdateNotes("Referral/REFERRAL soll es &uuml;berall heissen (ist ein Typo nur mit einem R zu schreiben).");
900                                 break;
901
902                         case '0.8.7': // SQL queries for v0.8.7
903                                 addConfigAddSql('admin_menu_javascript', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
904
905                                 // Update notes (these will be set as task text!)
906                                 setExtensionUpdateNotes("Es kann ausgew&auml;hlt werden, ob das herk&ouml;mliche JavaScrit-lose Men&uuml; oder mit JavaScript aktiv sein soll. Das herk&ouml;mliche ist erstmal Standardeinstellung, bis das JavaScript-Men&uuml; funktioniert.");
907                                 break;
908
909                         case '0.8.8': // SQL queries for v0.8.8
910                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` DROP INDEX `subject`, ADD UNIQUE `subject` (`subject`)");
911
912                                 // Update notes (these will be set as task text!)
913                                 setExtensionUpdateNotes("Der Wert in der Spalte <strong>subject</strong> sollte nur einmal vorkommen, damit eventuell nichts mehrfach durchfl&auuml;ft.");
914                                 break;
915
916                         case '0.8.9': // SQL queries for v0.8.9
917                                 addExtensionAddTableColumnSql('points_data', 'account_provider', "ENUM('EXTENSION', 'CUSTOM') NOT NULL DEFAULT 'EXTENSION'");
918                                 addConfigAddSql('points_remove_account', "VARCHAR(255) NOT NULL DEFAULT 'points'");
919
920                                 // Update notes (these will be set as task text!)
921                                 setExtensionUpdateNotes("&quot;Provider&quot; hinzugef&uuml;gt, welcher nur <strong>Erweiterung</strong> oder <strong>Selbstdefiniert sein kann. Es k&ouml;nnen dann auch nur selbstdefinierte gel&ouml;scht oder editiert werden, Erweiterungen k&ouml;nnen auch nur &quot;einige&quot; Eintr&auml;ge l&ouml;schen.");
922                                 break;
923
924                         case '0.9.0': // SQL queries for v0.9.0
925                                 // Register filter
926                                 registerFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', FALSE, TRUE, isExtensionDryRun());
927
928                                 // Register points data
929                                 registerExtensionPointsData('admin_add_single', 'points', 'LOCKED', 'DIRECT');
930                                 registerExtensionPointsData('admin_add_single_ref', 'points', 'LOCKED', 'DIRECT');
931                                 registerExtensionPointsData('admin_add_all', 'points', 'LOCKED', 'DIRECT');
932                                 registerExtensionPointsData('admin_add_all_ref', 'points', 'LOCKED', 'DIRECT');
933
934                                 // Update notes (these will be set as task text!)
935                                 setExtensionUpdateNotes("Filter zum Initialisieren von ext-sql_patches registriert und Eintr&auml;ge in <strong>{?_MYSQL_PREFIX?}_points_data</strong> hinzugef&uuml;gt.");
936                                 break;
937
938                         case '0.9.1': // SQL queries for v0.9.1
939                                 // Add admin menu
940                                 addAdminMenuSql('misc', 'list_server_name', 'Verkehrte Domains auflisten', 'Listet alle als verkehrt erkannten Domains auf.', 4);
941
942                                 // Create table
943                                 addCreateTableSql('server_name_log', "
944 `server_name_id` BIGINT (20) NOT NULL AUTO_INCREMENT,
945 `server_name` VARCHAR (255) NOT NULL DEFAULT 'invalid',
946 `server_name_remote_addr` VARCHAR (15) NOT NULL DEFAULT '0.0.0.0',
947 `server_name_ua` TINYTEXT NULL DEFAULT NULL,
948 `server_name_referrer` TINYTEXT NULL DEFAULT NULL,
949 `server_name_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
950 `server_name_counter` BIGINT (20) NOT NULL DEFAULT 1,
951 PRIMARY KEY (`server_name_id`)
952 ", 'Logging of wrong SERVER_NAME');
953
954                                 // Update notes (these will be set as task text!)
955                                 setExtensionUpdateNotes("Loggen von falschen <strong>SERVER_NAME</strong> Eintr&auml;gen hinzugef&uuml;gt.");
956                                 break;
957
958                         case '0.9.2': // SQL queries for v0.9.2
959                                 addExtensionAddTableColumnSql('server_name_log', 'server_name_remote_addr', "VARCHAR (15) NOT NULL DEFAULT '0.0.0.0'");
960                                 addExtensionAddTableColumnSql('server_name_log', 'server_name_counter', 'BIGINT (20) NOT NULL DEFAULT 0');
961                                 addExtensionAddTableColumnSql('server_name_log', 'server_name_ua', 'TINYTEXT NULL DEFAULT NULL');
962                                 addExtensionAddTableColumnSql('server_name_log', 'server_name_referrer', 'TINYTEXT NULL DEFAULT NULL');
963
964                                 // Update notes (these will be set as task text!)
965                                 setExtensionUpdateNotes("Sorry, hatte noch IP-Nummer, User-Agent, aufrufende Seite und Z&auml;hler vergessen.");
966                                 break;
967
968                         case '0.9.3': // SQL queries for v0.9.3
969                                 addConfigAddSql('ap_server_name', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
970                                 addConfigAddSql('ap_server_name_since', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
971
972                                 // Register filter
973                                 registerFilter(__FILE__, __LINE__, 'extra_autopurge', 'SERVER_NAME_EXTRA_AUTOPURGE', FALSE, TRUE, isExtensionDryRun());
974
975                                 // Update notes (these will be set as task text!)
976                                 setExtensionUpdateNotes("Bereinigung von verkehrten <strong>SERVER_NAME</strong> Eintr&auml;gen hinzugef&uuml;gt.");
977                                 break;
978                 } // END - switch
979                 break;
980
981         case 'modify': // When the extension got modified
982                 break;
983
984         case 'test': // For testing purposes
985                 break;
986
987         case 'init': // Do stuff when extension is initialized
988                 break;
989
990         default: // Unknown extension mode
991                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
992                 break;
993 } // END - switch
994
995 // [EOF]
996 ?>