]> git.mxchange.org Git - mailer.git/blob - inc/extensions/ext-sql_patches.php
Installation of extensions fixes
[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.6');
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.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', '0.9.4', '0.9.5', '0.9.6'));
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                                 addExtensionAddTableUniqueSql('extensions', 'ext_name', '(`ext_name`)');
350                                 addExtensionAddTableUniqueSql('admins', 'login', '(`login`)');
351                                 addExtensionAddTableIndexSql('refbanner', 'visible', '(`visible`)');
352                                 addExtensionAddTableUniqueSql('refdepths', 'level', '(`level`)');
353                                 addExtensionAddTableIndexSql('refsystem', 'level', '(`level`)');
354                                 addExtensionAddTableIndexSql('pool', 'data_type', '(`data_type`)');
355                                 addExtensionAddTableUniqueSql('mod_reg', 'module', '(`module`)');
356                                 addExtensionAddTableIndexSql('admin_menu', 'action', '(`action`)');
357                                 addExtensionAddTableIndexSql('admin_menu', 'what', '(`what`)');
358                                 addExtensionAddTableIndexSql('extensions', 'ext_active', '(`ext_active`)');
359                                 addExtensionAddTableIndexSql('guest_menu', 'action', '(`action`)');
360                                 addExtensionAddTableIndexSql('guest_menu', 'what', '(`what`)');
361                                 addExtensionAddTableIndexSql('guest_menu', 'sort', '(`sort`)');
362                                 addExtensionAddTableIndexSql('guest_menu', 'visible', '(`visible`)');
363                                 addExtensionAddTableIndexSql('guest_menu', 'locked', '(`locked`)');
364                                 addExtensionAddTableIndexSql('member_menu', 'what', '(`what`)');
365                                 addExtensionAddTableIndexSql('member_menu', 'sort', '(`sort`)');
366                                 addExtensionAddTableIndexSql('member_menu', 'visible', '(`visible`)');
367                                 addExtensionAddTableIndexSql('member_menu', 'locked', '(`locked`)');
368                                 addExtensionAddTableIndexSql('cats', 'visible', '(`visible`)');
369                                 addExtensionAddTableIndexSql('cats', 'sort', '(`sort`)');
370
371                                 // Update notes (these will be set as task text!)
372                                 setExtensionUpdateNotes("Eindeutige Schl&uuml;ssel (UNIQUE) und normale Schl&uuml;ssel (INDEX) gesetzt.");
373                                 break;
374
375                         case '0.3.2': // SQL queries for v0.3.2
376                                 // Connection table between the menu system and the "logical area system"
377                                 addDropTableSql('admin_menu_las');
378                                 addCreateTableSql('admin_menu_las', "
379 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
380 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
381 `la_action` VARCHAR(255) NOT NULL DEFAULT '',
382 `la_what` VARCHAR(255) NOT NULL DEFAULT '',
383 PRIMARY KEY (`id`),
384 INDEX (`la_id`),
385 INDEX (`la_action`),
386 INDEX (`la_what`)",
387                                         'Menu system -> LAS');
388
389                                 // All "logical areas" together
390                                 addDropTableSql('admin_menu_las_data');
391                                 addCreateTableSql('admin_menu_las_data', "
392 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
393 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
394 `la_title` VARCHAR(255) NOT NULL DEFAULT '',
395 `la_posx` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
396 `la_posy` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
397 PRIMARY KEY (`id`),
398 UNIQUE INDEX (`la_id`),
399 INDEX (`la_posx`),
400 INDEX (`la_posy`)",
401                                         'LAS position and title data');
402
403                                 // Which menu do you like?
404                                 addConfigAddSql('admin_menu', "ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
405
406                                 // Insert menus
407                                 addAdminMenuSql('setup', 'config_admin', 'Adminmen&uuml;', 'Diverse Einstellungen am Adminmen&uuml; vornehmen.', 9);
408
409                                 // Update notes (these will be set as task text!)
410                                 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.");
411                                 break;
412
413                         case '0.3.3': // SQL queries for v0.3.3
414                                 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
415                                 addConfigAddSql('admin_menu_sorter', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
416
417                                 // The statistics table
418                                 addDropTableSql('admin_las_stats');
419                                 addCreateTableSql('admin_las_stats', "
420 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
421 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
422 `type` ENUM('la','action','what') NOT NULL DEFAULT 'what',
423 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
424 PRIMARY KEY (`id`),
425 INDEX (`admin_id`)",
426                                         'LAS click data');
427
428                                 // Update notes (these will be set as task text!)
429                                 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.");
430                                 break;
431
432                         case '0.3.4': // SQL queries for v0.3.4
433                                 // Update notes (these will be set as task text!)
434                                 setExtensionUpdateNotes("Veraltetes Update (what=list_user&amp;mode=noref)");
435                                 break;
436
437                         case '0.3.5': // SQL queries for v0.3.5
438                                 // List accounts with no referral
439                                 addMemberMenuSql('stats', NULL, 'Statistiken', 4);
440                                 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 2);
441                                 addMemberMenuSql('extras', NULL, 'Extras', 5);
442                                 addMemberMenuSql('rals', NULL, 'Rallyes', 6);
443                                 addMemberMenuSql('account', NULL, 'Ihr Account', 7);
444                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='stats',`sort`=1,`title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
445                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras',`sort`=3 WHERE `what`='reflinks' LIMIT 1");
446
447                                 // Update notes (these will be set as task text!)
448                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
449                                 break;
450
451                         case '0.3.6': // SQL queries for v0.3.6
452                                 addConfigAddSql('salt_length', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
453                                 addConfigAddSql('pass_scramble', "VARCHAR(255) NOT NULL DEFAULT ''");
454                                 addExtensionChangeTableColumnSql('admins', 'password', 'password', "VARCHAR(255) NOT NULL DEFAULT ''");
455                                 addConfigAddSql('rand_no', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
456                                 addConfigAddSql('file_hash', "VARCHAR(255) NOT NULL DEFAULT ''");
457                                 addConfigAddSql('master_salt', "VARCHAR(255) NOT NULL DEFAULT ''");
458                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_config` SET `rand_no`=(ROUND(RAND() * 99999) + 100000) WHERE `config`=0 LIMIT 1");
459                                 addExtensionAddTableColumnSql('mod_reg', 'has_menu', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
460                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `has_menu`='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
461
462                                 // Update notes (these will be set as task text!)
463                                 setExtensionUpdateNotes("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
464                                 break;
465
466                         case '0.3.7': // SQL queries for v0.3.7
467                                 setExtensionUpdateNotes("Problem w&auml;hrend des Installationsvorganges behoben.");
468                                 break;
469
470                         case '0.3.8': // SQL queries for v0.3.8
471                                 addExtensionChangeTableColumnSql('admin_menu', 'descr', 'descr', 'MEDIUMTEXT NULL');
472                                 addExtensionChangeTableColumnSql('pool', 'text', 'text', 'LONGTEXT NOT NULL');
473
474                                 // Update notes (these will be set as task text!)
475                                 setExtensionUpdateNotes("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
476                                 break;
477
478                         case '0.3.9': // SQL queries for v0.3.9
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.4.0': // SQL queries for v0.4.0
484                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Email-Management' WHERE `action` = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
485
486                                 // Update notes (these will be set as task text!)
487                                 setExtensionUpdateNotes("Email-Verwaltung nach Email-Management umbenannt.");
488                                 break;
489
490                         case '0.4.1': // SQL queries for v0.4.1
491                                 addConfigAddSql('show_timings', "ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
492
493                                 // Update notes (these will be set as task text!)
494                                 setExtensionUpdateNotes("Tabellen-Schl&uuml;ssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
495                                 break;
496
497                         case '0.4.2': // SQL queries for v0.4.2
498                                 // Update notes (these will be set as task text!)
499                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
500                                 break;
501
502                         case '0.4.3': // SQL queries for v0.4.3
503                                 addConfigAddSql('proxy_host', "VARCHAR(255) NOT NULL DEFAULT ''");
504                                 addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
505                                 addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
506                                 addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
507                                 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);
508
509                                 // Update notes (these will be set as task text!)
510                                 setExtensionUpdateNotes("Proxy-Einstellungen hinzugef&uuml;gt.");
511                                 break;
512
513                         case '0.4.4': // SQL queries for v0.4.4
514                                 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
515                                 addExtensionChangeTableColumnSql('guest_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
516                                 addExtensionChangeTableColumnSql('member_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
517                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`=NULL WHERE `what`=''");
518                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `what`=NULL WHERE `what`=''");
519                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `what`=NULL WHERE `what`=''");
520
521                                 // Make this depending on ext-menu
522                                 addExtensionDependency('menu');
523
524                                 // Update notes (these will be set as task text!)
525                                 setExtensionUpdateNotes("Schl&uuml;ssel in Admin-, Gast- und Mitgliedsmen&uuml; verbessert.");
526                                 break;
527
528                         case '0.4.5': // SQL queries for v0.4.5
529                                 addConfigAddSql('last_month', 'CHAR(2) NOT NULL DEFAULT 00');
530                                 addConfigAddSql('last_week', 'CHAR(2) NOT NULL DEFAULT 00');
531
532                                 // Update notes (these will be set as task text!)
533                                 setExtensionUpdateNotes("T&auml;glichen/w&ouml;chentlichen/monatlichen Reset verbessert.");
534                                 break;
535
536                         case '0.4.6': // SQL queries for v0.4.6
537                                 // Update notes (these will be set as task text!)
538                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
539                                 break;
540
541                         case '0.4.7': // SQL queries for v0.4.7
542                                 // Update notes (these will be set as task text!)
543                                 setExtensionUpdateNotes("Veraltetes Update.");
544                                 break;
545
546                         case '0.4.8': // SQL queries for v0.4.8
547                                 // Update notes (these will be set as task text!)
548                                 setExtensionUpdateNotes("Update nach <strong>ext-task</strong> verschoben.");
549                                 break;
550
551                         case '0.4.9': // SQL queries for v0.4.9
552                                 // Update notes (these will be set as task text!)
553                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
554                                 break;
555
556                         case '0.5.0': // SQL queries for v0.5.0
557                                 addExtensionDropTableIndexSql('refsystem', 'level');
558                                 addExtensionDropTableIndexSql('refsystem', 'userid');
559                                 addExtensionAddTableIndexSql('refsystem', 'userid_level', '(`userid`, `level`)');
560
561                                 // Update notes (these will be set as task text!)
562                                 setExtensionUpdateNotes("Referral-System unterst&uuml;tzt nun detailierte Referral-&Uuml;bersicht und vieles mehr.");
563                                 break;
564
565                         case '0.5.1': // SQL queries for v0.5.1
566                                 addExtensionDropTableColumnSql('member_menu', 'descr');
567
568                                 // Update notes (these will be set as task text!)
569                                 setExtensionUpdateNotes("Beschreibungsspalte von Mitgliedsmen&uuml; entfernt, welche ohnehin nicht genutzt wird.");
570                                 break;
571
572                         case '0.5.2': // SQL queries for v0.5.2
573                                 addExtensionChangeTableColumnSql('refdepths', 'percents', 'percents', 'FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
574
575                                 // Update notes (these will be set as task text!)
576                                 setExtensionUpdateNotes("Prozents&auml;tze k&ouml;nnen nun f&uuml;nf Stellen hinter dem Komma sein.");
577                                 break;
578
579                         case '0.5.3': // SQL queries for v0.5.3
580                                 addConfigAddSql('session_save_path', "VARCHAR(255) NOT NULL DEFAULT ''");
581                                 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);
582
583                                 // Update notes (these will be set as task text!)
584                                 setExtensionUpdateNotes("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com n&ouml;tig.");
585                                 break;
586
587                         case '0.5.4': // SQL queries for v0.5.4
588                                 addMemberMenuSql('main', 'reflist', 'Ref-&Uuml;bersicht', 5);
589
590                                 // Update notes (these will be set as task text!)
591                                 setExtensionUpdateNotes("Ref-&Uuml;bersicht eingebaut. Diese h&auml;ngt von der Erweiterung <strong>refback</strong> ab.");
592                                 break;
593
594                         case '0.5.5': // SQL queries for v0.5.5
595                                 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
596
597                                 // Update notes (these will be set as task text!)
598                                 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbest&auml;tigten Mails kann nun optional abgeschaltet werden.");
599                                 break;
600
601                         case '0.5.6': // SQL queries for v0.5.6
602                                 // Update notes (these will be set as task text!)
603                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
604                                 break;
605
606                         case '0.5.7': // SQL queries for v0.5.7
607                                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
608
609                                 // Update notes (these will be set as task text!)
610                                 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&amp;mode=norefs verschoben.");
611                                 break;
612
613                         case '0.5.8': // SQL queries for v0.5.8
614                                 addExtensionDropTableColumnSql('extensions', 'ext_lang_file');
615
616                                 // Update notes (these will be set as task text!)
617                                 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
618                                 break;
619
620                         case '0.5.9': // SQL queries for v0.5.9
621                                 // Table 'filters' is vital because many functionality depends on it, so don't remove it
622                                 addCreateTableSql('filters', "
623 `filter_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
624 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
625 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
626 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
627 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
628 PRIMARY KEY (`filter_id`),
629 UNIQUE INDEX `name_function` (`filter_name`, `filter_function`)",
630                                         'Filter system');
631
632                                 // Admin menu
633                                 addAdminMenuSql('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und l&auml;sst diese de- bzw. wieder aktivieren.', 17);
634
635                                 // Update notes (these will be set as task text!)
636                                 setExtensionUpdateNotes("Tabellen f&uuml;r Filter-System hinzugef&uuml;gt.");
637                                 break;
638
639                         case '0.6.0': // SQL queries for v0.6.0
640                                 addConfigAddSql('update_filter_usage', "ENUM('N','Y') NOT NULL DEFAULT 'N'");
641
642                                 // Update notes (these will be set as task text!)
643                                 setExtensionUpdateNotes("Benutzungsstatistik eingebaut. Das Z&auml;hlen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
644                                 break;
645
646                         case '0.6.1': // SQL queries for v0.6.1
647                                 // Update notes (these will be set as task text!)
648                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
649                                 break;
650
651                         case '0.6.2': // SQL queries for v0.6.2
652                                 // Depends on refback extension
653                                 addExtensionDependency('user');
654
655                                 // Update notes (these will be set as task text!)
656                                 setExtensionUpdateNotes("Abh&auml;ngigkeit von <u>ext-user</u> gesetzt.");
657                                 break;
658
659                         case '0.6.3': // SQL queries for v0.6.3
660                                 // Update notes (these will be set as task text!)
661                                 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.");
662
663                                 // Add special fix include to fix filters
664                                 addIncludeToPool('extension', 'inc/fix_filters.php');
665                                 break;
666
667                         case '0.6.4': // SQL queries for v0.6.4
668                                 // Update admin menu
669                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
670                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_admin_menu` SET `descr` = REPLACE(`descr`, '!POINTS!', '?POINTS?') WHERE `descr` LIKE '%!POINTS!%'");
671                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_guest_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
672                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_member_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
673
674                                 // Update notes (these will be set as task text!)
675                                 setExtensionUpdateNotes("Datenbank umgestellt auf Konfigurationselemente.");
676                                 break;
677
678                         case '0.6.5': // SQL queries for v0.6.5
679                                 addConfigChangeSql('css_php', 'css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
680
681                                 // Update notes (these will be set as task text!)
682                                 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
683                                 break;
684
685                         case '0.6.6': // SQL queries for v0.6.6
686                                 addAdminMenuSql('setup', 'config_secure', 'Sicherheitseinstellungen', 'Stellen Sie ein, wie lange das Passwort eines Mitgliedes mindestens sein muss uvm.', 9);
687                                 addAdminMenuSql('setup', 'config_points', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG}', 'Stellen Sie hier die Willkommensgutschrift, Referral-Gutschrift (einmalige) usw. ein.', 10);
688                                 addAdminMenuSql('email', 'email_archiv', 'E-Mail Archiv', 'Sehen Sie sich hier bereits gesendete Mails an.', 6);
689
690                                 // Update notes (these will be set as task text!)
691                                 setExtensionUpdateNotes("Die Sicherheitseinstellungen, {?POINTS?}-Einstellungen und Email-Archiv funktionieren nur, wenn diese Erweiterung installiert ist.");
692                                 break;
693
694                         case '0.6.7': // SQL queries for v0.6.7
695                                 addConfigChangeSql('index_delay', 'index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
696
697                                 // Update notes (these will be set as task text!)
698                                 setExtensionUpdateNotes("Die Weiterleitungseinstellung muss auch Werte kleiner Null akzeptieren.");
699                                 break;
700
701                         case '0.6.8': // SQL queries for v0.6.8
702                                 addExtensionChangeTableColumnSql('admin_menu', 'action', 'action', 'VARCHAR(50) NOT NULL');
703                                 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(50) NULL DEFAULT NULL');
704                                 addExtensionChangeTableColumnSql('guest_menu', 'action', 'action', 'VARCHAR(50) NOT NULL');
705                                 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(50) NULL DEFAULT NULL');
706                                 addExtensionChangeTableColumnSql('member_menu', 'action', 'action', 'VARCHAR(50) NOT NULL');
707                                 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(50) NULL DEFAULT NULL');
708
709                                 // Update notes (these will be set as task text!)
710                                 setExtensionUpdateNotes("Spalten verk&uuml;rzt, damit die Schl&uuml;ssel passen.");
711                                 break;
712
713                         case '0.6.9': // SQL queries for 0.6.9
714                                 // Register filter
715                                 registerFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', FALSE, TRUE, isExtensionDryRun());
716
717                                 // Update notes (these will be set as task text!)
718                                 setExtensionUpdateNotes("Filter zum Zur&uuml;cksetzens des fehlgeschlagenen Mitgliederlogins hinzugef&uuml;gt (internes TODO).");
719                                 break;
720
721                         case '0.7.0': // SQL queries for 0.7.0
722                                 // Table definition
723                                 addDropTableSql('dns_cache');
724                                 addCreateTableSql('dns_cache', "
725 `hostname` VARCHAR(255) NOT NULL,
726 `ip` VARCHAR(15) NOT NULL,
727 `added` DATETIME NOT NULL,
728 PRIMARY KEY (`hostname`),
729 INDEX (`ip`)",
730                                         'Cache for DNS requests');
731
732                                 // Configuration
733                                 addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
734
735                                 // Register filter
736                                 registerFilter(__FILE__, __LINE__, 'reset', 'CLEANUP_DNS_CACHE', FALSE, TRUE, isExtensionDryRun());
737
738                                 // Update notes (these will be set as task text!)
739                                 setExtensionUpdateNotes("IP-Resolver-Klasse hinzugef&uuml;gt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
740                                 break;
741
742                         case '0.7.1': // SQL queries for v0.7.1
743                                 // This update just depends on ext-timezone to make integration of an essential extension much easier
744                                 addExtensionDependency('timezone');
745
746                                 // Update notes (these will be set as task text!)
747                                 setExtensionUpdateNotes("Zeitzone ist nun mit ext-timezone konfigurierbar.");
748                                 break;
749
750                         case '0.7.2': // SQL queries for v0.7.2
751                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `task_type`='MEMBER_SUPPORT' WHERE `task_type`='SUPPORT_MEMBER'");
752
753                                 // Update notes (these will be set as task text!)
754                                 setExtensionUpdateNotes("Daten an Namenskonvention angepasst.");
755                                 break;
756
757                         case '0.7.3': // SQL queries for v0.7.3
758                                 addExtensionChangeTableColumnSql('filters', 'filter_name', 'filter_name', "VARCHAR(50) NOT NULL DEFAULT ''");
759                                 addExtensionChangeTableColumnSql('filters', 'filter_function', 'filter_function', "VARCHAR(100) NOT NULL DEFAULT ''");
760
761                                 // Update notes (these will be set as task text!)
762                                 setExtensionUpdateNotes("Spalten in Filtertabelle gek&uuml;rzt (SQL-Fehler wegen zu grossem Schl&uuml;ssel).");
763                                 break;
764
765                         case '0.7.4': // SQL queries for v0.7.4
766                                 addExtensionAddTableColumnSql('pool', 'mails_sent', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
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.5': // SQL queries for v0.7.5
773                                 addConfigAddSql('last_hour', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
774
775                                 // Update notes (these will be set as task text!)
776                                 setExtensionUpdateNotes("Aktuelle Stunde hinzugef&uuml;gt (ist nicht konfigurierbar).");
777                                 break;
778
779                         case '0.7.6': // SQL queries for v0.7.6
780                                 addConfigChangeSql('last_month', 'last_month', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
781                                 addConfigChangeSql('last_week', 'last_week', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
782
783                                 // Update notes (these will be set as task text!)
784                                 setExtensionUpdateNotes("Spaltentyp fuer kleine Zahlen sollten auch z.B. TINYINT sein.");
785                                 break;
786
787                         case '0.7.7': // SQL queries for v0.7.7
788                                 addMemberMenuSql('earn', NULL, 'Verdienen', 2);
789                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='earn',`sort`=1 WHERE `what`='unconfirmed' LIMIT 1");
790
791                                 // Update notes (these will be set as task text!)
792                                 setExtensionUpdateNotes("Men&uuml;punkt <strong>Verdienen</strong> hinzugef&uuml;gt und <strong>Unbest&auml;tigte Mails</strong> als ersten Punkt dort hin verschoben.");
793                                 break;
794
795                         case '0.7.8': // SQL queries for v0.7.8
796                                 // Update notes (these will be set as task text!)
797                                 setExtensionUpdateNotes("Konfigurationseintr&auml;ge mit Spaltentyp <strong>ENUM</strong> werden nun immer komplett gross geschrieben.");
798                                 break;
799
800                         case '0.7.9': // SQL queries for v0.7.9
801                                 addExtensionSQL("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_email_max_rec' WHERE `what`='config_email' LIMIT 1");
802
803                                 // Update notes (these will be set as task text!)
804                                 setExtensionUpdateNotes("Adminscript <strong>what-config_email.php</strong> nach <strong>what-list_email_max_rec.php</strong> umbenannt.");
805                                 break;
806
807                         case '0.8.0': // SQL queries for v0.8.0
808                                 // Points account data (this table should not be dropped or else you may have to re-install a lot extensions)
809                                 addCreateTableSql('points_data', "
810 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
811 `subject` VARCHAR(255) NOT NULL DEFAULT '',
812 `column_name` VARCHAR(255) NOT NULL DEFAULT 'points',
813 `locked_mode` ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED',
814 `payment_method` ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL',
815 `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N',
816 PRIMARY KEY (`id`),
817 UNIQUE KEY (`subject`)",
818                                         'Points account data');
819
820                                 // Admin menu
821                                 addAdminMenuSql('setup', 'list_point_accounts', 'Guthabenkonten...', 'Veralten Sie hier bequem Einstellungen zu den Guthabenkonten.', 5);
822
823                                 // Update notes (these will be set as task text!)
824                                 setExtensionUpdateNotes("Tabelle <span class=\"bad\">points_data</span> erzeugt, diese soll das {?POINTS?}-Guthaben komplett lenken.");
825                                 break;
826
827                         case '0.8.1': // SQL queries for v0.8.1
828                                 addExtensionChangeTableColumnSql('refdepths', 'level', 'level', 'TINYINT(3) UNSIGNED NULL DEFAULT NULL');
829                                 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_refdepths` SET `level`=NULL WHERE `level`=0 LIMIT 1');
830
831                                 // Update notes (these will be set as task text!)
832                                 setExtensionUpdateNotes("Level 0 ist nun auch NULL.");
833                                 break;
834
835                         case '0.8.2': // SQL queries for v0.8.2
836                                 addExtensionDropTableIndexSql('points_data', 'ext_name');
837                                 addExtensionChangeTableColumnSql('points_data', 'ext_name', 'subject', "VARCHAR(255) NOT NULL DEFAULT ''");
838                                 addExtensionAddTableColumnSql('points_data', 'notify_recipient', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
839
840                                 // Register points data
841                                 registerExtensionPointsData('pool_payback', 'points', 'LOCKED', 'DIRECT');
842                                 registerExtensionPointsData('mail_deleted', 'points', 'LOCKED', 'DIRECT');
843
844                                 // Remove deprecated configuration entry
845                                 addConfigDropSql('reg_points_mode');
846
847                                 // Update notes (these will be set as task text!)
848                                 setExtensionUpdateNotes("Es sollte der Gutschriftenbetreff und nicht der Erweiterungsname gepeichert werden, zudem brauchen wir einen Konfigurationseintrag nicht mehr.");
849                                 break;
850
851                         case '0.8.3': // SQL queries for v0.8.3
852                                 addConfigAddSql('display_home_in_index', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
853
854                                 // Update notes (these will be set as task text!)
855                                 setExtensionUpdateNotes("Es kann nun die &quot;Home&quot;-Seite in <strong>index.php</strong> angezeigt werden, anstelle der Weiterleitung.");
856                                 break;
857
858                         case '0.8.4': // SQL queries for v0.8.4
859                                 addCreateTableSql('history', "
860 `history_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
861 `history_subject` VARCHAR(255) NOT NULL DEFAULT 'GENERIC',
862 `history_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
863 `history_value` VARCHAR(255) NOT NULL DEFAULT '',
864 `history_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
865 `history_last_used` TIMESTAMP NULL DEFAULT NULL,
866 PRIMARY KEY (`history_id`),
867 INDEX `userid` (`history_userid`),
868 INDEX (`history_last_used` DESC)",
869                                         'History of used data');
870
871                                 // Register filter
872                                 registerFilter(__FILE__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', FALSE, TRUE, isExtensionDryRun());
873
874                                 // Update notes (these will be set as task text!)
875                                 setExtensionUpdateNotes("Allgemeine Historie-Tabelle hinzugef&uuml;gt.");
876                                 break;
877
878                         case '0.8.5': // SQL queries for v0.8.5
879                                 // Old-lost configuration entry
880                                 addConfigDropSql('ext_autopurge');
881
882                                 // Update notes (these will be set as task text!)
883                                 setExtensionUpdateNotes("Uralten Konfigurationseintrag entfernt.");
884                                 break;
885
886                         case '0.8.6': // SQL queries for v0.8.6
887                                 addExtensionChangeTableColumnSql('points_data', 'payment_method', 'payment_method', "ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL'");
888                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_points_data` SET `payment_method`='REFERRAL' WHERE `payment_method` != 'DIRECT'");
889
890                                 // Update notes (these will be set as task text!)
891                                 setExtensionUpdateNotes("Referral/REFERRAL soll es &uuml;berall heissen (ist ein Typo nur mit einem R zu schreiben).");
892                                 break;
893
894                         case '0.8.7': // SQL queries for v0.8.7
895                                 addConfigAddSql('admin_menu_javascript', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
896
897                                 // Update notes (these will be set as task text!)
898                                 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.");
899                                 break;
900
901                         case '0.8.8': // SQL queries for v0.8.8
902                                 addExtensionDropTableIndexSql('points_data', 'subject');
903                                 addExtensionAddTableUniqueSql('points_data', 'subject', '(`subject`)');
904
905                                 // Update notes (these will be set as task text!)
906                                 setExtensionUpdateNotes("Der Wert in der Spalte <strong>subject</strong> sollte nur einmal vorkommen, damit eventuell nichts mehrfach durchfl&auuml;ft.");
907                                 break;
908
909                         case '0.8.9': // SQL queries for v0.8.9
910                                 addExtensionAddTableColumnSql('points_data', 'account_provider', "ENUM('EXTENSION', 'CUSTOM') NOT NULL DEFAULT 'EXTENSION'");
911                                 addConfigAddSql('points_remove_account', "VARCHAR(255) NOT NULL DEFAULT 'points'");
912
913                                 // Update notes (these will be set as task text!)
914                                 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.");
915                                 break;
916
917                         case '0.9.0': // SQL queries for v0.9.0
918                                 // Register filter
919                                 registerFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', FALSE, TRUE, isExtensionDryRun());
920
921                                 // Register points data
922                                 registerExtensionPointsData('admin_add_single', 'points', 'LOCKED', 'DIRECT');
923                                 registerExtensionPointsData('admin_add_single_ref', 'points', 'LOCKED', 'DIRECT');
924                                 registerExtensionPointsData('admin_add_all', 'points', 'LOCKED', 'DIRECT');
925                                 registerExtensionPointsData('admin_add_all_ref', 'points', 'LOCKED', 'DIRECT');
926
927                                 // Update notes (these will be set as task text!)
928                                 setExtensionUpdateNotes("Filter zum Initialisieren von ext-sql_patches registriert und Eintr&auml;ge in <strong>{?_MYSQL_PREFIX?}_points_data</strong> hinzugef&uuml;gt.");
929                                 break;
930
931                         case '0.9.1': // SQL queries for v0.9.1
932                                 // Add admin menu
933                                 addAdminMenuSql('misc', 'list_server_name', 'Verkehrte Domains auflisten', 'Listet alle als verkehrt erkannten Domains auf.', 4);
934
935                                 // Create table
936                                 addCreateTableSql('server_name_log', "
937 `server_name_id` BIGINT (20) NOT NULL AUTO_INCREMENT,
938 `server_name` VARCHAR (255) NOT NULL DEFAULT 'invalid',
939 `server_name_remote_addr` VARCHAR (15) NOT NULL DEFAULT '0.0.0.0',
940 `server_name_ua` TINYTEXT NULL DEFAULT NULL,
941 `server_name_referrer` TINYTEXT NULL DEFAULT NULL,
942 `server_name_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
943 `server_name_counter` BIGINT (20) NOT NULL DEFAULT 1,
944 PRIMARY KEY (`server_name_id`)
945 ", 'Logging of wrong SERVER_NAME');
946
947                                 // Update notes (these will be set as task text!)
948                                 setExtensionUpdateNotes("Loggen von falschen <strong>SERVER_NAME</strong> Eintr&auml;gen hinzugef&uuml;gt.");
949                                 break;
950
951                         case '0.9.2': // SQL queries for v0.9.2
952                                 addExtensionAddTableColumnSql('server_name_log', 'server_name_remote_addr', "VARCHAR (15) NOT NULL DEFAULT '0.0.0.0'");
953                                 addExtensionAddTableColumnSql('server_name_log', 'server_name_counter', 'BIGINT (20) NOT NULL DEFAULT 0');
954                                 addExtensionAddTableColumnSql('server_name_log', 'server_name_ua', 'TINYTEXT NULL DEFAULT NULL');
955                                 addExtensionAddTableColumnSql('server_name_log', 'server_name_referrer', 'TINYTEXT NULL DEFAULT NULL');
956
957                                 // Update notes (these will be set as task text!)
958                                 setExtensionUpdateNotes("Sorry, hatte noch IP-Nummer, User-Agent, aufrufende Seite und Z&auml;hler vergessen.");
959                                 break;
960
961                         case '0.9.3': // SQL queries for v0.9.3
962                                 addConfigAddSql('ap_server_name', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
963                                 addConfigAddSql('ap_server_name_since', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
964
965                                 // Register filter
966                                 registerFilter(__FILE__, __LINE__, 'extra_autopurge', 'SERVER_NAME_EXTRA_AUTOPURGE', FALSE, TRUE, isExtensionDryRun());
967
968                                 // Update notes (these will be set as task text!)
969                                 setExtensionUpdateNotes("Bereinigung von verkehrten <strong>SERVER_NAME</strong> Eintr&auml;gen hinzugef&uuml;gt.");
970                                 break;
971
972                         case '0.9.4': // SQL queries for v0.9.4
973                                 addAdminMenuSql('setup', 'list_referral_levels', 'Referral-Ebenen', 'Erlaubt das Auflisten, hinzuf&uuml;gen, &auml;ndern und l&ouml;schen von Referral-Ebenen. Seien Sie beim L&ouml;schen vorsichtig, da deren Id-Nummern zum Verkn&uuml;pfen verwendet werden. Sollten Sie also eine Ebene l&ouml;schen, in der Mitglieder {OPEN_CONFIG}POINTS{CLOSE_CONFIG} haben sollten, sind diese verloren.', 15);
974                                 addExtensionChangeTableColumnSql('refdepths', 'percents', 'percents', 'FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
975
976                                 // Update notes (these will be set as task text!)
977                                 setExtensionUpdateNotes("Auflisten (usw.) von Referral-Ebenen ausgelagert in eigenen Men&uuml;punkt. Referral-Prozente d&uuml;rfen nun auch 5 Stellen hinter dem Komma haben.");
978                                 break;
979
980                         case '0.9.5': // SQL queries for v0.9.5
981                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_cats' WHERE `action`='setup' AND `what`='config_cats' LIMIT 1");
982
983                                 // Update notes (these will be set as task text!)
984                                 setExtensionUpdateNotes("Men&uuml;punkt umbenannt, da &quot;config&quot; nur f&uuml;r die Konfigurationstabelle <strong>{?_MYSQL_PREFIX?}_config</strong> ist.");
985                                 break;
986
987                         case '0.9.6': // SQL queries for v0.9.6
988                                 // Register filter
989                                 registerFilter(__FILE__, __LINE__, 'determine_menu_mode', 'DETERMINE_MENU_MODE_GENERIC', FALSE, TRUE, isExtensionDryRun());
990
991                                 // Update notes (these will be set as task text!)
992                                 setExtensionUpdateNotes("Filter hinzugef&uuml;gt, der den Men&uuml;modus f&uuml;r weitere von dieser Erweiterung benutzten Module erkennen soll.");
993                                 break;
994                 } // END - switch
995                 break;
996
997         case 'modify': // When the extension got modified
998                 break;
999
1000         case 'test': // For testing purposes
1001                 break;
1002
1003         case 'init': // Do stuff when extension is initialized
1004                 break;
1005
1006         default: // Unknown extension mode
1007                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
1008                 break;
1009 } // END - switch
1010
1011 // [EOF]
1012 ?>