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