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