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