]> git.mxchange.org Git - mailer.git/blob - inc/extensions/ext-sql_patches.php
addCreateTableSql() is now more encapsulated
[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://www.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.1');
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'));
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 '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         'sub_points',
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                 // Unregister filter
100                 unregisterFilter(__FUNCTION__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', 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                                 addConfigAddSql('ext_autopurge', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
117                                 addAdminMenuSql('setup','config_extensions','Erweitungsmanagement','Alle Einstellungen am Erweiterungsmanagement.', 10);
118
119                                 // Update notes (these will be set as task text!)
120                                 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.");
121                                 break;
122
123                         case '0.0.2': // SQL queries for v0.0.2
124                                 addConfigChangeSql('auto_purge', 'auto_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay()*14));
125
126                                 // Update notes (these will be set as task text!)
127                                 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.)");
128                                 break;
129
130                         case '0.0.3': // SQL queries for v0.0.3
131                                 addConfigAddSql('points_word', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_TEMPLATE}DEFAULT_POINTS{CLOSE_TEMPLATE}'");
132
133                                 // Update notes (these will be set as task text!)
134                                 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.");
135                                 break;
136
137                         case '0.0.4': // SQL queries for v0.0.4
138                                 addConfigAddSql('mails_page', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
139
140                                 // Update notes (these will be set as task text!)
141                                 setExtensionUpdateNotes("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugef&uuml;gt.");
142                                 break;
143
144                         case '0.0.5': // SQL queries for v0.0.5
145                                 addConfigAddSql('index_home', "VARCHAR(255) NOT NULL DEFAULT 'welcome'");
146                                 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);
147
148                                 // Update notes (these will be set as task text!)
149                                 setExtensionUpdateNotes("Die what-welcome.php ist derzeit die &quot;Home&quot;-Seite (Eingangsseite). Dies kann nun per Datenbank ge&auml;ndert werden.");
150                                 break;
151
152                         case '0.0.6': // SQL queries for v0.0.6
153                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD `ext_has_css` ENUM('Y','N') NOT NULL DEFAULT 'N'");
154
155                                 // Update notes (these will be set as task text!)
156                                 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.");
157                                 break;
158
159                         case '0.0.7': // SQL queries for v0.0.7
160                                 addConfigAddSql('verbose_sql', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
161
162                                 // Update notes (these will be set as task text!)
163                                 setExtensionUpdateNotes("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
164                                 break;
165
166                         case '0.0.8': // SQL queries for v0.0.8
167                                 addConfigAddSql('menu_blur_spacer', "VARCHAR(255) NOT NULL DEFAULT '&nbsp;<strong><big>&middot;</big></strong>&nbsp;'");
168
169                                 // Update notes (these will be set as task text!)
170                                 setExtensionUpdateNotes("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
171                                 break;
172
173                         case '0.0.9': // SQL queries for v0.0.9
174                                 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);
175
176                                 // Update notes (these will be set as task text!)
177                                 setExtensionUpdateNotes("Unbest&auml;tigte Maillinks k&ouml;nnen unter Email-Management -&gt; Unbest. Mails auflisten aufgelistet werden.");
178                                 break;
179
180                         case '0.1.0': // SQL queries for v0.1.0
181                                 addConfigAddSql('reg_points_mode', "ENUM('ref','direct') NOT NULL DEFAULT 'ref'");
182
183                                 // Update notes (these will be set as task text!)
184                                 setExtensionUpdateNotes("Soll der einmalige Ref-Bonus &uuml;ber das Referal-System (also alle oberen Refs bekommen auch etwas davon ab) oder direkt dem Werber aufgebucht werden?");
185                                 break;
186
187                         case '0.1.1': // SQL queries for v0.1.1
188                                 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");
189                                 addConfigAddSql('index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
190                                 addConfigAddSql('index_cookie', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 365));
191
192                                 // Update notes (these will be set as task text!)
193                                 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.");
194                                 break;
195
196                         case '0.1.2': // SQL queries for v0.1.2
197                                 addAdminMenuSql('setup','config_refid','Standard-Ref-Id','Stellen Sie hier die Mitglieder-Id ein, die genommen werden soll, wenn der Gast n icht per Referal-Link Ihren {?mt_word?} aufgerufen hat.', 7);
198                                 addConfigAddSql('def_refid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
199
200                                 // Update notes (these will be set as task text!)
201                                 setExtensionUpdateNotes("Standard Referal-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
202                                 break;
203
204                         case '0.1.3': // SQL queries for v0.1.3
205                                 addConfigAddSql('refid_target', "ENUM('register','index') NOT NULL DEFAULT 'register'");
206
207                                 // Update notes (these will be set as task text!)
208                                 setExtensionUpdateNotes("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
209                                 break;
210
211                         case '0.1.4': // SQL queries for v0.1.4
212                                 // Update notes (these will be set as task text!)
213                                 setExtensionUpdateNotes("Ung&uuml;ltiges Update (nach ext-theme.php verschoben!).");
214                                 break;
215
216                         case '0.1.5': // SQL queries for v0.1.5
217                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_has_admin`");
218
219                                 // Update notes (these will be set as task text!)
220                                 setExtensionUpdateNotes("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{?_MYSQL_PREFIX?}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
221                                 break;
222
223                         case '0.1.6': // SQL queries for v0.1.6
224                                 addConfigAddSql('enable_title_deco', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
225                                 addConfigAddSql('title_left', "VARCHAR(10) NOT NULL DEFAULT '[--'");
226                                 addConfigAddSql('title_middle', "VARCHAR(10) NOT NULL DEFAULT '-'");
227                                 addConfigAddSql('title_right', "VARCHAR(10) NOT NULL DEFAULT '--]'");
228                                 addConfigAddSql('enable_mod_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
229                                 addConfigAddSql('enable_what_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
230                                 addAdminMenuSql('setup','config_title','Seitentitel &auml;ndern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8);
231
232                                 // Update notes (these will be set as task text!)
233                                 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.");
234                                 break;
235
236                         case '0.1.7': // SQL queries for v0.1.7
237                                 // Update notes (these will be set as task text!)
238                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
239                                 break;
240
241                         case '0.1.8': // SQL queries for v0.1.8
242                                 // Update notes (these will be set as task text!)
243                                 setExtensionUpdateNotes("mad_count und last_mad werden nun aus der Datenbank geladen");
244                                 break;
245
246                         case '0.1.9': // SQL queries for v0.1.9
247                                 // Update notes (these will be set as task text!)
248                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
249                                 break;
250
251                         case '0.2.0': // SQL queries for v0.2.0
252                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_jackpot` CHANGE `points` `points` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
253
254                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payments` CHANGE `payment` `payment` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
255                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payments` CHANGE `price` `price` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
256
257                                 // Update notes (these will be set as task text!)
258                                 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
259                                 break;
260
261                         case '0.2.1': // SQL queries for v0.2.1
262                                 addConfigAddSql('css_php', "ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
263
264                                 // Update notes (these will be set as task text!)
265                                 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
266                                 break;
267
268                         case '0.2.2': // SQL queries for v0.2.2
269                                 // Update notes (these will be set as task text!)
270                                 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
271                                 break;
272
273                         case '0.2.3': // SQL queries for v0.2.3
274                                 addConfigAddSql('guest_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
275                                 addConfigAddSql('member_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
276                                 addConfigAddSql('youre_here', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
277
278                                 // Update notes (these will be set as task text!)
279                                 setExtensionUpdateNotes("Gast- und Mitgliedsmen&uuml;s lassen sich getrennt voneinander abschalten.");
280                                 break;
281
282                         case '0.2.4': // SQL queries for v0.2.4
283                                 // PNG image is the default
284                                 $auto_type = 'png';
285
286                                 // Is the JPEG file found and required PHP function there?
287                                 if ((isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.jpg')) && function_exists('imagecreatefromjpeg')) {
288                                         // Switch to JPEG format
289                                         $auto_type = 'jpg';
290                                 } // END - if
291                                 addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
292
293                                 // Update notes (these will be set as task text!)
294                                 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.");
295                                 break;
296
297                         case '0.2.5': // SQL queries for v0.2.5
298                                 // Update notes (these will be set as task text!)
299                                 setExtensionUpdateNotes("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
300                                 break;
301
302                         case '0.2.6': // SQL queries for v0.2.6
303                                 addAdminMenuSql('user','sub_points','{OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen','Allen oder einem Mitglied {OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen.', 8);
304
305                                 // Update notes (these will be set as task text!)
306                                 setExtensionUpdateNotes("Abzug von {?POINTS?} nun m&ouml;glich.");
307                                 break;
308
309                         case '0.2.7': // SQL queries for v0.2.7
310                                 addConfigAddSql('stats_limit', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
311                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
312
313                                 // Update notes (these will be set as task text!)
314                                 setExtensionUpdateNotes("<ol>
315 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
316 <li>Mitgliederstatistik mit Seitennavigation.</li>
317 </ol>");
318                                 break;
319
320                         case '0.2.8': // SQL queries for v0.2.8
321                                 // Update notes (these will be set as task text!)
322                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
323                                 break;
324
325                         case '0.2.9': // SQL queries for v0.2.9
326                                 addConfigAddSql('mt_word', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
327                                 addConfigAddSql('mt_word2', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
328                                 addConfigAddSql('mt_word3', "VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
329
330                                 // Update notes (these will be set as task text!)
331                                 setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
332                                 break;
333
334                         case '0.3.0': // SQL queries for v0.3.0
335                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG}/Referal-Ebenen' WHERE `what`='config_points' LIMIT 1");
336                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailverg&uuml;tungen...' WHERE `what`='payments' LIMIT 1");
337
338                                 // Update notes (these will be set as task text!)
339                                 setExtensionUpdateNotes("Zwei Men&uuml;punkte umbenannt.");
340                                 break;
341
342                         case '0.3.1': // SQL queries for v0.3.1
343                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD UNIQUE KEY `ext_name` (`ext_name`)");
344                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` ADD UNIQUE KEY `login` (`login`)");
345                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refbanner` ADD INDEX `visible` (`visible`)");
346                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` ADD UNIQUE KEY `level` (`level`)");
347                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD INDEX `level` (`level`)");
348                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD INDEX `data_type` (`data_type`)");
349                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD UNIQUE KEY `module` (`module`)");
350                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `action` (`action`)");
351                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `what` (`what`)");
352                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_type` (`task_type`)");
353                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `status` (`status`)");
354                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_created` (`task_created`)");
355                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD FULLTEXT `subject` (`subject`)");
356                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `subject` (`subject`)");
357                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD INDEX `ext_active` (`ext_active`)");
358                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `action` (`action`)");
359                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `what` (`what`)");
360                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `sort` (`sort`)");
361                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `visible` (`visible`)");
362                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `locked` (`locked`)");
363                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `what` (`what`)");
364                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `sort` (`sort`)");
365                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `visible` (`visible`)");
366                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `locked` (`locked`)");
367                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `visible` (`visible`)");
368                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `sort` (`sort`)");
369
370                                 // Update notes (these will be set as task text!)
371                                 setExtensionUpdateNotes("Eindeutige Schl&uuml;ssel (UNIQUE KEY) und normale Schl&uuml;ssel (INDEX) gesetzt.");
372                                 break;
373
374                         case '0.3.2': // SQL queries for v0.3.2
375                                 // Connection table between the menu system and the "logical area system"
376                                 addDropTableSql('admin_menu_las');
377                                 addCreateTableSql('admin_menu_las', "
378 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
379 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
380 `la_action` VARCHAR(255) NOT NULL DEFAULT '',
381 `la_what` VARCHAR(255) NOT NULL DEFAULT '',
382 PRIMARY KEY (`id`),
383 INDEX (`la_id`),
384 INDEX (`la_action`),
385 INDEX (`la_what`)",
386                                         'Menu system -> LAS');
387
388                                 // All "logical areas" together
389                                 addDropTableSql('admin_menu_las_data');
390                                 addCreateTableSql('admin_menu_las_data', "
391 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
392 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
393 `la_title` VARCHAR(255) NOT NULL DEFAULT '',
394 `la_posx` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
395 `la_posy` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
396 PRIMARY KEY (`id`),
397 UNIQUE KEY (`la_id`),
398 INDEX (`la_posx`),
399 INDEX (`la_posy`)",
400                                         'LAS position and title data');
401
402                                 // Which menu do you like?
403                                 addConfigAddSql('admin_menu', "ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
404
405                                 // Insert menus
406                                 addAdminMenuSql('setup', 'config_admin', 'Adminmen&uuml;', 'Diverse Einstellungen am Adminmen&uuml; vornehmen.', 9);
407
408                                 // Update notes (these will be set as task text!)
409                                 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.");
410                                 break;
411
412                         case '0.3.3': // SQL queries for v0.3.3
413                                 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
414                                 addConfigAddSql('admin_menu_sorter', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
415
416                                 // The statistics table
417                                 addDropTableSql('admin_las_stats');
418                                 addCreateTableSql('admin_las_stats', "
419 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
420 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
421 `type` ENUM('la','action','what') NOT NULL DEFAULT 'what',
422 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
423 PRIMARY KEY (`id`),
424 INDEX (`admin_id`)",
425                                         'LAS click data');
426
427                                 // Update notes (these will be set as task text!)
428                                 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.");
429                                 break;
430
431                         case '0.3.4': // SQL queries for v0.3.4
432                                 // Update notes (these will be set as task text!)
433                                 setExtensionUpdateNotes("Veraltetes Update (what=list_user&amp;mode=noref)");
434                                 break;
435
436                         case '0.3.5': // SQL queries for v0.3.5
437                                 // List accounts with no referal
438                                 addMemberMenuSql('stats', NULL, 'Statistiken', 4);
439                                 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 2);
440                                 addMemberMenuSql('extras', NULL, 'Extras', 5);
441                                 addMemberMenuSql('rals', NULL, 'Rallyes', 6);
442                                 addMemberMenuSql('account', NULL, 'Ihr Account', 7);
443                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='stats', `sort`=1, `title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
444                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=3 WHERE `what`='reflinks' LIMIT 1");
445
446                                 // Update notes (these will be set as task text!)
447                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
448                                 break;
449
450                         case '0.3.6': // SQL queries for v0.3.6
451                                 addConfigAddSql('salt_length', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
452                                 addConfigAddSql('pass_scramble', "VARCHAR(255) NOT NULL DEFAULT ''");
453                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` CHANGE `password` `password` VARCHAR(255) NOT NULL DEFAULT ''");
454                                 addConfigAddSql('rand_no', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
455                                 addConfigAddSql('file_hash', "VARCHAR(255) NOT NULL DEFAULT ''");
456                                 addConfigAddSql('master_salt', "VARCHAR(255) NOT NULL DEFAULT ''");
457                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_config` SET `rand_no`=(ROUND(RAND() * 99999) + 100000) WHERE `config`=0 LIMIT 1");
458                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD `has_menu` ENUM('Y','N') NOT NULL DEFAULT 'N'");
459                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `has_menu`='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
460
461                                 // Update notes (these will be set as task text!)
462                                 setExtensionUpdateNotes("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
463                                 break;
464
465                         case '0.3.7': // SQL queries for v0.3.7
466                                 setExtensionUpdateNotes("Problem w&auml;hrend des Installationsvorganges behoben.");
467                                 break;
468
469                         case '0.3.8': // SQL queries for v0.3.8
470                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `descr` `descr` MEDIUMTEXT NULL");
471                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` CHANGE `text` `text` LONGTEXT NOT NULL");
472
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.3.9': // SQL queries for v0.3.9
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.4.0': // SQL queries for v0.4.0
483                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Email-Management' WHERE `action` = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
484
485                                 // Update notes (these will be set as task text!)
486                                 setExtensionUpdateNotes("Email-Verwaltung nach Email-Management umbenannt.");
487                                 break;
488
489                         case '0.4.1': // SQL queries for v0.4.1
490                                 addConfigAddSql('show_timings', "ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
491
492                                 // Update notes (these will be set as task text!)
493                                 setExtensionUpdateNotes("Tabellen-Schl&uuml;ssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
494                                 break;
495
496                         case '0.4.2': // SQL queries for v0.4.2
497                                 // Update notes (these will be set as task text!)
498                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
499                                 break;
500
501                         case '0.4.3': // SQL queries for v0.4.3
502                                 addConfigAddSql('proxy_host', "VARCHAR(255) NOT NULL DEFAULT ''");
503                                 addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
504                                 addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
505                                 addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
506                                 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);
507
508                                 // Update notes (these will be set as task text!)
509                                 setExtensionUpdateNotes("Proxy-Einstellungen hinzugef&uuml;gt.");
510                                 break;
511
512                         case '0.4.4': // SQL queries for v0.4.4
513                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
514                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
515                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
516                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`=NULL WHERE `what`=''");
517                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `what`=NULL WHERE `what`=''");
518                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `what`=NULL WHERE `what`=''");
519
520                                 // Make this depending on ext-menu
521                                 addExtensionDependency('menu');
522
523                                 // Update notes (these will be set as task text!)
524                                 setExtensionUpdateNotes("Schl&uuml;ssel in Admin-, Gast- und Mitgliedsmen&uuml; verbessert.");
525                                 break;
526
527                         case '0.4.5': // SQL queries for v0.4.5
528                                 addConfigAddSql('last_month', 'CHAR(2) NOT NULL DEFAULT 00');
529                                 addConfigAddSql('last_week', 'CHAR(2) NOT NULL DEFAULT 00');
530
531                                 // Update notes (these will be set as task text!)
532                                 setExtensionUpdateNotes("T&auml;glichen/w&ouml;chentlichen/monatlichen Reset verbessert.");
533                                 break;
534
535                         case '0.4.6': // SQL queries for v0.4.6
536                                 // Update notes (these will be set as task text!)
537                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
538                                 break;
539
540                         case '0.4.7': // SQL queries for v0.4.7
541                                 // Update notes (these will be set as task text!)
542                                 setExtensionUpdateNotes("Veraltetes Update.");
543                                 break;
544
545                         case '0.4.8': // SQL queries for v0.4.8
546                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX (`subject`)');
547
548                                 // Update notes (these will be set as task text!)
549                                 setExtensionUpdateNotes("Index f&uuml;r Betreff eingef&uuml;gt.");
550                                 break;
551
552                         case '0.4.9': // SQL queries for v0.4.9
553                                 // Update notes (these will be set as task text!)
554                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
555                                 break;
556
557                         case '0.5.0': // SQL queries for v0.5.0
558                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `level`');
559                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `userid`');
560                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD UNIQUE `userid_level` (`userid`,`level`)');
561
562                                 // Update notes (these will be set as task text!)
563                                 setExtensionUpdateNotes("Referal-System unterst&uuml;tzt nun detailierte Referal-&Uuml;bersicht und vieles mehr.");
564                                 break;
565
566                         case '0.5.1': // SQL queries for v0.5.1
567                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` DROP `descr`');
568
569                                 // Update notes (these will be set as task text!)
570                                 setExtensionUpdateNotes("Beschreibungsspalte von Mitgliedsmen&uuml; entfernt, welche ohnehin nicht genutzt wird.");
571                                 break;
572
573                         case '0.5.2': // SQL queries for v0.5.2
574                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` CHANGE `percents` `percents` FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
575
576                                 // Update notes (these will be set as task text!)
577                                 setExtensionUpdateNotes("Prozents&auml;tze k&ouml;nnen nun f&uuml;nf Stellen hinter dem Komma sein.");
578                                 break;
579
580                         case '0.5.3': // SQL queries for v0.5.3
581                                 addConfigAddSql('session_save_path', "VARCHAR(255) NOT NULL DEFAULT ''");
582                                 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);
583
584                                 // Update notes (these will be set as task text!)
585                                 setExtensionUpdateNotes("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com n&ouml;tig.");
586                                 break;
587
588                         case '0.5.4': // SQL queries for v0.5.4
589                                 addMemberMenuSql('main', 'reflist', 'Ref-&Uuml;bersicht', 5);
590
591                                 // Depends on refback extension
592                                 addExtensionDependency('refback');
593
594                                 // Update notes (these will be set as task text!)
595                                 setExtensionUpdateNotes("Ref-&Uuml;bersicht eingebaut. Diese h&auml;ngt von der Erweiterung <strong>refback</strong> ab.");
596                                 break;
597
598                         case '0.5.5': // SQL queries for v0.5.5
599                                 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
600
601                                 // Update notes (these will be set as task text!)
602                                 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbest&auml;tigten Mails kann nun optional abgeschaltet werden.");
603                                 break;
604
605                         case '0.5.6': // SQL queries for v0.5.6
606                                 // Update notes (these will be set as task text!)
607                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
608                                 break;
609
610                         case '0.5.7': // SQL queries for v0.5.7
611                                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
612
613                                 // Update notes (these will be set as task text!)
614                                 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&amp;mode=norefs verschoben.");
615                                 break;
616
617                         case '0.5.8': // SQL queries for v0.5.8
618                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_lang_file`');
619
620                                 // Update notes (these will be set as task text!)
621                                 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
622                                 break;
623
624                         case '0.5.9': // SQL queries for v0.5.9
625                                 // Table 'filters' is vital because many functionality depends on it, so don't remove it
626                                 addCreateTableSql('filters', "
627 `filter_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
628 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
629 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
630 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
631 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
632 PRIMARY KEY (`filter_id`),
633 UNIQUE `name_function` (`filter_name` , `filter_function`)",
634                                         'Filter system');
635
636                                 // Admin menu
637                                 addAdminMenuSql('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und l&auml;sst diese de- bzw. wieder aktivieren.', 17);
638
639                                 // Update notes (these will be set as task text!)
640                                 setExtensionUpdateNotes("Tabellen f&uuml;r Filter-System hinzugef&uuml;gt.");
641                                 break;
642
643                         case '0.6.0': // SQL queries for v0.6.0
644                                 addConfigAddSql('update_filter_usage', "ENUM('N','Y') NOT NULL DEFAULT 'N'");
645
646                                 // Update notes (these will be set as task text!)
647                                 setExtensionUpdateNotes("Benutzungsstatistik eingebaut. Das Z&auml;hlen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
648                                 break;
649
650                         case '0.6.1': // SQL queries for v0.6.1
651                                 // Update notes (these will be set as task text!)
652                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
653                                 break;
654
655                         case '0.6.2': // SQL queries for v0.6.2
656                                 // Depends on refback extension
657                                 addExtensionDependency('user');
658
659                                 // Update notes (these will be set as task text!)
660                                 setExtensionUpdateNotes("Abh&auml;ngigkeit von <u>ext-user</u> gesetzt.");
661                                 break;
662
663                         case '0.6.3': // SQL queries for v0.6.3
664                                 // Update notes (these will be set as task text!)
665                                 setExtensionUpdateNotes("Filter-Tabelle bereinigt um doppelte Eintr&auml;ge und Unique-Key auf <em>filter_name</em> und <em>filter_function</em> zusammen gesetzt.");
666
667                                 // Add special fix include to fix filters
668                                 addIncludeToPool('extension', 'inc/fix_filters.php');
669                                 break;
670
671                         case '0.6.4': // SQL queries for v0.6.4
672                                 // Update admin menu
673                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
674                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_admin_menu` SET `descr` = REPLACE(`descr`, '!POINTS!', '?POINTS?') WHERE `descr` LIKE '%!POINTS!%'");
675                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_guest_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
676                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_member_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
677
678                                 // Update notes (these will be set as task text!)
679                                 setExtensionUpdateNotes("Datenbank umgestellt auf Konfigurationselemente.");
680                                 break;
681
682                         case '0.6.5': // SQL queries for v0.6.5
683                                 addConfigChangeSql('css_php', 'css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
684
685                                 // Update notes (these will be set as task text!)
686                                 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
687                                 break;
688
689                         case '0.6.6': // SQL queries for v0.6.6
690                                 addAdminMenuSql('setup','config_secure','Sicherheitseinstellungen','Stellen Sie ein, wie lange das Passwort eines Mitgliedes mindestens sein muss uvm.',9);
691                                 addAdminMenuSql('setup','config_points','{OPEN_CONFIG}POINTS{CLOSE_CONFIG}','Stellen Sie hier die Willkommensgutschrift, Referal-Gutschrift (einmalige) usw. ein.',10);
692                                 addAdminMenuSql('email','email_archiv','E-Mail Archiv','Sehen Sie sich hier bereits gesendete Mails an.',6);
693
694                                 // Update notes (these will be set as task text!)
695                                 setExtensionUpdateNotes("Die Sicherheitseinstellungen, {?POINTS?}-Einstellungen und Email-Archiv funktionieren nur, wenn diese Erweiterung installiert ist.");
696                                 break;
697
698                         case '0.6.7': // SQL queries for v0.6.7
699                                 addConfigChangeSql('index_delay', 'index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
700
701                                 // Update notes (these will be set as task text!)
702                                 setExtensionUpdateNotes("Die Weiterleitungseinstellung muss auch Werte kleiner Null akzeptieren.");
703                                 break;
704
705                         case '0.6.8': // SQL queries for v0.6.8
706                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
707                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
708                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_guest_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?}_member_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
713                                 // Update notes (these will be set as task text!)
714                                 setExtensionUpdateNotes("Spalten verk&uuml;rzt, damit die Schl&uuml;ssel passen.");
715                                 break;
716
717                         case '0.6.9': // SQL queries for 0.6.9
718                                 // Register filter
719                                 registerFilter('member_login_check', 'RESET_USER_LOGIN_FAILURE', false, true, isExtensionDryRun());
720
721                                 // Update notes (these will be set as task text!)
722                                 setExtensionUpdateNotes("Filter zum Zur&uuml;cksetzens des fehlgeschlagenen Mitgliederlogins hinzugef&uuml;gt (internes TODO).");
723                                 break;
724
725                         case '0.7.0': // SQL queries for 0.7.0
726                                 // Table definition
727                                 addDropTableSql('dns_cache');
728                                 addCreateTableSql('dns_cache', "
729 `hostname` VARCHAR(255) NOT NULL,
730 `ip` VARCHAR(15) NOT NULL,
731 `added` DATETIME NOT NULL,
732 PRIMARY KEY (`hostname`),
733 INDEX (`ip`)",
734                                         'Cache for DNS requests');
735
736                                 // Configuration
737                                 addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
738
739                                 // Register filter
740                                 registerFilter('reset', 'CLEANUP_DNS_CACHE', false, true, isExtensionDryRun());
741
742                                 // Update notes (these will be set as task text!)
743                                 setExtensionUpdateNotes("IP-Resolver-Klasse hinzugef&uuml;gt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
744                                 break;
745
746                         case '0.7.1': // SQL queries for v0.7.1
747                                 // This update just depends on ext-timezone to make integration of an essential extension much easier
748                                 addExtensionDependency('timezone');
749
750                                 // Update notes (these will be set as task text!)
751                                 setExtensionUpdateNotes("Zeitzone ist nun mit ext-timezone konfigurierbar.");
752                                 break;
753
754                         case '0.7.2': // SQL queries for v0.7.2
755                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `task_type`='MEMBER_SUPPORT' WHERE `task_type`='SUPPORT_MEMBER'");
756
757                                 // Update notes (these will be set as task text!)
758                                 setExtensionUpdateNotes("Daten an Namenskonvention angepasst.");
759                                 break;
760
761                         case '0.7.3': // SQL queries for v0.7.3
762                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_filters` CHANGE `filter_name` `filter_name` VARCHAR(50) NOT NULL DEFAULT ''");
763                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_filters` CHANGE `filter_function` `filter_function` VARCHAR(100) NOT NULL DEFAULT ''");
764
765                                 // Update notes (these will be set as task text!)
766                                 setExtensionUpdateNotes("Spalten in Filtertabelle gek&uuml;rzt (SQL-Fehler wegen zu grossem Schl&uuml;ssel).");
767                                 break;
768
769                         case '0.7.4': // SQL queries for v0.7.4
770                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD `mails_sent` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
771
772                                 // Update notes (these will be set as task text!)
773                                 setExtensionUpdateNotes("Spalten in Filtertabelle gek&uuml;rzt (SQL-Fehler wegen zu grossem Schl&uuml;ssel).");
774                                 break;
775
776                         case '0.7.5': // SQL queries for v0.7.5
777                                 addConfigAddSql('last_hour', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
778
779                                 // Update notes (these will be set as task text!)
780                                 setExtensionUpdateNotes("Aktuelle Stunde hinzugef&uuml;gt (ist nicht konfigurierbar).");
781                                 break;
782
783                         case '0.7.6': // SQL queries for v0.7.6
784                                 addConfigChangeSql('last_month', 'last_month', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
785                                 addConfigChangeSql('last_week', 'last_week', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
786
787                                 // Update notes (these will be set as task text!)
788                                 setExtensionUpdateNotes("Spaltentyp fuer kleine Zahlen sollten auch z.B. TINYINT sein.");
789                                 break;
790
791                         case '0.7.7': // SQL queries for v0.7.7
792                                 addMemberMenuSql('earn', NULL, 'Verdienen', 2);
793                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='earn', `sort`=1 WHERE `what`='unconfirmed' LIMIT 1");
794
795                                 // Update notes (these will be set as task text!)
796                                 setExtensionUpdateNotes("Men&uuml;punkt <strong>Verdienen</strong> hinzugef&uuml;gt und <strong>Unbest&auml;tigte Mails</strong> als ersten Punkt dort hin verschoben.");
797                                 break;
798
799                         case '0.7.8': // SQL queries for v0.7.8
800                                 addConfigChangeSql('reg_points_mode', 'reg_points_mode', "ENUM('REF','DIRECT') NOT NULL DEFAULT 'REFERAL'");
801
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
815                                 addDropTableSql('points_data');
816                                 addCreateTableSql('points_data', "
817 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
818 `ext_name` VARCHAR(255) NOT NULL DEFAULT '',
819 `column_name` VARCHAR(255) NOT NULL DEFAULT 'points',
820 `locked_mode` ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED',
821 `payment_method` ENUM('DIRECT','REF') NOT NULL DEFAULT 'REF',
822 PRIMARY KEY(`id`),
823 INDEX (`ext_name`)",
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 <em>points_data</em> erzeugt, diese soll das {?POINTS?}-Guthaben komplett lenken.");
831                                 break;
832
833                         case '0.8.1': // SQL queries for v0.8.1
834                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` CHANGE `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                 } // END - switch
841                 break;
842
843         case 'modify': // When the extension got modified
844                 break;
845
846         case 'test': // For testing purposes
847                 break;
848
849         case 'init': // Do stuff when extension is initialized
850                 // Init key
851                 setConfigEntry('secret_key', '');
852
853                 // Read key from secret file
854                 if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && ((getFileHash() == '') || (getMasterSalt() == '') || (getPassScramble() == ''))) {
855                         // Maybe need setup of secret key!
856                         loadIncludeOnce('inc/gen_sql_patches.php');
857                 } // END - if
858
859                 // Test again
860                 if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && (getFileHash() != '') && (getMasterSalt() != '') && (getPassScramble() != '')) {
861                         // File hash fas generated so we can also file the secret file... hopefully.
862                         $hashFile = sprintf("%s%s.%s.cache", getPath(), getCachePath(), getFileHash());
863                         if (isFileReadable($hashFile)) {
864                                 // Read file
865                                 setConfigEntry('secret_key', readFromFile($hashFile));
866                         } else {
867                                 // Remove it from database
868                                 updateConfiguration('file_hash', '');
869
870                                 // Cannot read secret file!
871                                 debug_report_bug(__FILE__, __LINE__, 'Cannot read secret file! Please try to reload.');
872                         }
873                 } // END - if
874
875                 // Transfer words/numbers to constants if config entry is found
876                 if (isExtensionInstalledAndNewer('sql_patches', '0.0.3')) {
877                         setConfigEntry('POINTS', getPointsWord());
878                 } // END - if
879                 break;
880
881         default: // Unknown extension mode
882                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
883                 break;
884 } // END - switch
885
886 // [EOF]
887 ?>