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