2 /************************************************************************
3 * Mailer v0.2.1-FINAL Start: 08/21/2004 *
4 * =================== Last change: 12/04/2004 *
6 * -------------------------------------------------------------------- *
7 * File : ext-sql_patches.php *
8 * -------------------------------------------------------------------- *
9 * Short description : SQL fixes for pro versions *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Ausgelagertes "Profildaten aendern" *
12 * -------------------------------------------------------------------- *
15 * $Tag:: 0.2.1-FINAL $ *
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 *
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. *
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. *
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, *
36 ************************************************************************/
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
44 setThisExtensionVersion('0.9.7');
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.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', '0.9.1', '0.9.2', '0.9.3', '0.9.4', '0.9.5', '0.9.6', '0.9.7'));
49 // Keep this extension always active!
50 setExtensionAlwaysActive('Y');
52 switch (getExtensionMode()) {
53 case 'register': // Do stuff when installation is running
54 // This depends on ext-cache now
55 addExtensionDependency('cache');
58 case 'remove': // Do stuff when removing extension
60 addDropTableSql('admin_menu_las');
61 addDropTableSql('admin_menu_las_data');
62 addDropTableSql('admin_las_stats');
63 addDropTableSql('dns_cache');
64 addDropTableSql('server_name_log');
66 // Delete admin menu entries
67 addExtensionSql("DELETE LOW_PRIORITY FROM
68 `{?_MYSQL_PREFIX?}_admin_menu`
84 // Delete/update member menu entries
85 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE
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
93 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='main' WHERE
100 unregisterExtensionPointsData('pool_payback');
101 unregisterExtensionPointsData('mail_deleted');
102 unregisterExtensionPointsData('admin_add_single');
103 unregisterExtensionPointsData('admin_add_single_ref');
104 unregisterExtensionPointsData('admin_add_all');
105 unregisterExtensionPointsData('admin_add_all_ref');
108 unregisterFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', TRUE, isExtensionDryRun());
109 unregisterFilter(__FILE__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', TRUE, isExtensionDryRun());
110 unregisterFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', TRUE, isExtensionDryRun());
111 unregisterFilter(__FILE__, __LINE__, 'extra_autopurge', 'SERVER_NAME_EXTRA_AUTOPURGE', TRUE, isExtensionDryRun());
112 unregisterFilter(__FILE__, __LINE__, 'determine_menu_mode', 'DETERMINE_MENU_MODE_GENERIC', TRUE, isExtensionDryRun());
113 unregisterFilter(__FILE__, __LINE__, 'config_userid_exclusion_sql', 'EXCLUDE_DEFAULT_REFID', TRUE, isExtensionDryRun());
116 case 'activate': // Do stuff when admin activates this extension
117 // SQL commands to run
121 case 'deactivate': // Do stuff when admin deactivates this extension
122 // SQL commands to run
126 case 'update': // Update an extension
127 switch (getCurrentExtensionVersion()) {
128 case '0.0.1': // SQL queries for v0.0.1
129 addAdminMenuSql('setup', 'config_extensions', 'Erweitungsmanagement', 'Alle Einstellungen am Erweiterungsmanagement.', 10);
131 // Update notes (these will be set as task text!)
132 setExtensionUpdateNotes("Es kann nun bestimmt werden, ob vom Server gelöschte ext-xxx.php erkannt werden sollen und die verknüpften Daten auch aus der Datenbank entfernt werden sollen.");
135 case '0.0.2': // SQL queries for v0.0.2
136 addConfigChangeSql('auto_purge', 'auto_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay()*14));
138 // Update notes (these will be set as task text!)
139 setExtensionUpdateNotes("In der Tabelle <strong>{?_MYSQL_PREFIX?}_config</strong> musste die Spalte <strong>auto_purge</strong> (autom. Löschen von Bestätigungsmails angepasst werden (war auf dem Testsystem auf TINYINT(4) gesetzt.)");
142 case '0.0.3': // SQL queries for v0.0.3
143 addConfigAddSql('points_word', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_TEMPLATE}DEFAULT_POINTS{CLOSE_TEMPLATE}'");
145 // Update notes (these will be set as task text!)
146 setExtensionUpdateNotes("Das Wort "Punkte" kann nun per Datenbank geändert werden. Damit können anstelle des Wortes Punkte auch Klammlose, Wernis, Primera und auch € geschrieben werden.");
149 case '0.0.4': // SQL queries for v0.0.4
150 addConfigAddSql('mails_page', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
152 // Update notes (these will be set as task text!)
153 setExtensionUpdateNotes("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugefügt.");
156 case '0.0.5': // SQL queries for v0.0.5
157 addConfigAddSql('index_home', "VARCHAR(255) NOT NULL DEFAULT 'welcome'");
158 addAdminMenuSql('setup','config_home','Home-Seite festlegen','Stellen Sie hier ein, welcher Menüpunkt (what-welcome ist Standard) als Einstiegspunkt in das Menüsystem genutzt werden soll.', 5);
160 // Update notes (these will be set as task text!)
161 setExtensionUpdateNotes("Die what-welcome.php ist derzeit die "Home"-Seite (Eingangsseite). Dies kann nun per Datenbank geändert werden.");
164 case '0.0.6': // SQL queries for v0.0.6
165 addExtensionAddTableColumnSql('extensions', 'ext_has_css', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
167 // Update notes (these will be set as task text!)
168 setExtensionUpdateNotes("Es können nun SQL-Updates von einander abhängig gemacht werden und die CSS-Datei kann per Admin-Bereich (wegen Debuggings) ein- bzw. ausgeschaltet werden.");
171 case '0.0.7': // SQL queries for v0.0.7
172 addConfigAddSql('verbose_sql', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
174 // Update notes (these will be set as task text!)
175 setExtensionUpdateNotes("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
178 case '0.0.8': // SQL queries for v0.0.8
179 addConfigAddSql('menu_blur_spacer', "VARCHAR(255) NOT NULL DEFAULT ' <strong><big>·</big></strong> '");
181 // Update notes (these will be set as task text!)
182 setExtensionUpdateNotes("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
185 case '0.0.9': // SQL queries for v0.0.9
186 addAdminMenuSql('email','list_unconfirmed','Unbest. Mails auflisten','Schauen Sie sich hier unbestätigte Maillinks an. Bitte diesen Link nur über dem EMail-Archiv oder EMail-Details aufrufen, direkt aufgerufen bekommen Sie eine Fehlermeldung.', 8);
188 // Update notes (these will be set as task text!)
189 setExtensionUpdateNotes("Unbestätigte Maillinks können unter Email-Management -> Unbest. Mails auflisten aufgelistet werden.");
192 case '0.1.0': // SQL queries for v0.1.0
193 // Update notes (these will be set as task text!)
194 setExtensionUpdateNotes("Soll der einmalige Ref-Bonus über das Referral-System (also alle oberen Refs bekommen auch etwas davon ab) oder direkt dem Werber aufgebucht werden?");
197 case '0.1.1': // SQL queries for v0.1.1
198 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Home-/Eingangsseite', descr='Stellen Sie hier ein, welcher Menüpunkt (what-welcome ist Standard) als Einstiegspunkt in das Menüsystem genutzt werden soll und wie die automatische Weiterleitung in der Eingangsseite funktionieren soll.' WHERE `what`='config_home' LIMIT 1");
199 addConfigAddSql('index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
200 addConfigAddSql('index_cookie', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 365));
202 // Update notes (these will be set as task text!)
203 setExtensionUpdateNotes("Sie können nun <a href=\"{%url=modules.php?module=admin&what=config_home%}\">hier</a> die Verzögerungszeit in der <a href=\"{%url=index.php%}\">Eingangsseite</a> einstellen.");
206 case '0.1.2': // SQL queries for v0.1.2
207 addAdminMenuSql('setup','config_refid','Standard-Ref-Id','Stellen Sie hier die Mitglieds-Id ein, die genommen werden soll, wenn der Gast n icht per Referral-Link Ihren {?mt_word?} aufgerufen hat.', 7);
208 addConfigAddSql('def_refid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
210 // Update notes (these will be set as task text!)
211 setExtensionUpdateNotes("Standard Referral-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
214 case '0.1.3': // SQL queries for v0.1.3
215 addConfigAddSql('refid_target', "ENUM('register','index') NOT NULL DEFAULT 'register'");
217 // Update notes (these will be set as task text!)
218 setExtensionUpdateNotes("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
221 case '0.1.4': // SQL queries for v0.1.4
222 // Update notes (these will be set as task text!)
223 setExtensionUpdateNotes("Ungültiges Update (nach ext-theme.php verschoben!).");
226 case '0.1.5': // SQL queries for v0.1.5
227 addExtensionDropTableColumnSql('extensions', 'ext_has_admin');
229 // Update notes (these will be set as task text!)
230 setExtensionUpdateNotes("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{?_MYSQL_PREFIX?}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
233 case '0.1.6': // SQL queries for v0.1.6
234 addConfigAddSql('enable_title_deco', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
235 addConfigAddSql('title_left', "VARCHAR(10) NOT NULL DEFAULT '[--'");
236 addConfigAddSql('title_middle', "VARCHAR(10) NOT NULL DEFAULT '-'");
237 addConfigAddSql('title_right', "VARCHAR(10) NOT NULL DEFAULT '--]'");
238 addConfigAddSql('enable_mod_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
239 addConfigAddSql('enable_what_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
240 addAdminMenuSql('setup','config_title','Seitentitel ändern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8);
242 // Update notes (these will be set as task text!)
243 setExtensionUpdateNotes("Dekorationen des Seitentiteles lassen sich ein- und ausschalten und selber definieren; Modul-Titel und Titel der <strong>what</strong>-Dateien kann hinzugefügt werden.");
246 case '0.1.7': // SQL queries for v0.1.7
247 // Update notes (these will be set as task text!)
248 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
251 case '0.1.8': // SQL queries for v0.1.8
252 // Update notes (these will be set as task text!)
253 setExtensionUpdateNotes("mad_count und last_mad werden nun aus der Datenbank geladen");
256 case '0.1.9': // SQL queries for v0.1.9
257 // Update notes (these will be set as task text!)
258 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
261 case '0.2.0': // SQL queries for v0.2.0
262 addExtensionChangeTableColumnSql('jackpot', 'points', 'points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
264 addExtensionChangeTableColumnSql('payments', 'payment', 'payment', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
265 addExtensionChangeTableColumnSql('payments', 'price', 'price', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
267 // Update notes (these will be set as task text!)
268 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
271 case '0.2.1': // SQL queries for v0.2.1
272 addConfigAddSql('css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
274 // Update notes (these will be set as task text!)
275 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
278 case '0.2.2': // SQL queries for v0.2.2
279 // Update notes (these will be set as task text!)
280 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
283 case '0.2.3': // SQL queries for v0.2.3
284 addConfigAddSql('guest_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
285 addConfigAddSql('member_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
286 addConfigAddSql('youre_here', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
288 // Update notes (these will be set as task text!)
289 setExtensionUpdateNotes("Gast- und Mitgliedsmenüs lassen sich getrennt voneinander abschalten.");
292 case '0.2.4': // SQL queries for v0.2.4
293 // PNG image is the default
296 // Is the JPEG file found and required PHP function there?
297 if ((!isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.png')) || (!function_exists('imagecreatefrompng'))) {
298 // Switch to JPEG format because PNG is not available
301 addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
303 // Update notes (these will be set as task text!)
304 setExtensionUpdateNotes("Generierung des Mailbestätigungscodes hängt davon ab, ob die PHP-Funktion <u>imagecreatefromjpeg()</u> und das JPEG-Bild vorhanden sind oder nicht.");
307 case '0.2.5': // SQL queries for v0.2.5
308 // Update notes (these will be set as task text!)
309 setExtensionUpdateNotes("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
312 case '0.2.6': // SQL queries for v0.2.6
313 // Update notes (these will be set as task text!)
314 setExtensionUpdateNotes("Verschoben nach <strong>ext-user</strong>.");
317 case '0.2.7': // SQL queries for v0.2.7
318 addConfigAddSql('stats_limit', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
319 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
321 // Update notes (these will be set as task text!)
322 setExtensionUpdateNotes("<ol>
323 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
324 <li>Mitgliederstatistik mit Seitennavigation.</li>
328 case '0.2.8': // SQL queries for v0.2.8
329 // Update notes (these will be set as task text!)
330 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
333 case '0.2.9': // SQL queries for v0.2.9
334 addConfigAddSql('mt_word', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
335 addConfigAddSql('mt_word2', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
336 addConfigAddSql('mt_word3', "VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
338 // Update notes (these will be set as task text!)
339 setExtensionUpdateNotes("Wörter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
342 case '0.3.0': // SQL queries for v0.3.0
343 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG}/Referral-Ebenen' WHERE `what`='config_points' LIMIT 1");
344 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailvergütungen...' WHERE `what`='payments' LIMIT 1");
346 // Update notes (these will be set as task text!)
347 setExtensionUpdateNotes("Zwei Menüpunkte umbenannt.");
350 case '0.3.1': // SQL queries for v0.3.1
351 addExtensionAddTableUniqueSql('extensions', 'ext_name', '(`ext_name`)');
352 addExtensionAddTableUniqueSql('admins', 'login', '(`login`)');
353 addExtensionAddTableIndexSql('refbanner', 'visible', '(`visible`)');
354 addExtensionAddTableUniqueSql('refdepths', 'level', '(`level`)');
355 addExtensionAddTableIndexSql('refsystem', 'level', '(`level`)');
356 addExtensionAddTableIndexSql('pool', 'data_type', '(`data_type`)');
357 addExtensionAddTableUniqueSql('mod_reg', 'module', '(`module`)');
358 addExtensionAddTableIndexSql('admin_menu', 'action', '(`action`)');
359 addExtensionAddTableIndexSql('admin_menu', 'what', '(`what`)');
360 addExtensionAddTableIndexSql('extensions', 'ext_active', '(`ext_active`)');
361 addExtensionAddTableIndexSql('guest_menu', 'action', '(`action`)');
362 addExtensionAddTableIndexSql('guest_menu', 'what', '(`what`)');
363 addExtensionAddTableIndexSql('guest_menu', 'sort', '(`sort`)');
364 addExtensionAddTableIndexSql('guest_menu', 'visible', '(`visible`)');
365 addExtensionAddTableIndexSql('guest_menu', 'locked', '(`locked`)');
366 addExtensionAddTableIndexSql('member_menu', 'what', '(`what`)');
367 addExtensionAddTableIndexSql('member_menu', 'sort', '(`sort`)');
368 addExtensionAddTableIndexSql('member_menu', 'visible', '(`visible`)');
369 addExtensionAddTableIndexSql('member_menu', 'locked', '(`locked`)');
370 addExtensionAddTableIndexSql('cats', 'visible', '(`visible`)');
371 addExtensionAddTableIndexSql('cats', 'sort', '(`sort`)');
373 // Update notes (these will be set as task text!)
374 setExtensionUpdateNotes("Eindeutige Schlüssel (UNIQUE) und normale Schlüssel (INDEX) gesetzt.");
377 case '0.3.2': // SQL queries for v0.3.2
378 // Connection table between the menu system and the "logical area system"
379 addDropTableSql('admin_menu_las');
380 addCreateTableSql('admin_menu_las', "
381 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
382 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
383 `la_action` VARCHAR(255) NOT NULL DEFAULT '',
384 `la_what` VARCHAR(255) NOT NULL DEFAULT '',
389 'Menu system -> LAS');
391 // All "logical areas" together
392 addDropTableSql('admin_menu_las_data');
393 addCreateTableSql('admin_menu_las_data', "
394 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
395 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
396 `la_title` VARCHAR(255) NOT NULL DEFAULT '',
397 `la_posx` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
398 `la_posy` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
400 UNIQUE INDEX (`la_id`),
403 'LAS position and title data');
405 // Which menu do you like?
406 addConfigAddSql('admin_menu', "ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
409 addAdminMenuSql('setup', 'config_admin', 'Adminmenü', 'Diverse Einstellungen am Adminmenü vornehmen.', 9);
411 // Update notes (these will be set as task text!)
412 setExtensionUpdateNotes("Logische Bereiche (Logical Areas = LAs) eingeführt. Dadurch wird das immer stärker anwachsende Admin-Menü in grosse Hauptgruppen unterteilt, wodurch ein Auffinden von Menüpunkten verbessert wird.");
415 case '0.3.3': // SQL queries for v0.3.3
416 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
417 addConfigAddSql('admin_menu_sorter', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
419 // The statistics table
420 addDropTableSql('admin_las_stats');
421 addCreateTableSql('admin_las_stats', "
422 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
423 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
424 `type` ENUM('la','action','what') NOT NULL DEFAULT 'what',
425 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
430 // Update notes (these will be set as task text!)
431 setExtensionUpdateNotes("Admin-abhängig werden nun Klicks im Admin-Menü gezählt, die zur automatischen Anpassung des Menüs in den logischen Bereichen diennen. Dieses "intelligente Unbauen" können Sie auch ganz abschalten.");
434 case '0.3.4': // SQL queries for v0.3.4
435 // Update notes (these will be set as task text!)
436 setExtensionUpdateNotes("Veraltetes Update (what=list_user&mode=noref)");
439 case '0.3.5': // SQL queries for v0.3.5
440 // List accounts with no referral
441 addMemberMenuSql('stats', NULL, 'Statistiken', 4);
442 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 2);
443 addMemberMenuSql('extras', NULL, 'Extras', 5);
444 addMemberMenuSql('rals', NULL, 'Rallyes', 6);
445 addMemberMenuSql('account', NULL, 'Ihr Account', 7);
446 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='stats',`sort`=1,`title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
447 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras',`sort`=3 WHERE `what`='reflinks' LIMIT 1");
449 // Update notes (these will be set as task text!)
450 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
453 case '0.3.6': // SQL queries for v0.3.6
454 addConfigAddSql('salt_length', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
455 addConfigAddSql('pass_scramble', "VARCHAR(255) NOT NULL DEFAULT ''");
456 addExtensionChangeTableColumnSql('admins', 'password', 'password', "VARCHAR(255) NOT NULL DEFAULT ''");
457 addConfigAddSql('rand_no', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
458 addConfigAddSql('file_hash', "VARCHAR(255) NOT NULL DEFAULT ''");
459 addConfigAddSql('master_salt', "VARCHAR(255) NOT NULL DEFAULT ''");
460 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_config` SET `rand_no`=(ROUND(RAND() * 99999) + 100000) WHERE `config`=0 LIMIT 1");
461 addExtensionAddTableColumnSql('mod_reg', 'has_menu', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
462 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `has_menu`='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
464 // Update notes (these will be set as task text!)
465 setExtensionUpdateNotes("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
468 case '0.3.7': // SQL queries for v0.3.7
469 setExtensionUpdateNotes("Problem während des Installationsvorganges behoben.");
472 case '0.3.8': // SQL queries for v0.3.8
473 addExtensionChangeTableColumnSql('admin_menu', 'descr', 'descr', 'MEDIUMTEXT NULL');
474 addExtensionChangeTableColumnSql('pool', 'text', 'text', 'LONGTEXT NOT NULL');
476 // Update notes (these will be set as task text!)
477 setExtensionUpdateNotes("Beschreibungstexte für Admin-Menüs können länger sein. Diverse Fixes.");
480 case '0.3.9': // SQL queries for v0.3.9
481 // Update notes (these will be set as task text!)
482 setExtensionUpdateNotes("Beschreibungstexte für Admin-Menüs können länger sein. Diverse Fixes.");
485 case '0.4.0': // SQL queries for v0.4.0
486 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Email-Management' WHERE `action` = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
488 // Update notes (these will be set as task text!)
489 setExtensionUpdateNotes("Email-Verwaltung nach Email-Management umbenannt.");
492 case '0.4.1': // SQL queries for v0.4.1
493 addConfigAddSql('show_timings', "ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
495 // Update notes (these will be set as task text!)
496 setExtensionUpdateNotes("Tabellen-Schlüssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
499 case '0.4.2': // SQL queries for v0.4.2
500 // Update notes (these will be set as task text!)
501 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
504 case '0.4.3': // SQL queries for v0.4.3
505 addConfigAddSql('proxy_host', "VARCHAR(255) NOT NULL DEFAULT ''");
506 addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
507 addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
508 addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
509 addAdminMenuSql('setup','config_proxy','Proxy-Einstellungen','Sollte Ihr Webserver sich hinter einem Proxy befinden, so können Sie Ihren {?mt_word?} so konfigurieren, dass es z.B. Updates, Abfragen von Netzwerkupdates über diesen tätigt.', 15);
511 // Update notes (these will be set as task text!)
512 setExtensionUpdateNotes("Proxy-Einstellungen hinzugefügt.");
515 case '0.4.4': // SQL queries for v0.4.4
516 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
517 addExtensionChangeTableColumnSql('guest_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
518 addExtensionChangeTableColumnSql('member_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
519 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`=NULL WHERE `what`=''");
520 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `what`=NULL WHERE `what`=''");
521 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `what`=NULL WHERE `what`=''");
523 // Make this depending on ext-menu
524 addExtensionDependency('menu');
526 // Update notes (these will be set as task text!)
527 setExtensionUpdateNotes("Schlüssel in Admin-, Gast- und Mitgliedsmenü verbessert.");
530 case '0.4.5': // SQL queries for v0.4.5
531 addConfigAddSql('last_month', 'CHAR(2) NOT NULL DEFAULT 00');
532 addConfigAddSql('last_week', 'CHAR(2) NOT NULL DEFAULT 00');
534 // Update notes (these will be set as task text!)
535 setExtensionUpdateNotes("Täglichen/wöchentlichen/monatlichen Reset verbessert.");
538 case '0.4.6': // SQL queries for v0.4.6
539 // Update notes (these will be set as task text!)
540 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
543 case '0.4.7': // SQL queries for v0.4.7
544 // Update notes (these will be set as task text!)
545 setExtensionUpdateNotes("Veraltetes Update.");
548 case '0.4.8': // SQL queries for v0.4.8
549 // Update notes (these will be set as task text!)
550 setExtensionUpdateNotes("Update nach <strong>ext-task</strong> verschoben.");
553 case '0.4.9': // SQL queries for v0.4.9
554 // Update notes (these will be set as task text!)
555 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
558 case '0.5.0': // SQL queries for v0.5.0
559 addExtensionDropTableIndexSql('refsystem', 'level');
560 addExtensionDropTableIndexSql('refsystem', 'userid');
561 addExtensionAddTableIndexSql('refsystem', 'userid_level', '(`userid`, `level`)');
563 // Update notes (these will be set as task text!)
564 setExtensionUpdateNotes("Referral-System unterstützt nun detailierte Referral-Übersicht und vieles mehr.");
567 case '0.5.1': // SQL queries for v0.5.1
568 addExtensionDropTableColumnSql('member_menu', 'descr');
570 // Update notes (these will be set as task text!)
571 setExtensionUpdateNotes("Beschreibungsspalte von Mitgliedsmenü entfernt, welche ohnehin nicht genutzt wird.");
574 case '0.5.2': // SQL queries for v0.5.2
575 addExtensionChangeTableColumnSql('refdepths', 'percents', 'percents', 'FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
577 // Update notes (these will be set as task text!)
578 setExtensionUpdateNotes("Prozentsätze können nun fünf Stellen hinter dem Komma sein.");
581 case '0.5.3': // SQL queries for v0.5.3
582 addConfigAddSql('session_save_path', "VARCHAR(255) NOT NULL DEFAULT ''");
583 addAdminMenuSql('setup','config_session','Session-Einstellungen','Ändern Sie hier den Speicherpfad für Sessiondateien (Sitzungsdateien) ab, falls die Standard-Einstellung bei Ihrem Hoster zu Problem führen sollte.', 16);
585 // Update notes (these will be set as task text!)
586 setExtensionUpdateNotes("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com nötig.");
589 case '0.5.4': // SQL queries for v0.5.4
590 addMemberMenuSql('main', 'reflist', 'Ref-Übersicht', 5);
592 // Update notes (these will be set as task text!)
593 setExtensionUpdateNotes("Ref-Übersicht eingebaut. Diese hängt von der Erweiterung <strong>refback</strong> ab.");
596 case '0.5.5': // SQL queries for v0.5.5
597 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
599 // Update notes (these will be set as task text!)
600 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbestätigten Mails kann nun optional abgeschaltet werden.");
603 case '0.5.6': // SQL queries for v0.5.6
604 // Update notes (these will be set as task text!)
605 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
608 case '0.5.7': // SQL queries for v0.5.7
609 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
611 // Update notes (these will be set as task text!)
612 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&mode=norefs verschoben.");
615 case '0.5.8': // SQL queries for v0.5.8
616 addExtensionDropTableColumnSql('extensions', 'ext_lang_file');
618 // Update notes (these will be set as task text!)
619 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
622 case '0.5.9': // SQL queries for v0.5.9
623 // Table 'filters' is vital because many functionality depends on it, so don't remove it
624 addCreateTableSql('filters', "
625 `filter_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
626 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
627 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
628 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
629 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
630 PRIMARY KEY (`filter_id`),
631 UNIQUE INDEX `name_function` (`filter_name`, `filter_function`)",
635 addAdminMenuSql('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und lässt diese de- bzw. wieder aktivieren.', 17);
637 // Update notes (these will be set as task text!)
638 setExtensionUpdateNotes("Tabellen für Filter-System hinzugefügt.");
641 case '0.6.0': // SQL queries for v0.6.0
642 addConfigAddSql('update_filter_usage', "ENUM('N','Y') NOT NULL DEFAULT 'N'");
644 // Update notes (these will be set as task text!)
645 setExtensionUpdateNotes("Benutzungsstatistik eingebaut. Das Zählen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
648 case '0.6.1': // SQL queries for v0.6.1
649 // Update notes (these will be set as task text!)
650 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
653 case '0.6.2': // SQL queries for v0.6.2
654 // Depends on refback extension
655 addExtensionDependency('user');
657 // Update notes (these will be set as task text!)
658 setExtensionUpdateNotes("Abhängigkeit von <u>ext-user</u> gesetzt.");
661 case '0.6.3': // SQL queries for v0.6.3
662 // Update notes (these will be set as task text!)
663 setExtensionUpdateNotes("Filter-Tabelle bereinigt um doppelte Einträge und Unique-Key auf <span class=\"bad\">filter_name</span> und <span class=\"bad\">filter_function</span> zusammen gesetzt.");
665 // Add special fix include to fix filters
666 addIncludeToPool('extension', 'inc/fix_filters.php');
669 case '0.6.4': // SQL queries for v0.6.4
671 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
672 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `descr` = REPLACE(`descr`, '!POINTS!', '?POINTS?') WHERE `descr` LIKE '%!POINTS!%'");
673 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
674 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
676 // Update notes (these will be set as task text!)
677 setExtensionUpdateNotes("Datenbank umgestellt auf Konfigurationselemente.");
680 case '0.6.5': // SQL queries for v0.6.5
681 addConfigChangeSql('css_php', 'css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
683 // Update notes (these will be set as task text!)
684 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
687 case '0.6.6': // SQL queries for v0.6.6
688 addAdminMenuSql('setup', 'config_secure', 'Sicherheitseinstellungen', 'Stellen Sie ein, wie lange das Passwort eines Mitgliedes mindestens sein muss uvm.', 9);
689 addAdminMenuSql('setup', 'config_points', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG}', 'Stellen Sie hier die Willkommensgutschrift, Referral-Gutschrift (einmalige) usw. ein.', 10);
690 addAdminMenuSql('email', 'email_archiv', 'E-Mail Archiv', 'Sehen Sie sich hier bereits gesendete Mails an.', 6);
692 // Update notes (these will be set as task text!)
693 setExtensionUpdateNotes("Die Sicherheitseinstellungen, {?POINTS?}-Einstellungen und Email-Archiv funktionieren nur, wenn diese Erweiterung installiert ist.");
696 case '0.6.7': // SQL queries for v0.6.7
697 addConfigChangeSql('index_delay', 'index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
699 // Update notes (these will be set as task text!)
700 setExtensionUpdateNotes("Die Weiterleitungseinstellung muss auch Werte kleiner Null akzeptieren.");
703 case '0.6.8': // SQL queries for v0.6.8
704 addExtensionChangeTableColumnSql('admin_menu', 'action', 'action', 'VARCHAR(50) NOT NULL');
705 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(50) NULL DEFAULT NULL');
706 addExtensionChangeTableColumnSql('guest_menu', 'action', 'action', 'VARCHAR(50) NOT NULL');
707 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(50) NULL DEFAULT NULL');
708 addExtensionChangeTableColumnSql('member_menu', 'action', 'action', 'VARCHAR(50) NOT NULL');
709 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(50) NULL DEFAULT NULL');
711 // Update notes (these will be set as task text!)
712 setExtensionUpdateNotes("Spalten verkürzt, damit die Schlüssel passen.");
715 case '0.6.9': // SQL queries for 0.6.9
717 registerFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', FALSE, TRUE, isExtensionDryRun());
719 // Update notes (these will be set as task text!)
720 setExtensionUpdateNotes("Filter zum Zurücksetzens des fehlgeschlagenen Mitgliederlogins hinzugefügt (internes TODO).");
723 case '0.7.0': // SQL queries for 0.7.0
725 addDropTableSql('dns_cache');
726 addCreateTableSql('dns_cache', "
727 `hostname` VARCHAR(255) NOT NULL,
728 `ip` VARCHAR(15) NOT NULL,
729 `added` DATETIME NOT NULL,
730 PRIMARY KEY (`hostname`),
732 'Cache for DNS requests');
735 addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
738 registerFilter(__FILE__, __LINE__, 'reset', 'CLEANUP_DNS_CACHE', FALSE, TRUE, isExtensionDryRun());
740 // Update notes (these will be set as task text!)
741 setExtensionUpdateNotes("IP-Resolver-Klasse hinzugefügt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
744 case '0.7.1': // SQL queries for v0.7.1
745 // This update just depends on ext-timezone to make integration of an essential extension much easier
746 addExtensionDependency('timezone');
748 // Update notes (these will be set as task text!)
749 setExtensionUpdateNotes("Zeitzone ist nun mit ext-timezone konfigurierbar.");
752 case '0.7.2': // SQL queries for v0.7.2
753 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `task_type`='MEMBER_SUPPORT' WHERE `task_type`='SUPPORT_MEMBER'");
755 // Update notes (these will be set as task text!)
756 setExtensionUpdateNotes("Daten an Namenskonvention angepasst.");
759 case '0.7.3': // SQL queries for v0.7.3
760 addExtensionChangeTableColumnSql('filters', 'filter_name', 'filter_name', "VARCHAR(50) NOT NULL DEFAULT ''");
761 addExtensionChangeTableColumnSql('filters', 'filter_function', 'filter_function', "VARCHAR(100) NOT NULL DEFAULT ''");
763 // Update notes (these will be set as task text!)
764 setExtensionUpdateNotes("Spalten in Filtertabelle gekürzt (SQL-Fehler wegen zu grossem Schlüssel).");
767 case '0.7.4': // SQL queries for v0.7.4
768 addExtensionAddTableColumnSql('pool', 'mails_sent', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
770 // Update notes (these will be set as task text!)
771 setExtensionUpdateNotes("Spalten in Filtertabelle gekürzt (SQL-Fehler wegen zu grossem Schlüssel).");
774 case '0.7.5': // SQL queries for v0.7.5
775 addConfigAddSql('last_hour', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
777 // Update notes (these will be set as task text!)
778 setExtensionUpdateNotes("Aktuelle Stunde hinzugefügt (ist nicht konfigurierbar).");
781 case '0.7.6': // SQL queries for v0.7.6
782 addConfigChangeSql('last_month', 'last_month', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
783 addConfigChangeSql('last_week', 'last_week', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
785 // Update notes (these will be set as task text!)
786 setExtensionUpdateNotes("Spaltentyp fuer kleine Zahlen sollten auch z.B. TINYINT sein.");
789 case '0.7.7': // SQL queries for v0.7.7
790 addMemberMenuSql('earn', NULL, 'Verdienen', 2);
791 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='earn',`sort`=1 WHERE `what`='unconfirmed' LIMIT 1");
793 // Update notes (these will be set as task text!)
794 setExtensionUpdateNotes("Menüpunkt <strong>Verdienen</strong> hinzugefügt und <strong>Unbestätigte Mails</strong> als ersten Punkt dort hin verschoben.");
797 case '0.7.8': // SQL queries for v0.7.8
798 // Update notes (these will be set as task text!)
799 setExtensionUpdateNotes("Konfigurationseinträge mit Spaltentyp <strong>ENUM</strong> werden nun immer komplett gross geschrieben.");
802 case '0.7.9': // SQL queries for v0.7.9
803 addExtensionSQL("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_email_max_rec' WHERE `what`='config_email' LIMIT 1");
805 // Update notes (these will be set as task text!)
806 setExtensionUpdateNotes("Adminscript <strong>what-config_email.php</strong> nach <strong>what-list_email_max_rec.php</strong> umbenannt.");
809 case '0.8.0': // SQL queries for v0.8.0
810 // Points account data (this table should not be dropped or else you may have to re-install a lot extensions)
811 addCreateTableSql('points_data', "
812 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
813 `subject` VARCHAR(255) NOT NULL DEFAULT '',
814 `column_name` VARCHAR(255) NOT NULL DEFAULT 'points',
815 `locked_mode` ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED',
816 `payment_method` ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL',
817 `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N',
819 UNIQUE KEY (`subject`)",
820 'Points account data');
823 addAdminMenuSql('setup', 'list_point_accounts', 'Guthabenkonten...', 'Veralten Sie hier bequem Einstellungen zu den Guthabenkonten.', 5);
825 // Update notes (these will be set as task text!)
826 setExtensionUpdateNotes("Tabelle <span class=\"bad\">points_data</span> erzeugt, diese soll das {?POINTS?}-Guthaben komplett lenken.");
829 case '0.8.1': // SQL queries for v0.8.1
830 addExtensionChangeTableColumnSql('refdepths', 'level', 'level', 'TINYINT(3) UNSIGNED NULL DEFAULT NULL');
831 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_refdepths` SET `level`=NULL WHERE `level`=0 LIMIT 1');
833 // Update notes (these will be set as task text!)
834 setExtensionUpdateNotes("Level 0 ist nun auch NULL.");
837 case '0.8.2': // SQL queries for v0.8.2
838 addExtensionDropTableIndexSql('points_data', 'ext_name');
839 addExtensionChangeTableColumnSql('points_data', 'ext_name', 'subject', "VARCHAR(255) NOT NULL DEFAULT ''");
840 addExtensionAddTableColumnSql('points_data', 'notify_recipient', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
842 // Register points data
843 registerExtensionPointsData('pool_payback', 'points', 'LOCKED', 'DIRECT');
844 registerExtensionPointsData('mail_deleted', 'points', 'LOCKED', 'DIRECT');
846 // Remove deprecated configuration entry
847 addConfigDropSql('reg_points_mode');
849 // Update notes (these will be set as task text!)
850 setExtensionUpdateNotes("Es sollte der Gutschriftenbetreff und nicht der Erweiterungsname gepeichert werden, zudem brauchen wir einen Konfigurationseintrag nicht mehr.");
853 case '0.8.3': // SQL queries for v0.8.3
854 addConfigAddSql('display_home_in_index', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
856 // Update notes (these will be set as task text!)
857 setExtensionUpdateNotes("Es kann nun die "Home"-Seite in <strong>index.php</strong> angezeigt werden, anstelle der Weiterleitung.");
860 case '0.8.4': // SQL queries for v0.8.4
861 addCreateTableSql('history', "
862 `history_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
863 `history_subject` VARCHAR(255) NOT NULL DEFAULT 'GENERIC',
864 `history_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
865 `history_value` VARCHAR(255) NOT NULL DEFAULT '',
866 `history_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
867 `history_last_used` TIMESTAMP NULL DEFAULT NULL,
868 PRIMARY KEY (`history_id`),
869 INDEX `userid` (`history_userid`),
870 INDEX (`history_last_used` DESC)",
871 'History of used data');
874 registerFilter(__FILE__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', FALSE, TRUE, isExtensionDryRun());
876 // Update notes (these will be set as task text!)
877 setExtensionUpdateNotes("Allgemeine Historie-Tabelle hinzugefügt.");
880 case '0.8.5': // SQL queries for v0.8.5
881 // Old-lost configuration entry
882 addConfigDropSql('ext_autopurge');
884 // Update notes (these will be set as task text!)
885 setExtensionUpdateNotes("Uralten Konfigurationseintrag entfernt.");
888 case '0.8.6': // SQL queries for v0.8.6
889 addExtensionChangeTableColumnSql('points_data', 'payment_method', 'payment_method', "ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL'");
890 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_points_data` SET `payment_method`='REFERRAL' WHERE `payment_method` != 'DIRECT'");
892 // Update notes (these will be set as task text!)
893 setExtensionUpdateNotes("Referral/REFERRAL soll es überall heissen (ist ein Typo nur mit einem R zu schreiben).");
896 case '0.8.7': // SQL queries for v0.8.7
897 addConfigAddSql('admin_menu_javascript', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
899 // Update notes (these will be set as task text!)
900 setExtensionUpdateNotes("Es kann ausgewählt werden, ob das herkömliche JavaScrit-lose Menü oder mit JavaScript aktiv sein soll. Das herkömliche ist erstmal Standardeinstellung, bis das JavaScript-Menü funktioniert.");
903 case '0.8.8': // SQL queries for v0.8.8
904 addExtensionDropTableIndexSql('points_data', 'subject');
905 addExtensionAddTableUniqueSql('points_data', 'subject', '(`subject`)');
907 // Update notes (these will be set as task text!)
908 setExtensionUpdateNotes("Der Wert in der Spalte <strong>subject</strong> sollte nur einmal vorkommen, damit eventuell nichts mehrfach durchfl&auuml;ft.");
911 case '0.8.9': // SQL queries for v0.8.9
912 addExtensionAddTableColumnSql('points_data', 'account_provider', "ENUM('EXTENSION', 'CUSTOM') NOT NULL DEFAULT 'EXTENSION'");
913 addConfigAddSql('points_remove_account', "VARCHAR(255) NOT NULL DEFAULT 'points'");
915 // Update notes (these will be set as task text!)
916 setExtensionUpdateNotes(""Provider" hinzugefügt, welcher nur <strong>Erweiterung</strong> oder <strong>Selbstdefiniert sein kann. Es können dann auch nur selbstdefinierte gelöscht oder editiert werden, Erweiterungen können auch nur "einige" Einträge löschen.");
919 case '0.9.0': // SQL queries for v0.9.0
921 registerFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', FALSE, TRUE, isExtensionDryRun());
923 // Register points data
924 registerExtensionPointsData('admin_add_single', 'points', 'LOCKED', 'DIRECT');
925 registerExtensionPointsData('admin_add_single_ref', 'points', 'LOCKED', 'DIRECT');
926 registerExtensionPointsData('admin_add_all', 'points', 'LOCKED', 'DIRECT');
927 registerExtensionPointsData('admin_add_all_ref', 'points', 'LOCKED', 'DIRECT');
929 // Update notes (these will be set as task text!)
930 setExtensionUpdateNotes("Filter zum Initialisieren von ext-sql_patches registriert und Einträge in <strong>{?_MYSQL_PREFIX?}_points_data</strong> hinzugefügt.");
933 case '0.9.1': // SQL queries for v0.9.1
935 addAdminMenuSql('misc', 'list_server_name', 'Verkehrte Domains auflisten', 'Listet alle als verkehrt erkannten Domains auf.', 4);
938 addCreateTableSql('server_name_log', "
939 `server_name_id` BIGINT (20) NOT NULL AUTO_INCREMENT,
940 `server_name` VARCHAR (255) NOT NULL DEFAULT 'invalid',
941 `server_name_remote_addr` VARCHAR (15) NOT NULL DEFAULT '0.0.0.0',
942 `server_name_ua` TINYTEXT NULL DEFAULT NULL,
943 `server_name_referrer` TINYTEXT NULL DEFAULT NULL,
944 `server_name_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
945 `server_name_counter` BIGINT (20) NOT NULL DEFAULT 1,
946 PRIMARY KEY (`server_name_id`)
947 ", 'Logging of wrong SERVER_NAME');
949 // Update notes (these will be set as task text!)
950 setExtensionUpdateNotes("Loggen von falschen <strong>SERVER_NAME</strong> Einträgen hinzugefügt.");
953 case '0.9.2': // SQL queries for v0.9.2
954 addExtensionAddTableColumnSql('server_name_log', 'server_name_remote_addr', "VARCHAR (15) NOT NULL DEFAULT '0.0.0.0'");
955 addExtensionAddTableColumnSql('server_name_log', 'server_name_counter', 'BIGINT (20) NOT NULL DEFAULT 0');
956 addExtensionAddTableColumnSql('server_name_log', 'server_name_ua', 'TINYTEXT NULL DEFAULT NULL');
957 addExtensionAddTableColumnSql('server_name_log', 'server_name_referrer', 'TINYTEXT NULL DEFAULT NULL');
959 // Update notes (these will be set as task text!)
960 setExtensionUpdateNotes("Sorry, hatte noch IP-Nummer, User-Agent, aufrufende Seite und Zähler vergessen.");
963 case '0.9.3': // SQL queries for v0.9.3
964 addConfigAddSql('ap_server_name', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
965 addConfigAddSql('ap_server_name_since', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
968 registerFilter(__FILE__, __LINE__, 'extra_autopurge', 'SERVER_NAME_EXTRA_AUTOPURGE', FALSE, TRUE, isExtensionDryRun());
970 // Update notes (these will be set as task text!)
971 setExtensionUpdateNotes("Bereinigung von verkehrten <strong>SERVER_NAME</strong> Einträgen hinzugefügt.");
974 case '0.9.4': // SQL queries for v0.9.4
975 addAdminMenuSql('setup', 'list_referral_levels', 'Referral-Ebenen', 'Erlaubt das Auflisten, hinzufügen, ändern und löschen von Referral-Ebenen. Seien Sie beim Löschen vorsichtig, da deren Id-Nummern zum Verknüpfen verwendet werden. Sollten Sie also eine Ebene löschen, in der Mitglieder {OPEN_CONFIG}POINTS{CLOSE_CONFIG} haben sollten, sind diese verloren.', 15);
976 addExtensionChangeTableColumnSql('refdepths', 'percents', 'percents', 'FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
978 // Update notes (these will be set as task text!)
979 setExtensionUpdateNotes("Auflisten (usw.) von Referral-Ebenen ausgelagert in eigenen Menüpunkt. Referral-Prozente dürfen nun auch 5 Stellen hinter dem Komma haben.");
982 case '0.9.5': // SQL queries for v0.9.5
983 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_cats' WHERE `action`='setup' AND `what`='config_cats' LIMIT 1");
985 // Update notes (these will be set as task text!)
986 setExtensionUpdateNotes("Menüpunkt umbenannt, da "config" nur für die Konfigurationstabelle <strong>{?_MYSQL_PREFIX?}_config</strong> ist.");
989 case '0.9.6': // SQL queries for v0.9.6
991 registerFilter(__FILE__, __LINE__, 'determine_menu_mode', 'DETERMINE_MENU_MODE_GENERIC', FALSE, TRUE, isExtensionDryRun());
993 // Update notes (these will be set as task text!)
994 setExtensionUpdateNotes("Filter hinzugefügt, der den Menümodus für weitere von dieser Erweiterung benutzten Module erkennen soll.");
997 case '0.9.7': // SQL queries for v0.9.7
999 registerFilter(__FILE__, __LINE__, 'config_userid_exclusion_sql', 'EXCLUDE_DEFAULT_REFID', FALSE, TRUE, isExtensionDryRun());
1001 // Update notes (these will be set as task text!)
1002 setExtensionUpdateNotes("Filter hinzugefügt, der die Standard-Referral-Id für SQL-Befehle ausschliesst.");
1007 case 'modify': // When the extension got modified
1010 case 'test': // For testing purposes
1013 case 'init': // Do stuff when extension is initialized
1016 default: // Unknown extension mode
1017 reportBug(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));