03aa732f60316dce51b319160b177845db0ffd7e
[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.7.9');
45
46 // Version history array (add more with , '0.1.0' and so on)
47 setExtensionVersionHistory(array('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'));
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('filters');
64                 addDropTableSql('dns_cache');
65
66                 // Delete admin menu entries
67                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE
68 `what`='config_extensions' OR
69 `what`='config_home' OR
70 `what`='list_unconfirmed' OR
71 `what`='config_refid' OR
72 `what`='config_title' OR
73 `what`='sub_points' OR
74 `what`='config_admin' OR
75 `what`='config_proxy' OR
76 `what`='config_session' OR
77 `what`='list_filter'");
78
79                 // Delete/update member menu entries
80                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE
81 `what`='stats2' OR
82 `what`='reflist' OR
83 (`action`='stats' AND (`what`='' OR `what` IS NULL)) OR
84 (`action`='extras' AND (`what`='' OR `what` IS NULL)) OR
85 (`action`='rals' AND (`what`='' OR `what` IS NULL)) OR
86 (`action`='account' AND (`what`='' OR `what` IS NULL)) OR
87 `action`='earn'");
88                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='main' WHERE
89 `action`='stats' OR
90 `action`='extras' OR
91 `action`='rals' OR
92 `action`='account'");
93
94                 // Unregister filter
95                 unregisterFilter(__FUNCTION__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', true, isExtensionDryRun());
96                 break;
97
98         case 'activate': // Do stuff when admin activates this extension
99                 // SQL commands to run
100                 addExtensionSql('');
101                 break;
102
103         case 'deactivate': // Do stuff when admin deactivates this extension
104                 // SQL commands to run
105                 addExtensionSql('');
106                 break;
107
108         case 'update': // Update an extension
109                 switch (getCurrentExtensionVersion()) {
110                         case '0.0.1': // SQL queries for v0.0.1
111                                 addConfigAddSql('ext_autopurge', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
112                                 addAdminMenuSql('setup','config_extensions','Erweitungsmanagement','Alle Einstellungen am Erweiterungsmanagement.', 10);
113
114                                 // Update notes (these will be set as task text!)
115                                 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.");
116                                 break;
117
118                         case '0.0.2': // SQL queries for v0.0.2
119                                 addConfigChangeSql('auto_purge', 'auto_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay()*14));
120
121                                 // Update notes (these will be set as task text!)
122                                 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.)");
123                                 break;
124
125                         case '0.0.3': // SQL queries for v0.0.3
126                                 addConfigAddSql('points_word', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_TEMPLATE}DEFAULT_POINTS{CLOSE_TEMPLATE}'");
127
128                                 // Update notes (these will be set as task text!)
129                                 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.");
130                                 break;
131
132                         case '0.0.4': // SQL queries for v0.0.4
133                                 addConfigAddSql('mails_page', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
134
135                                 // Update notes (these will be set as task text!)
136                                 setExtensionUpdateNotes("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugef&uuml;gt.");
137                                 break;
138
139                         case '0.0.5': // SQL queries for v0.0.5
140                                 addConfigAddSql('index_home', "VARCHAR(255) NOT NULL DEFAULT 'welcome'");
141                                 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);
142
143                                 // Update notes (these will be set as task text!)
144                                 setExtensionUpdateNotes("Die what-welcome.php ist derzeit die &quot;Home&quot;-Seite (Eingangsseite). Dies kann nun per Datenbank ge&auml;ndert werden.");
145                                 break;
146
147                         case '0.0.6': // SQL queries for v0.0.6
148                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD `ext_has_css` ENUM('Y','N') NOT NULL DEFAULT 'N'");
149
150                                 // Update notes (these will be set as task text!)
151                                 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.");
152                                 break;
153
154                         case '0.0.7': // SQL queries for v0.0.7
155                                 addConfigAddSql('verbose_sql', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
156
157                                 // Update notes (these will be set as task text!)
158                                 setExtensionUpdateNotes("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
159                                 break;
160
161                         case '0.0.8': // SQL queries for v0.0.8
162                                 addConfigAddSql('menu_blur_spacer', "VARCHAR(255) NOT NULL DEFAULT '&nbsp;<strong><big>&middot;</big></strong>&nbsp;'");
163
164                                 // Update notes (these will be set as task text!)
165                                 setExtensionUpdateNotes("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
166                                 break;
167
168                         case '0.0.9': // SQL queries for v0.0.9
169                                 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);
170
171                                 // Update notes (these will be set as task text!)
172                                 setExtensionUpdateNotes("Unbest&auml;tigte Maillinks k&ouml;nnen unter Email-Management -&gt; Unbest. Mails auflisten aufgelistet werden.");
173                                 break;
174
175                         case '0.1.0': // SQL queries for v0.1.0
176                                 addConfigAddSql('reg_points_mode', "ENUM('ref','direct') NOT NULL DEFAULT 'ref'");
177
178                                 // Update notes (these will be set as task text!)
179                                 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?");
180                                 break;
181
182                         case '0.1.1': // SQL queries for v0.1.1
183                                 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");
184                                 addConfigAddSql('index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
185                                 addConfigAddSql('index_cookie', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 365));
186
187                                 // Update notes (these will be set as task text!)
188                                 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.");
189                                 break;
190
191                         case '0.1.2': // SQL queries for v0.1.2
192                                 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);
193                                 addConfigAddSql('def_refid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
194
195                                 // Update notes (these will be set as task text!)
196                                 setExtensionUpdateNotes("Standard Referal-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
197                                 break;
198
199                         case '0.1.3': // SQL queries for v0.1.3
200                                 addConfigAddSql('refid_target', "ENUM('register','index') NOT NULL DEFAULT 'register'");
201
202                                 // Update notes (these will be set as task text!)
203                                 setExtensionUpdateNotes("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
204                                 break;
205
206                         case '0.1.4': // SQL queries for v0.1.4
207                                 // Update notes (these will be set as task text!)
208                                 setExtensionUpdateNotes("Ung&uuml;ltiges Update (nach ext-theme.php verschoben!).");
209                                 break;
210
211                         case '0.1.5': // SQL queries for v0.1.5
212                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP ext_has_admin");
213
214                                 // Update notes (these will be set as task text!)
215                                 setExtensionUpdateNotes("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{?_MYSQL_PREFIX?}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
216                                 break;
217
218                         case '0.1.6': // SQL queries for v0.1.6
219                                 addConfigAddSql('enable_title_deco', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
220                                 addConfigAddSql('title_left', "VARCHAR(10) NOT NULL DEFAULT '[--'");
221                                 addConfigAddSql('title_middle', "VARCHAR(10) NOT NULL DEFAULT '-'");
222                                 addConfigAddSql('title_right', "VARCHAR(10) NOT NULL DEFAULT '--]'");
223                                 addConfigAddSql('enable_mod_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
224                                 addConfigAddSql('enable_what_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
225                                 addAdminMenuSql('setup','config_title','Seitentitel &auml;ndern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8);
226
227                                 // Update notes (these will be set as task text!)
228                                 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.");
229                                 break;
230
231                         case '0.1.7': // SQL queries for v0.1.7
232                                 // Update notes (these will be set as task text!)
233                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
234                                 break;
235
236                         case '0.1.8': // SQL queries for v0.1.8
237                                 // Update notes (these will be set as task text!)
238                                 setExtensionUpdateNotes("mad_count und last_mad werden nun aus der Datenbank geladen");
239                                 break;
240
241                         case '0.1.9': // SQL queries for v0.1.9
242                                 // Update notes (these will be set as task text!)
243                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
244                                 break;
245
246                         case '0.2.0': // SQL queries for v0.2.0
247                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_jackpot` CHANGE `points` `points` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
248
249                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payments` CHANGE `payment` `payment` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
250                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payments` CHANGE `price` `price` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
251
252                                 // Update notes (these will be set as task text!)
253                                 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
254                                 break;
255
256                         case '0.2.1': // SQL queries for v0.2.1
257                                 addConfigAddSql('css_php', "ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
258
259                                 // Update notes (these will be set as task text!)
260                                 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
261                                 break;
262
263                         case '0.2.2': // SQL queries for v0.2.2
264                                 // Update notes (these will be set as task text!)
265                                 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
266                                 break;
267
268                         case '0.2.3': // SQL queries for v0.2.3
269                                 addConfigAddSql('guest_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
270                                 addConfigAddSql('member_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
271                                 addConfigAddSql('youre_here', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
272
273                                 // Update notes (these will be set as task text!)
274                                 setExtensionUpdateNotes("Gast- und Mitgliedsmen&uuml;s lassen sich getrennt voneinander abschalten.");
275                                 break;
276
277                         case '0.2.4': // SQL queries for v0.2.4
278                                 // PNG image is the default
279                                 $auto_type = 'png';
280
281                                 // Is the JPEG file found and required PHP function there?
282                                 if ((isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.jpg')) && function_exists('imagecreatefromjpeg')) {
283                                         // Switch to JPEG format
284                                         $auto_type = 'jpg';
285                                 } // END - if
286                                 addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
287
288                                 // Update notes (these will be set as task text!)
289                                 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.");
290                                 break;
291
292                         case '0.2.5': // SQL queries for v0.2.5
293                                 // Update notes (these will be set as task text!)
294                                 setExtensionUpdateNotes("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
295                                 break;
296
297                         case '0.2.6': // SQL queries for v0.2.6
298                                 addAdminMenuSql('user','sub_points','{OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen','Allen oder einem Mitglied {OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen.', 8);
299
300                                 // Update notes (these will be set as task text!)
301                                 setExtensionUpdateNotes("Abzug von {?POINTS?} nun m&ouml;glich.");
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}/Referal-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 KEY `ext_name` (`ext_name`)");
339                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` ADD UNIQUE KEY `login` (`login`)");
340                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refbanner` ADD INDEX `visible` (`visible`)");
341                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` ADD UNIQUE KEY `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 KEY `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 KEY) 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 INDEX (`la_id`),
378 INDEX (`la_action`),
379 INDEX (`la_what`),
380 PRIMARY KEY (`id`)
381 ) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = '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 UNIQUE KEY (`la_id`),
392 INDEX (`la_posx`),
393 INDEX (`la_posy`),
394 PRIMARY KEY (`id`)
395 ) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = '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 INDEX (`admin_id`),
419 PRIMARY KEY (`id`)
420 ) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = '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 referal
433                                 addMemberMenuSql('stats', NULL, 'Statistiken', 'Y', 'N', 4);
434                                 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 'Y', 'N', 2);
435                                 addMemberMenuSql('extras', NULL, 'Extras', 'Y', 'N', 5);
436                                 addMemberMenuSql('rals', NULL, 'Rallyes', 'Y', 'N', 6);
437                                 addMemberMenuSql('account', NULL, 'Ihr Account', 'Y', 'N', 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` MODIFY `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 `userid_level` (`userid`,`level`)');
556
557                                 // Update notes (these will be set as task text!)
558                                 setExtensionUpdateNotes("Referal-System unterst&uuml;tzt nun detailierte Referal-&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', 'N', 'Y', 5);
585
586                                 // Depends on refback extension
587                                 addExtensionDependency('refback');
588
589                                 // Update notes (these will be set as task text!)
590                                 setExtensionUpdateNotes("Ref-&Uuml;bersicht eingebaut. Diese h&auml;ngt von der Erweiterung <strong>refback</strong> ab.");
591                                 break;
592
593                         case '0.5.5': // SQL queries for v0.5.5
594                                 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
595
596                                 // Update notes (these will be set as task text!)
597                                 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbest&auml;tigten Mails kann nun optional abgeschaltet werden.");
598                                 break;
599
600                         case '0.5.6': // SQL queries for v0.5.6
601                                 // Update notes (these will be set as task text!)
602                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
603                                 break;
604
605                         case '0.5.7': // SQL queries for v0.5.7
606                                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
607
608                                 // Update notes (these will be set as task text!)
609                                 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&amp;mode=norefs verschoben.");
610                                 break;
611
612                         case '0.5.8': // SQL queries for v0.5.8
613                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_lang_file`');
614
615                                 // Update notes (these will be set as task text!)
616                                 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
617                                 break;
618
619                         case '0.5.9': // SQL queries for v0.5.9
620                                 addDropTableSql('filters');
621                                 addCreateTableSql('filters', "(
622 `filter_id` BIGINT(20) UNSIGNED AUTO_INCREMENT,
623 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
624 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
625 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
626 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
627 UNIQUE `name_function` (`filter_name` , `filter_function`),
628 PRIMARY KEY (`filter_id`)
629 ) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = 'Filter system'");
630                                 addAdminMenuSql('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und l&auml;sst diese de- bzw. wieder aktivieren.', 17);
631
632                                 // Update notes (these will be set as task text!)
633                                 setExtensionUpdateNotes("Tabellen f&uuml;r Filter-System hinzugef&uuml;gt.");
634                                 break;
635
636                         case '0.6.0': // SQL queries for v0.6.0
637                                 addConfigAddSql('update_filter_usage', "ENUM('N','Y') NOT NULL DEFAULT 'N'");
638
639                                 // Update notes (these will be set as task text!)
640                                 setExtensionUpdateNotes("Benutzungsstatistik eingebaut. Das Z&auml;hlen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
641                                 break;
642
643                         case '0.6.1': // SQL queries for v0.6.1
644                                 // Update notes (these will be set as task text!)
645                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
646                                 break;
647
648                         case '0.6.2': // SQL queries for v0.6.2
649                                 // Depends on refback extension
650                                 addExtensionDependency('user');
651
652                                 // Update notes (these will be set as task text!)
653                                 setExtensionUpdateNotes("Abh&auml;ngigkeit von <u>ext-user</u> gesetzt.");
654                                 break;
655
656                         case '0.6.3': // SQL queries for v0.6.3
657                                 // Update notes (these will be set as task text!)
658                                 setExtensionUpdateNotes("Filter-Tabelle bereinigt um doppelte Eintr&auml;ge und Unique-Key auf <em>filter_name</em> und <em>filter_function</em> zusammen gesetzt.");
659
660                                 // Add special fix include to fix filters
661                                 addIncludeToPool('extension', 'inc/fix_filters.php');
662                                 break;
663
664                         case '0.6.4': // SQL queries for v0.6.4
665                                 // Update admin menu
666                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
667                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_admin_menu` SET `descr` = REPLACE(`descr`, '!POINTS!', '?POINTS?') WHERE `descr` LIKE '%!POINTS!%'");
668                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_guest_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
669                                 addExtensionSql("UPDATE  `{?_MYSQL_PREFIX?}_member_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
670
671                                 // Update notes (these will be set as task text!)
672                                 setExtensionUpdateNotes("Datenbank umgestellt auf Konfigurationselemente.");
673                                 break;
674
675                         case '0.6.5': // SQL queries for v0.6.5
676                                 addConfigChangeSql('css_php', 'css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
677
678                                 // Update notes (these will be set as task text!)
679                                 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
680                                 break;
681
682                         case '0.6.6': // SQL queries for v0.6.6
683                                 addAdminMenuSql('setup','config_secure','Sicherheitseinstellungen','Stellen Sie ein, wie lange das Passwort eines Mitgliedes mindestens sein muss uvm.',9);
684                                 addAdminMenuSql('setup','config_points','{OPEN_CONFIG}POINTS{CLOSE_CONFIG}','Stellen Sie hier die Willkommensgutschrift, Referal-Gutschrift (einmalige) usw. ein.',10);
685                                 addAdminMenuSql('email','email_archiv','E-Mail Archiv','Sehen Sie sich hier bereits gesendete Mails an.',6);
686
687                                 // Update notes (these will be set as task text!)
688                                 setExtensionUpdateNotes("Die Sicherheitseinstellungen, {?POINTS?}-Einstellungen und Email-Archiv funktionieren nur, wenn diese Erweiterung installiert ist.");
689                                 break;
690
691                         case '0.6.7': // SQL queries for v0.6.7
692                                 addConfigChangeSql('index_delay', 'index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
693
694                                 // Update notes (these will be set as task text!)
695                                 setExtensionUpdateNotes("Die Weiterleitungseinstellung muss auch Werte kleiner Null akzeptieren.");
696                                 break;
697
698                         case '0.6.8': // SQL queries for v0.6.8
699                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
700                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
701                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
702                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
703                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
704                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
705
706                                 // Update notes (these will be set as task text!)
707                                 setExtensionUpdateNotes("Spalten verk&uuml;rzt, damit die Schl&uuml;ssel passen.");
708                                 break;
709
710                         case '0.6.9': // SQL queries for 0.6.9
711                                 // Register filter
712                                 registerFilter('member_login_check', 'RESET_USER_LOGIN_FAILURE', false, true, isExtensionDryRun());
713
714                                 // Update notes (these will be set as task text!)
715                                 setExtensionUpdateNotes("Filter zum Zur&uuml;cksetzens des fehlgeschlagenen Mitgliederlogins hinzugef&uuml;gt (internes TODO).");
716                                 break;
717
718                         case '0.7.0': // SQL queries for 0.7.0
719                                 // Table definition
720                                 addDropTableSql('dns_cache');
721                                 addCreateTableSql('dns_cache', "(
722 `hostname` VARCHAR(255) NOT NULL,
723 `ip` VARCHAR(15) NOT NULL,
724 `added` DATETIME NOT NULL,
725 PRIMARY KEY (`hostname`),
726 INDEX (`ip`)
727 ) ENGINE = {?_TABLE_TYPE?}");
728
729                                 // Configuration
730                                 addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
731
732                                 // Register filter
733                                 registerFilter('reset', 'CLEANUP_DNS_CACHE', false, true, isExtensionDryRun());
734
735                                 // Update notes (these will be set as task text!)
736                                 setExtensionUpdateNotes("IP-Resolver-Klasse hinzugef&uuml;gt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
737                                 break;
738
739                         case '0.7.1': // SQL queries for v0.7.1
740                                 // This update just depends on ext-timezone to make integration of an essential extension much easier
741                                 addExtensionDependency('timezone');
742
743                                 // Update notes (these will be set as task text!)
744                                 setExtensionUpdateNotes("Zeitzone ist nun mit ext-timezone konfigurierbar.");
745                                 break;
746
747                         case '0.7.2': // SQL queries for v0.7.2
748                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `task_type`='MEMBER_SUPPORT' WHERE `task_type`='SUPPORT_MEMBER'");
749
750                                 // Update notes (these will be set as task text!)
751                                 setExtensionUpdateNotes("Daten an Namenskonvention angepasst.");
752                                 break;
753
754                         case '0.7.3': // SQL queries for v0.7.3
755                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_filters` CHANGE `filter_name` `filter_name` VARCHAR(50) NOT NULL DEFAULT ''");
756                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_filters` CHANGE `filter_function` `filter_function` VARCHAR(100) NOT NULL DEFAULT ''");
757
758                                 // Update notes (these will be set as task text!)
759                                 setExtensionUpdateNotes("Spalten in Filtertabelle gek&uuml;rzt (SQL-Fehler wegen zu grossem Schl&uuml;ssel).");
760                                 break;
761
762                         case '0.7.4': // SQL queries for v0.7.4
763                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD `mails_sent` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
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.5': // SQL queries for v0.7.5
770                                 addConfigAddSql('last_hour', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
771
772                                 // Update notes (these will be set as task text!)
773                                 setExtensionUpdateNotes("Aktuelle Stunde hinzugef&uuml;gt (ist nicht konfigurierbar).");
774                                 break;
775
776                         case '0.7.6': // SQL queries for v0.7.6
777                                 addConfigChangeSql('last_month', 'last_month', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
778                                 addConfigChangeSql('last_week', 'last_week', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
779
780                                 // Update notes (these will be set as task text!)
781                                 setExtensionUpdateNotes("Spaltentyp fuer kleine Zahlen sollten auch z.B. TINYINT sein.");
782                                 break;
783
784                         case '0.7.7': // SQL queries for v0.7.7
785                                 addMemberMenuSql('earn', NULL, 'Verdienen', 'Y', 'N', 2);
786                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='earn', `sort`=1 WHERE `what`='unconfirmed' LIMIT 1");
787
788                                 // Update notes (these will be set as task text!)
789                                 setExtensionUpdateNotes("Men&uuml;punkt <strong>Verdienen</strong> hinzugef&uuml;gt und <strong>Unbest&auml;tigte Mails</strong> als ersten Punkt dort hin verschoben.");
790                                 break;
791
792                         case '0.7.8': // SQL queries for v0.7.8
793                                 addConfigChangeSql('reg_points_mode', 'reg_points_mode', "ENUM('REF','DIRECT') NOT NULL DEFAULT 'REFERAL'");
794
795                                 // Update notes (these will be set as task text!)
796                                 setExtensionUpdateNotes("Konfigurationseintr&auml;ge mit Spaltentyp <strong>ENUM</strong> werden nun immer komplett gross geschrieben.");
797                                 break;
798
799                         case '0.7.9': // SQL queries for v0.7.9
800                                 addExtensionSQL("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_email_max_rec' WHERE `what`='config_email' LIMIT 1");
801
802                                 // Update notes (these will be set as task text!)
803                                 setExtensionUpdateNotes("Adminscript <strong>what-config_email.php</strong> nach <strong>what-list_email_max_rec.php</strong> umbenannt.");
804                                 break;
805                 } // END - switch
806                 break;
807
808         case 'modify': // When the extension got modified
809                 break;
810
811         case 'test': // For testing purposes
812                 break;
813
814         case 'init': // Do stuff when extension is initialized
815                 // Init key
816                 setConfigEntry('secret_key', '');
817
818                 // Read key from secret file
819                 if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && ((getFileHash() == '') || (getMasterSalt() == '') || (getPassScramble() == ''))) {
820                         // Maybe need setup of secret key!
821                         loadIncludeOnce('inc/gen_sql_patches.php');
822                 } // END - if
823
824                 // Test again
825                 if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && (getFileHash() != '') && (getMasterSalt() != '') && (getPassScramble() != '')) {
826                         // File hash fas generated so we can also file the secret file... hopefully.
827                         $hashFile = sprintf("%s%s.%s.cache", getPath(), getCachePath(), getFileHash());
828                         if (isFileReadable($hashFile)) {
829                                 // Read file
830                                 setConfigEntry('secret_key', readFromFile($hashFile));
831                         } else {
832                                 // Remove it from database
833                                 updateConfiguration('file_hash', '');
834
835                                 // Cannot read secret file!
836                                 debug_report_bug(__FILE__, __LINE__, 'Cannot read secret file! Please try to reload.');
837                         }
838                 } // END - if
839
840                 // Transfer words/numbers to constants if config entry is found
841                 if (isExtensionInstalledAndNewer('sql_patches', '0.0.3')) {
842                         setConfigEntry('POINTS', getPointsWord());
843                 } // END - if
844                 break;
845
846         default: // Unknown extension mode
847                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
848                 break;
849 } // END - switch
850
851 // [EOF]
852 ?>