b6b738dffbb20d8897c5f82600da5966447e8089
[mailer.git] / inc / extensions / ext-sql_patches.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 08/21/2004 *
4  * ===================                          Last change: 12/04/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-sql_patches.php                              *
8  * -------------------------------------------------------------------- *
9  * Short description : SQL fixes for pro versions                       *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Ausgelagertes "Profildaten aendern"              *
12  * -------------------------------------------------------------------- *
13  * $Revision::                                                        $ *
14  * $Date::                                                            $ *
15  * $Tag:: 0.2.1-FINAL                                                 $ *
16  * $Author::                                                          $ *
17  * -------------------------------------------------------------------- *
18  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
19  * Copyright (c) 2009 - 2011 by Mailer Developer Team                   *
20  * For more information visit: http://www.mxchange.org                  *
21  *                                                                      *
22  * This program is free software; you can redistribute it and/or modify *
23  * it under the terms of the GNU General Public License as published by *
24  * the Free Software Foundation; either version 2 of the License, or    *
25  * (at your option) any later version.                                  *
26  *                                                                      *
27  * This program is distributed in the hope that it will be useful,      *
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
30  * GNU General Public License for more details.                         *
31  *                                                                      *
32  * You should have received a copy of the GNU General Public License    *
33  * along with this program; if not, write to the Free Software          *
34  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
35  * MA  02110-1301  USA                                                  *
36  ************************************************************************/
37
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
40         die();
41 } // END - if
42
43 // Version number
44 setThisExtensionVersion('0.8.5');
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'));
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         'list_earnings'
82 )");
83
84                 // Delete/update member menu entries
85                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE
86 `what`='stats2' OR
87 `what`='reflist' OR
88 (`action`='stats' AND (`what`='' OR `what` IS NULL)) OR
89 (`action`='extras' AND (`what`='' OR `what` IS NULL)) OR
90 (`action`='rals' AND (`what`='' OR `what` IS NULL)) OR
91 (`action`='account' AND (`what`='' OR `what` IS NULL)) OR
92 `action`='earn'");
93                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='main' WHERE
94 `action`='stats' OR
95 `action`='extras' OR
96 `action`='rals' OR
97 `action`='account'");
98
99                 // Unregister filter
100                 unregisterFilter(__FUNCTION__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', true, isExtensionDryRun());
101                 unregisterFilter(__FUNCTION__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', true, isExtensionDryRun());
102                 break;
103
104         case 'activate': // Do stuff when admin activates this extension
105                 // SQL commands to run
106                 addExtensionSql('');
107                 break;
108
109         case 'deactivate': // Do stuff when admin deactivates this extension
110                 // SQL commands to run
111                 addExtensionSql('');
112                 break;
113
114         case 'update': // Update an extension
115                 switch (getCurrentExtensionVersion()) {
116                         case '0.0.1': // SQL queries for v0.0.1
117                                 addAdminMenuSql('setup', 'config_extensions', 'Erweitungsmanagement', 'Alle Einstellungen am Erweiterungsmanagement.', 10);
118
119                                 // Update notes (these will be set as task text!)
120                                 setExtensionUpdateNotes("Es kann nun bestimmt werden, ob vom Server gel&ouml;schte ext-xxx.php erkannt werden sollen und die verkn&uuml;pften Daten auch aus der Datenbank entfernt werden sollen.");
121                                 break;
122
123                         case '0.0.2': // SQL queries for v0.0.2
124                                 addConfigChangeSql('auto_purge', 'auto_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay()*14));
125
126                                 // Update notes (these will be set as task text!)
127                                 setExtensionUpdateNotes("In der Tabelle <strong>{?_MYSQL_PREFIX?}_config</strong> musste die Spalte <strong>auto_purge</strong> (autom. L&ouml;schen von Best&auml;tigungsmails angepasst werden (war auf dem Testsystem auf TINYINT(4) gesetzt.)");
128                                 break;
129
130                         case '0.0.3': // SQL queries for v0.0.3
131                                 addConfigAddSql('points_word', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_TEMPLATE}DEFAULT_POINTS{CLOSE_TEMPLATE}'");
132
133                                 // Update notes (these will be set as task text!)
134                                 setExtensionUpdateNotes("Das Wort &quot;Punkte&quot; kann nun per Datenbank ge&auml;ndert werden. Damit k&ouml;nnen Sie anstelle des Wortes Punkte auch Klammlose, Wernis, Primera oder &euro; schreiben.");
135                                 break;
136
137                         case '0.0.4': // SQL queries for v0.0.4
138                                 addConfigAddSql('mails_page', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
139
140                                 // Update notes (these will be set as task text!)
141                                 setExtensionUpdateNotes("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugef&uuml;gt.");
142                                 break;
143
144                         case '0.0.5': // SQL queries for v0.0.5
145                                 addConfigAddSql('index_home', "VARCHAR(255) NOT NULL DEFAULT 'welcome'");
146                                 addAdminMenuSql('setup','config_home','Home-Seite festlegen','Stellen Sie hier ein, welcher Men&uuml;punkt (what-welcome ist Standard) als Einstiegspunkt in das Men&uuml;system genutzt werden soll.', 5);
147
148                                 // Update notes (these will be set as task text!)
149                                 setExtensionUpdateNotes("Die what-welcome.php ist derzeit die &quot;Home&quot;-Seite (Eingangsseite). Dies kann nun per Datenbank ge&auml;ndert werden.");
150                                 break;
151
152                         case '0.0.6': // SQL queries for v0.0.6
153                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD `ext_has_css` ENUM('Y','N') NOT NULL DEFAULT 'N'");
154
155                                 // Update notes (these will be set as task text!)
156                                 setExtensionUpdateNotes("Es k&ouml;nnen nun SQL-Updates von einander abh&auml;ngig gemacht werden und die CSS-Datei kann per Admin-Bereich (wegen Debuggings) ein- bzw. ausgeschaltet werden.");
157                                 break;
158
159                         case '0.0.7': // SQL queries for v0.0.7
160                                 addConfigAddSql('verbose_sql', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
161
162                                 // Update notes (these will be set as task text!)
163                                 setExtensionUpdateNotes("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
164                                 break;
165
166                         case '0.0.8': // SQL queries for v0.0.8
167                                 addConfigAddSql('menu_blur_spacer', "VARCHAR(255) NOT NULL DEFAULT '&nbsp;<strong><big>&middot;</big></strong>&nbsp;'");
168
169                                 // Update notes (these will be set as task text!)
170                                 setExtensionUpdateNotes("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
171                                 break;
172
173                         case '0.0.9': // SQL queries for v0.0.9
174                                 addAdminMenuSql('email','list_unconfirmed','Unbest. Mails auflisten','Schauen Sie sich hier unbest&auml;tigte Maillinks an. Bitte diesen Link nur &uuml;ber dem EMail-Archiv oder EMail-Details aufrufen, direkt aufgerufen bekommen Sie eine Fehlermeldung.', 8);
175
176                                 // Update notes (these will be set as task text!)
177                                 setExtensionUpdateNotes("Unbest&auml;tigte Maillinks k&ouml;nnen unter Email-Management -&gt; Unbest. Mails auflisten aufgelistet werden.");
178                                 break;
179
180                         case '0.1.0': // SQL queries for v0.1.0
181                                 // Update notes (these will be set as task text!)
182                                 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?");
183                                 break;
184
185                         case '0.1.1': // SQL queries for v0.1.1
186                                 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");
187                                 addConfigAddSql('index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
188                                 addConfigAddSql('index_cookie', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 365));
189
190                                 // Update notes (these will be set as task text!)
191                                 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.");
192                                 break;
193
194                         case '0.1.2': // SQL queries for v0.1.2
195                                 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);
196                                 addConfigAddSql('def_refid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
197
198                                 // Update notes (these will be set as task text!)
199                                 setExtensionUpdateNotes("Standard Referal-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
200                                 break;
201
202                         case '0.1.3': // SQL queries for v0.1.3
203                                 addConfigAddSql('refid_target', "ENUM('register','index') NOT NULL DEFAULT 'register'");
204
205                                 // Update notes (these will be set as task text!)
206                                 setExtensionUpdateNotes("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
207                                 break;
208
209                         case '0.1.4': // SQL queries for v0.1.4
210                                 // Update notes (these will be set as task text!)
211                                 setExtensionUpdateNotes("Ung&uuml;ltiges Update (nach ext-theme.php verschoben!).");
212                                 break;
213
214                         case '0.1.5': // SQL queries for v0.1.5
215                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_has_admin`");
216
217                                 // Update notes (these will be set as task text!)
218                                 setExtensionUpdateNotes("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{?_MYSQL_PREFIX?}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
219                                 break;
220
221                         case '0.1.6': // SQL queries for v0.1.6
222                                 addConfigAddSql('enable_title_deco', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
223                                 addConfigAddSql('title_left', "VARCHAR(10) NOT NULL DEFAULT '[--'");
224                                 addConfigAddSql('title_middle', "VARCHAR(10) NOT NULL DEFAULT '-'");
225                                 addConfigAddSql('title_right', "VARCHAR(10) NOT NULL DEFAULT '--]'");
226                                 addConfigAddSql('enable_mod_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
227                                 addConfigAddSql('enable_what_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
228                                 addAdminMenuSql('setup','config_title','Seitentitel &auml;ndern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8);
229
230                                 // Update notes (these will be set as task text!)
231                                 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.");
232                                 break;
233
234                         case '0.1.7': // SQL queries for v0.1.7
235                                 // Update notes (these will be set as task text!)
236                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
237                                 break;
238
239                         case '0.1.8': // SQL queries for v0.1.8
240                                 // Update notes (these will be set as task text!)
241                                 setExtensionUpdateNotes("mad_count und last_mad werden nun aus der Datenbank geladen");
242                                 break;
243
244                         case '0.1.9': // SQL queries for v0.1.9
245                                 // Update notes (these will be set as task text!)
246                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
247                                 break;
248
249                         case '0.2.0': // SQL queries for v0.2.0
250                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_jackpot` CHANGE `points` `points` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
251
252                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payments` CHANGE `payment` `payment` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
253                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payments` CHANGE `price` `price` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
254
255                                 // Update notes (these will be set as task text!)
256                                 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
257                                 break;
258
259                         case '0.2.1': // SQL queries for v0.2.1
260                                 addConfigAddSql('css_php', "ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
261
262                                 // Update notes (these will be set as task text!)
263                                 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
264                                 break;
265
266                         case '0.2.2': // SQL queries for v0.2.2
267                                 // Update notes (these will be set as task text!)
268                                 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
269                                 break;
270
271                         case '0.2.3': // SQL queries for v0.2.3
272                                 addConfigAddSql('guest_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
273                                 addConfigAddSql('member_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
274                                 addConfigAddSql('youre_here', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
275
276                                 // Update notes (these will be set as task text!)
277                                 setExtensionUpdateNotes("Gast- und Mitgliedsmen&uuml;s lassen sich getrennt voneinander abschalten.");
278                                 break;
279
280                         case '0.2.4': // SQL queries for v0.2.4
281                                 // PNG image is the default
282                                 $auto_type = 'png';
283
284                                 // Is the JPEG file found and required PHP function there?
285                                 if ((isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.jpg')) && function_exists('imagecreatefromjpeg')) {
286                                         // Switch to JPEG format
287                                         $auto_type = 'jpg';
288                                 } // END - if
289                                 addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
290
291                                 // Update notes (these will be set as task text!)
292                                 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.");
293                                 break;
294
295                         case '0.2.5': // SQL queries for v0.2.5
296                                 // Update notes (these will be set as task text!)
297                                 setExtensionUpdateNotes("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
298                                 break;
299
300                         case '0.2.6': // SQL queries for v0.2.6
301                                 // Update notes (these will be set as task text!)
302                                 setExtensionUpdateNotes("Verschoben nach <strong>ext-user</strong>.");
303                                 break;
304
305                         case '0.2.7': // SQL queries for v0.2.7
306                                 addConfigAddSql('stats_limit', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
307                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
308
309                                 // Update notes (these will be set as task text!)
310                                 setExtensionUpdateNotes("<ol>
311 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
312 <li>Mitgliederstatistik mit Seitennavigation.</li>
313 </ol>");
314                                 break;
315
316                         case '0.2.8': // SQL queries for v0.2.8
317                                 // Update notes (these will be set as task text!)
318                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
319                                 break;
320
321                         case '0.2.9': // SQL queries for v0.2.9
322                                 addConfigAddSql('mt_word', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
323                                 addConfigAddSql('mt_word2', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
324                                 addConfigAddSql('mt_word3', "VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
325
326                                 // Update notes (these will be set as task text!)
327                                 setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
328                                 break;
329
330                         case '0.3.0': // SQL queries for v0.3.0
331                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG}/Referal-Ebenen' WHERE `what`='config_points' LIMIT 1");
332                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailverg&uuml;tungen...' WHERE `what`='payments' LIMIT 1");
333
334                                 // Update notes (these will be set as task text!)
335                                 setExtensionUpdateNotes("Zwei Men&uuml;punkte umbenannt.");
336                                 break;
337
338                         case '0.3.1': // SQL queries for v0.3.1
339                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD UNIQUE `ext_name` (`ext_name`)");
340                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` ADD UNIQUE `login` (`login`)");
341                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refbanner` ADD INDEX `visible` (`visible`)");
342                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` ADD UNIQUE `level` (`level`)");
343                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD INDEX `level` (`level`)");
344                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD INDEX `data_type` (`data_type`)");
345                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD UNIQUE `module` (`module`)");
346                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `action` (`action`)");
347                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `what` (`what`)");
348                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_type` (`task_type`)");
349                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `status` (`status`)");
350                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_created` (`task_created`)");
351                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD FULLTEXT `subject` (`subject`)");
352                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `subject` (`subject`)");
353                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD INDEX `ext_active` (`ext_active`)");
354                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `action` (`action`)");
355                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `what` (`what`)");
356                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `sort` (`sort`)");
357                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `visible` (`visible`)");
358                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `locked` (`locked`)");
359                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `what` (`what`)");
360                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `sort` (`sort`)");
361                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `visible` (`visible`)");
362                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `locked` (`locked`)");
363                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `visible` (`visible`)");
364                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `sort` (`sort`)");
365
366                                 // Update notes (these will be set as task text!)
367                                 setExtensionUpdateNotes("Eindeutige Schl&uuml;ssel (UNIQUE) und normale Schl&uuml;ssel (INDEX) gesetzt.");
368                                 break;
369
370                         case '0.3.2': // SQL queries for v0.3.2
371                                 // Connection table between the menu system and the "logical area system"
372                                 addDropTableSql('admin_menu_las');
373                                 addCreateTableSql('admin_menu_las', "
374 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
375 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
376 `la_action` VARCHAR(255) NOT NULL DEFAULT '',
377 `la_what` VARCHAR(255) NOT NULL DEFAULT '',
378 PRIMARY KEY (`id`),
379 INDEX (`la_id`),
380 INDEX (`la_action`),
381 INDEX (`la_what`)",
382                                         'Menu system -> LAS');
383
384                                 // All "logical areas" together
385                                 addDropTableSql('admin_menu_las_data');
386                                 addCreateTableSql('admin_menu_las_data', "
387 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
388 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
389 `la_title` VARCHAR(255) NOT NULL DEFAULT '',
390 `la_posx` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
391 `la_posy` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
392 PRIMARY KEY (`id`),
393 UNIQUE (`la_id`),
394 INDEX (`la_posx`),
395 INDEX (`la_posy`)",
396                                         'LAS position and title data');
397
398                                 // Which menu do you like?
399                                 addConfigAddSql('admin_menu', "ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
400
401                                 // Insert menus
402                                 addAdminMenuSql('setup', 'config_admin', 'Adminmen&uuml;', 'Diverse Einstellungen am Adminmen&uuml; vornehmen.', 9);
403
404                                 // Update notes (these will be set as task text!)
405                                 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.");
406                                 break;
407
408                         case '0.3.3': // SQL queries for v0.3.3
409                                 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
410                                 addConfigAddSql('admin_menu_sorter', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
411
412                                 // The statistics table
413                                 addDropTableSql('admin_las_stats');
414                                 addCreateTableSql('admin_las_stats', "
415 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
416 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
417 `type` ENUM('la','action','what') NOT NULL DEFAULT 'what',
418 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
419 PRIMARY KEY (`id`),
420 INDEX (`admin_id`)",
421                                         'LAS click data');
422
423                                 // Update notes (these will be set as task text!)
424                                 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.");
425                                 break;
426
427                         case '0.3.4': // SQL queries for v0.3.4
428                                 // Update notes (these will be set as task text!)
429                                 setExtensionUpdateNotes("Veraltetes Update (what=list_user&amp;mode=noref)");
430                                 break;
431
432                         case '0.3.5': // SQL queries for v0.3.5
433                                 // List accounts with no referal
434                                 addMemberMenuSql('stats', NULL, 'Statistiken', 4);
435                                 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 2);
436                                 addMemberMenuSql('extras', NULL, 'Extras', 5);
437                                 addMemberMenuSql('rals', NULL, 'Rallyes', 6);
438                                 addMemberMenuSql('account', NULL, 'Ihr Account', 7);
439                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='stats', `sort`=1, `title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
440                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=3 WHERE `what`='reflinks' LIMIT 1");
441
442                                 // Update notes (these will be set as task text!)
443                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
444                                 break;
445
446                         case '0.3.6': // SQL queries for v0.3.6
447                                 addConfigAddSql('salt_length', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
448                                 addConfigAddSql('pass_scramble', "VARCHAR(255) NOT NULL DEFAULT ''");
449                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` CHANGE `password` `password` VARCHAR(255) NOT NULL DEFAULT ''");
450                                 addConfigAddSql('rand_no', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
451                                 addConfigAddSql('file_hash', "VARCHAR(255) NOT NULL DEFAULT ''");
452                                 addConfigAddSql('master_salt', "VARCHAR(255) NOT NULL DEFAULT ''");
453                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_config` SET `rand_no`=(ROUND(RAND() * 99999) + 100000) WHERE `config`=0 LIMIT 1");
454                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD `has_menu` ENUM('Y','N') NOT NULL DEFAULT 'N'");
455                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `has_menu`='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
456
457                                 // Update notes (these will be set as task text!)
458                                 setExtensionUpdateNotes("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
459                                 break;
460
461                         case '0.3.7': // SQL queries for v0.3.7
462                                 setExtensionUpdateNotes("Problem w&auml;hrend des Installationsvorganges behoben.");
463                                 break;
464
465                         case '0.3.8': // SQL queries for v0.3.8
466                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `descr` `descr` MEDIUMTEXT NULL");
467                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` CHANGE `text` `text` LONGTEXT NOT NULL");
468
469                                 // Update notes (these will be set as task text!)
470                                 setExtensionUpdateNotes("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
471                                 break;
472
473                         case '0.3.9': // SQL queries for v0.3.9
474                                 // Update notes (these will be set as task text!)
475                                 setExtensionUpdateNotes("Beschreibungstexte f&uuml;r Admin-Men&uuml;s k&ouml;nnen l&auml;nger sein. Diverse Fixes.");
476                                 break;
477
478                         case '0.4.0': // SQL queries for v0.4.0
479                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Email-Management' WHERE `action` = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
480
481                                 // Update notes (these will be set as task text!)
482                                 setExtensionUpdateNotes("Email-Verwaltung nach Email-Management umbenannt.");
483                                 break;
484
485                         case '0.4.1': // SQL queries for v0.4.1
486                                 addConfigAddSql('show_timings', "ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
487
488                                 // Update notes (these will be set as task text!)
489                                 setExtensionUpdateNotes("Tabellen-Schl&uuml;ssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
490                                 break;
491
492                         case '0.4.2': // SQL queries for v0.4.2
493                                 // Update notes (these will be set as task text!)
494                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
495                                 break;
496
497                         case '0.4.3': // SQL queries for v0.4.3
498                                 addConfigAddSql('proxy_host', "VARCHAR(255) NOT NULL DEFAULT ''");
499                                 addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
500                                 addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
501                                 addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
502                                 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);
503
504                                 // Update notes (these will be set as task text!)
505                                 setExtensionUpdateNotes("Proxy-Einstellungen hinzugef&uuml;gt.");
506                                 break;
507
508                         case '0.4.4': // SQL queries for v0.4.4
509                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
510                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
511                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
512                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`=NULL WHERE `what`=''");
513                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `what`=NULL WHERE `what`=''");
514                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `what`=NULL WHERE `what`=''");
515
516                                 // Make this depending on ext-menu
517                                 addExtensionDependency('menu');
518
519                                 // Update notes (these will be set as task text!)
520                                 setExtensionUpdateNotes("Schl&uuml;ssel in Admin-, Gast- und Mitgliedsmen&uuml; verbessert.");
521                                 break;
522
523                         case '0.4.5': // SQL queries for v0.4.5
524                                 addConfigAddSql('last_month', 'CHAR(2) NOT NULL DEFAULT 00');
525                                 addConfigAddSql('last_week', 'CHAR(2) NOT NULL DEFAULT 00');
526
527                                 // Update notes (these will be set as task text!)
528                                 setExtensionUpdateNotes("T&auml;glichen/w&ouml;chentlichen/monatlichen Reset verbessert.");
529                                 break;
530
531                         case '0.4.6': // SQL queries for v0.4.6
532                                 // Update notes (these will be set as task text!)
533                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
534                                 break;
535
536                         case '0.4.7': // SQL queries for v0.4.7
537                                 // Update notes (these will be set as task text!)
538                                 setExtensionUpdateNotes("Veraltetes Update.");
539                                 break;
540
541                         case '0.4.8': // SQL queries for v0.4.8
542                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX (`subject`)');
543
544                                 // Update notes (these will be set as task text!)
545                                 setExtensionUpdateNotes("Index f&uuml;r Betreff eingef&uuml;gt.");
546                                 break;
547
548                         case '0.4.9': // SQL queries for v0.4.9
549                                 // Update notes (these will be set as task text!)
550                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
551                                 break;
552
553                         case '0.5.0': // SQL queries for v0.5.0
554                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `level`');
555                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `userid`');
556                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD UNIQUE `userid_level` (`userid`,`level`)');
557
558                                 // Update notes (these will be set as task text!)
559                                 setExtensionUpdateNotes("Referal-System unterst&uuml;tzt nun detailierte Referal-&Uuml;bersicht und vieles mehr.");
560                                 break;
561
562                         case '0.5.1': // SQL queries for v0.5.1
563                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` DROP `descr`');
564
565                                 // Update notes (these will be set as task text!)
566                                 setExtensionUpdateNotes("Beschreibungsspalte von Mitgliedsmen&uuml; entfernt, welche ohnehin nicht genutzt wird.");
567                                 break;
568
569                         case '0.5.2': // SQL queries for v0.5.2
570                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` CHANGE `percents` `percents` FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
571
572                                 // Update notes (these will be set as task text!)
573                                 setExtensionUpdateNotes("Prozents&auml;tze k&ouml;nnen nun f&uuml;nf Stellen hinter dem Komma sein.");
574                                 break;
575
576                         case '0.5.3': // SQL queries for v0.5.3
577                                 addConfigAddSql('session_save_path', "VARCHAR(255) NOT NULL DEFAULT ''");
578                                 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);
579
580                                 // Update notes (these will be set as task text!)
581                                 setExtensionUpdateNotes("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com n&ouml;tig.");
582                                 break;
583
584                         case '0.5.4': // SQL queries for v0.5.4
585                                 addMemberMenuSql('main', 'reflist', 'Ref-&Uuml;bersicht', 5);
586
587                                 // Update notes (these will be set as task text!)
588                                 setExtensionUpdateNotes("Ref-&Uuml;bersicht eingebaut. Diese h&auml;ngt von der Erweiterung <strong>refback</strong> ab.");
589                                 break;
590
591                         case '0.5.5': // SQL queries for v0.5.5
592                                 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
593
594                                 // Update notes (these will be set as task text!)
595                                 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbest&auml;tigten Mails kann nun optional abgeschaltet werden.");
596                                 break;
597
598                         case '0.5.6': // SQL queries for v0.5.6
599                                 // Update notes (these will be set as task text!)
600                                 setExtensionUpdateNotes("Nicht mehr g&uuml;ltiges Update.");
601                                 break;
602
603                         case '0.5.7': // SQL queries for v0.5.7
604                                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
605
606                                 // Update notes (these will be set as task text!)
607                                 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&amp;mode=norefs verschoben.");
608                                 break;
609
610                         case '0.5.8': // SQL queries for v0.5.8
611                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_lang_file`');
612
613                                 // Update notes (these will be set as task text!)
614                                 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
615                                 break;
616
617                         case '0.5.9': // SQL queries for v0.5.9
618                                 // Table 'filters' is vital because many functionality depends on it, so don't remove it
619                                 addCreateTableSql('filters', "
620 `filter_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
621 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
622 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
623 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
624 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
625 PRIMARY KEY (`filter_id`),
626 UNIQUE `name_function` (`filter_name` , `filter_function`)",
627                                         'Filter system');
628
629                                 // Admin menu
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                                         'Cache for DNS requests');
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', 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                                 // Update notes (these will be set as task text!)
794                                 setExtensionUpdateNotes("Konfigurationseintr&auml;ge mit Spaltentyp <strong>ENUM</strong> werden nun immer komplett gross geschrieben.");
795                                 break;
796
797                         case '0.7.9': // SQL queries for v0.7.9
798                                 addExtensionSQL("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_email_max_rec' WHERE `what`='config_email' LIMIT 1");
799
800                                 // Update notes (these will be set as task text!)
801                                 setExtensionUpdateNotes("Adminscript <strong>what-config_email.php</strong> nach <strong>what-list_email_max_rec.php</strong> umbenannt.");
802                                 break;
803
804                         case '0.8.0': // SQL queries for v0.8.0
805                                 // Points account data (this table should not be dropped or else you may have to re-install a lot extensions)
806                                 addCreateTableSql('points_data', "
807 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
808 `subject` VARCHAR(255) NOT NULL DEFAULT '',
809 `column_name` VARCHAR(255) NOT NULL DEFAULT 'points',
810 `locked_mode` ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED',
811 `payment_method` ENUM('DIRECT','REFERAL') NOT NULL DEFAULT 'REFERAL',
812 `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N',
813 PRIMARY KEY (`id`),
814 INDEX (`subject`)",
815                                         'Points account data');
816
817                                 // Admin menu
818                                 addAdminMenuSql('setup', 'list_point_accounts', 'Guthabenkonten...', 'Veralten Sie hier bequem Einstellungen zu den Guthabenkonten.', 5);
819
820                                 // Update notes (these will be set as task text!)
821                                 setExtensionUpdateNotes("Tabelle <em>points_data</em> erzeugt, diese soll das {?POINTS?}-Guthaben komplett lenken.");
822                                 break;
823
824                         case '0.8.1': // SQL queries for v0.8.1
825                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` CHANGE `level` `level` TINYINT(3) UNSIGNED NULL DEFAULT NULL');
826                                 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_refdepths` SET `level`=NULL WHERE `level`=0 LIMIT 1');
827
828                                 // Update notes (these will be set as task text!)
829                                 setExtensionUpdateNotes("Level 0 ist nun auch NULL.");
830                                 break;
831
832                         case '0.8.2': // SQL queries for v0.8.2
833                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` DROP INDEX `ext_name`");
834                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` CHANGE `ext_name` `subject` VARCHAR(255) NOT NULL DEFAULT ''");
835                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` CHANGE `payment_method` `payment_method` ENUM('DIRECT','REFERAL') NOT NULL DEFAULT 'REFERAL'");
836                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD INDEX `subject` (`subject`)");
837                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N'");
838                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('pool_payback','points','LOCKED','DIRECT')");
839                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('mail_deleted','points','LOCKED','DIRECT')");
840                                 addConfigDropSql('reg_points_mode');
841
842                                 // Update notes (these will be set as task text!)
843                                 setExtensionUpdateNotes("Es sollte der Gutschriftenbetreff und nicht der Erweiterungsname gepeichert werden, zudem brauchen wir einen Konfigurationseintrag nicht mehr.");
844                                 break;
845
846                         case '0.8.3': // SQL queries for v0.8.3
847                                 addConfigAddSql('display_home_in_index', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
848
849                                 // Update notes (these will be set as task text!)
850                                 setExtensionUpdateNotes("Es kann nun die &quot;Home&quot;-Seite in <strong>index.php</strong> angezeigt werden, anstelle der Weiterleitung.");
851                                 break;
852
853                         case '0.8.4': // SQL queries for v0.8.4
854                                 addCreateTableSql('history', "
855 `history_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
856 `history_subject` VARCHAR(255) NOT NULL DEFAULT 'GENERIC',
857 `history_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
858 `history_value` VARCHAR(255) NOT NULL DEFAULT '',
859 `history_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
860 `history_last_used` TIMESTAMP NULL DEFAULT NULL,
861 PRIMARY KEY (`history_id`),
862 INDEX `userid` (`history_userid`),
863 INDEX (`history_last_used` DESC)",
864                                         'History of used data');
865
866                                 // Register filter
867                                 registerFilter('add_history_entry', 'ADD_HISTORY_ENTRY', false, true, isExtensionDryRun());
868
869                                 // Update notes (these will be set as task text!)
870                                 setExtensionUpdateNotes("Allgemeine Historie-Tabelle hinzugef&uuml;gt.");
871                                 break;
872
873                         case '0.8.5': // SQL queries for v0.8.5
874                                 // Old-lost configuration entry
875                                 addConfigDropSql('ext_autopurge');
876
877                                 // Extra earning for our members :-)
878                                 addMemberMenuSql('earn', 'earnings', 'Zusatzverdienste', 2);
879
880                                 // Admin menu
881                                 addAdminMenuSql('setup', 'list_earnings', 'Zusatzverdienste...', 'Veralten Sie hier bequem alle Zusatzverdienste (wie z.B. verg&uuml;tete PopUps usw.).', 6);
882
883                                 // Earning data table
884                                 addDropTableSql('earning_data');
885                                 addCreateTableSql('earning_data', "
886 `earning_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
887 `earning_group` VARCHAR(255) NOT NULL DEFAULT 'INVALID',
888 `earning_name` VARCHAR(255) NOT NULL DEFAULT 'INVALID',
889 `earning_sorting` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
890 PRIMARY KEY (`earning_id`),
891 UNIQUE `earning_group_name` (`earning_group`,`earning_name`)",
892                                         'Registered (extra) earnings');
893
894                                 // User->earnings connection table
895                                 addDropTableSql('user_earning');
896                                 addCreateTableSql('user_earning', "
897 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
898 `earning_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
899 `earning_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
900 `earning_active` ENUM('Y','N') NOT NULL DEFAULT 'Y',
901 `earning_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
902 `earning_cancelled` TIMESTAMP NULL DEFAULT NULL,
903 `earning_daily_amount` SMALLINT(7) NOT NULL DEFAULT 0,
904 `earning_points` FLOAT(20,5) NOT NULL DEFAULT 0.00000,
905 PRIMARY KEY (`id`),
906 UNIQUE `user_earning` (`earning_id`,`earning_userid`),
907 INDEX (`earning_userid`)",
908                                         'User->Earning connections');
909
910                                 // Update notes (these will be set as task text!)
911                                 setExtensionUpdateNotes("Men&uuml;punkt f&uuml;r Zusatzverdienste wie z.B. Forced-PopUps hinzugef&uuml;gt und uralten Konfigurationseintrag entfernt.");
912                                 break;
913                 } // END - switch
914                 break;
915
916         case 'modify': // When the extension got modified
917                 break;
918
919         case 'test': // For testing purposes
920                 break;
921
922         case 'init': // Do stuff when extension is initialized
923                 // Transfer POINTS word
924                 if (isExtensionInstalledAndNewer('sql_patches', '0.0.3')) {
925                         // Okay, recent enough, so transfer the word for POINTS
926                         setConfigEntry('POINTS', getPointsWord());
927                 } // END - if
928
929                 // Init key
930                 setConfigEntry('secret_key', '');
931
932                 // Read key from secret file
933                 if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && ((getFileHash() == '') || (getMasterSalt() == '') || (getPassScramble() == ''))) {
934                         // Maybe need setup of secret key!
935                         loadIncludeOnce('inc/gen_sql_patches.php');
936                 } // END - if
937
938                 // Test again
939                 if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && (getFileHash() != '') && (getMasterSalt() != '') && (getPassScramble() != '')) {
940                         // File hash fas generated so we can also file the secret file... hopefully.
941                         $hashFile = sprintf("%s%s.%s.cache", getPath(), getCachePath(), getFileHash());
942                         if (isFileReadable($hashFile)) {
943                                 // Read file
944                                 setConfigEntry('secret_key', readFromFile($hashFile));
945                         } else {
946                                 // Remove it from database
947                                 updateConfiguration('file_hash', '');
948
949                                 // Cannot read secret file!
950                                 debug_report_bug(__FILE__, __LINE__, 'Cannot read secret file! Please try to reload.');
951                         }
952                 } // END - if
953                 break;
954
955         default: // Unknown extension mode
956                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
957                 break;
958 } // END - switch
959
960 // [EOF]
961 ?>