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.5');
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'));
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());
114 case 'activate': // Do stuff when admin activates this extension
115 // SQL commands to run
119 case 'deactivate': // Do stuff when admin deactivates this extension
120 // SQL commands to run
124 case 'update': // Update an extension
125 switch (getCurrentExtensionVersion()) {
126 case '0.0.1': // SQL queries for v0.0.1
127 addAdminMenuSql('setup', 'config_extensions', 'Erweitungsmanagement', 'Alle Einstellungen am Erweiterungsmanagement.', 10);
129 // Update notes (these will be set as task text!)
130 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.");
133 case '0.0.2': // SQL queries for v0.0.2
134 addConfigChangeSql('auto_purge', 'auto_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay()*14));
136 // Update notes (these will be set as task text!)
137 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.)");
140 case '0.0.3': // SQL queries for v0.0.3
141 addConfigAddSql('points_word', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_TEMPLATE}DEFAULT_POINTS{CLOSE_TEMPLATE}'");
143 // Update notes (these will be set as task text!)
144 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.");
147 case '0.0.4': // SQL queries for v0.0.4
148 addConfigAddSql('mails_page', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
150 // Update notes (these will be set as task text!)
151 setExtensionUpdateNotes("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugefügt.");
154 case '0.0.5': // SQL queries for v0.0.5
155 addConfigAddSql('index_home', "VARCHAR(255) NOT NULL DEFAULT 'welcome'");
156 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);
158 // Update notes (these will be set as task text!)
159 setExtensionUpdateNotes("Die what-welcome.php ist derzeit die "Home"-Seite (Eingangsseite). Dies kann nun per Datenbank geändert werden.");
162 case '0.0.6': // SQL queries for v0.0.6
163 addExtensionAddTableColumnSql('extensions', 'ext_has_css', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
165 // Update notes (these will be set as task text!)
166 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.");
169 case '0.0.7': // SQL queries for v0.0.7
170 addConfigAddSql('verbose_sql', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
172 // Update notes (these will be set as task text!)
173 setExtensionUpdateNotes("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
176 case '0.0.8': // SQL queries for v0.0.8
177 addConfigAddSql('menu_blur_spacer', "VARCHAR(255) NOT NULL DEFAULT ' <strong><big>·</big></strong> '");
179 // Update notes (these will be set as task text!)
180 setExtensionUpdateNotes("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
183 case '0.0.9': // SQL queries for v0.0.9
184 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);
186 // Update notes (these will be set as task text!)
187 setExtensionUpdateNotes("Unbestätigte Maillinks können unter Email-Management -> Unbest. Mails auflisten aufgelistet werden.");
190 case '0.1.0': // SQL queries for v0.1.0
191 // Update notes (these will be set as task text!)
192 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?");
195 case '0.1.1': // SQL queries for v0.1.1
196 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");
197 addConfigAddSql('index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
198 addConfigAddSql('index_cookie', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 365));
200 // Update notes (these will be set as task text!)
201 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.");
204 case '0.1.2': // SQL queries for v0.1.2
205 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);
206 addConfigAddSql('def_refid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
208 // Update notes (these will be set as task text!)
209 setExtensionUpdateNotes("Standard Referral-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
212 case '0.1.3': // SQL queries for v0.1.3
213 addConfigAddSql('refid_target', "ENUM('register','index') NOT NULL DEFAULT 'register'");
215 // Update notes (these will be set as task text!)
216 setExtensionUpdateNotes("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
219 case '0.1.4': // SQL queries for v0.1.4
220 // Update notes (these will be set as task text!)
221 setExtensionUpdateNotes("Ungültiges Update (nach ext-theme.php verschoben!).");
224 case '0.1.5': // SQL queries for v0.1.5
225 addExtensionDropTableColumnSql('extensions', 'ext_has_admin');
227 // Update notes (these will be set as task text!)
228 setExtensionUpdateNotes("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{?_MYSQL_PREFIX?}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
231 case '0.1.6': // SQL queries for v0.1.6
232 addConfigAddSql('enable_title_deco', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
233 addConfigAddSql('title_left', "VARCHAR(10) NOT NULL DEFAULT '[--'");
234 addConfigAddSql('title_middle', "VARCHAR(10) NOT NULL DEFAULT '-'");
235 addConfigAddSql('title_right', "VARCHAR(10) NOT NULL DEFAULT '--]'");
236 addConfigAddSql('enable_mod_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
237 addConfigAddSql('enable_what_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
238 addAdminMenuSql('setup','config_title','Seitentitel ändern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8);
240 // Update notes (these will be set as task text!)
241 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.");
244 case '0.1.7': // SQL queries for v0.1.7
245 // Update notes (these will be set as task text!)
246 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
249 case '0.1.8': // SQL queries for v0.1.8
250 // Update notes (these will be set as task text!)
251 setExtensionUpdateNotes("mad_count und last_mad werden nun aus der Datenbank geladen");
254 case '0.1.9': // SQL queries for v0.1.9
255 // Update notes (these will be set as task text!)
256 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
259 case '0.2.0': // SQL queries for v0.2.0
260 addExtensionChangeTableColumnSql('jackpot', 'points', 'points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
262 addExtensionChangeTableColumnSql('payments', 'payment', 'payment', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
263 addExtensionChangeTableColumnSql('payments', 'price', 'price', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
265 // Update notes (these will be set as task text!)
266 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
269 case '0.2.1': // SQL queries for v0.2.1
270 addConfigAddSql('css_php', "ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
272 // Update notes (these will be set as task text!)
273 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
276 case '0.2.2': // SQL queries for v0.2.2
277 // Update notes (these will be set as task text!)
278 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
281 case '0.2.3': // SQL queries for v0.2.3
282 addConfigAddSql('guest_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
283 addConfigAddSql('member_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
284 addConfigAddSql('youre_here', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
286 // Update notes (these will be set as task text!)
287 setExtensionUpdateNotes("Gast- und Mitgliedsmenüs lassen sich getrennt voneinander abschalten.");
290 case '0.2.4': // SQL queries for v0.2.4
291 // PNG image is the default
294 // Is the JPEG file found and required PHP function there?
295 if ((!isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.png')) || (!function_exists('imagecreatefrompng'))) {
296 // Switch to JPEG format because PNG is not available
299 addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
301 // Update notes (these will be set as task text!)
302 setExtensionUpdateNotes("Generierung des Mailbestätigungscodes hängt davon ab, ob die PHP-Funktion <u>imagecreatefromjpeg()</u> und das JPEG-Bild vorhanden sind oder nicht.");
305 case '0.2.5': // SQL queries for v0.2.5
306 // Update notes (these will be set as task text!)
307 setExtensionUpdateNotes("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
310 case '0.2.6': // SQL queries for v0.2.6
311 // Update notes (these will be set as task text!)
312 setExtensionUpdateNotes("Verschoben nach <strong>ext-user</strong>.");
315 case '0.2.7': // SQL queries for v0.2.7
316 addConfigAddSql('stats_limit', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
317 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
319 // Update notes (these will be set as task text!)
320 setExtensionUpdateNotes("<ol>
321 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
322 <li>Mitgliederstatistik mit Seitennavigation.</li>
326 case '0.2.8': // SQL queries for v0.2.8
327 // Update notes (these will be set as task text!)
328 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
331 case '0.2.9': // SQL queries for v0.2.9
332 addConfigAddSql('mt_word', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
333 addConfigAddSql('mt_word2', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
334 addConfigAddSql('mt_word3', "VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
336 // Update notes (these will be set as task text!)
337 setExtensionUpdateNotes("Wörter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
340 case '0.3.0': // SQL queries for v0.3.0
341 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG}/Referral-Ebenen' WHERE `what`='config_points' LIMIT 1");
342 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailvergütungen...' WHERE `what`='payments' LIMIT 1");
344 // Update notes (these will be set as task text!)
345 setExtensionUpdateNotes("Zwei Menüpunkte umbenannt.");
348 case '0.3.1': // SQL queries for v0.3.1
349 addExtensionAddTableUniqueSql('extensions', 'ext_name', '(`ext_name`)');
350 addExtensionAddTableUniqueSql('admins', 'login', '(`login`)');
351 addExtensionAddTableIndexSql('refbanner', 'visible', '(`visible`)');
352 addExtensionAddTableUniqueSql('refdepths', 'level', '(`level`)');
353 addExtensionAddTableIndexSql('refsystem', 'level', '(`level`)');
354 addExtensionAddTableIndexSql('pool', 'data_type', '(`data_type`)');
355 addExtensionAddTableUniqueSql('mod_reg', 'module', '(`module`)');
356 addExtensionAddTableIndexSql('admin_menu', 'action', '(`action`)');
357 addExtensionAddTableIndexSql('admin_menu', 'what', '(`what`)');
358 addExtensionAddTableIndexSql('task_system', 'task_type', '(`task_type`)');
359 addExtensionAddTableIndexSql('task_system', 'status', '(`status`)');
360 addExtensionAddTableIndexSql('task_system', 'task_created', '(`task_created`)');
361 addExtensionAddTableFulltextSql('task_system', 'subject', '(`subject`)');
362 addExtensionAddTableIndexSql('task_system', 'subject', '(`subject`)');
363 addExtensionAddTableIndexSql('extensions', 'ext_active', '(`ext_active`)');
364 addExtensionAddTableIndexSql('guest_menu', 'action', '(`action`)');
365 addExtensionAddTableIndexSql('guest_menu', 'what', '(`what`)');
366 addExtensionAddTableIndexSql('guest_menu', 'sort', '(`sort`)');
367 addExtensionAddTableIndexSql('guest_menu', 'visible', '(`visible`)');
368 addExtensionAddTableIndexSql('guest_menu', 'locked', '(`locked`)');
369 addExtensionAddTableIndexSql('member_menu', 'what', '(`what`)');
370 addExtensionAddTableIndexSql('member_menu', 'sort', '(`sort`)');
371 addExtensionAddTableIndexSql('member_menu', 'visible', '(`visible`)');
372 addExtensionAddTableIndexSql('member_menu', 'locked', '(`locked`)');
373 addExtensionAddTableIndexSql('cats', 'visible', '(`visible`)');
374 addExtensionAddTableIndexSql('cats', 'sort', '(`sort`)');
376 // Update notes (these will be set as task text!)
377 setExtensionUpdateNotes("Eindeutige Schlüssel (UNIQUE) und normale Schlüssel (INDEX) gesetzt.");
380 case '0.3.2': // SQL queries for v0.3.2
381 // Connection table between the menu system and the "logical area system"
382 addDropTableSql('admin_menu_las');
383 addCreateTableSql('admin_menu_las', "
384 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
385 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
386 `la_action` VARCHAR(255) NOT NULL DEFAULT '',
387 `la_what` VARCHAR(255) NOT NULL DEFAULT '',
392 'Menu system -> LAS');
394 // All "logical areas" together
395 addDropTableSql('admin_menu_las_data');
396 addCreateTableSql('admin_menu_las_data', "
397 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
398 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
399 `la_title` VARCHAR(255) NOT NULL DEFAULT '',
400 `la_posx` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
401 `la_posy` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
403 UNIQUE INDEX (`la_id`),
406 'LAS position and title data');
408 // Which menu do you like?
409 addConfigAddSql('admin_menu', "ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
412 addAdminMenuSql('setup', 'config_admin', 'Adminmenü', 'Diverse Einstellungen am Adminmenü vornehmen.', 9);
414 // Update notes (these will be set as task text!)
415 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.");
418 case '0.3.3': // SQL queries for v0.3.3
419 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
420 addConfigAddSql('admin_menu_sorter', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
422 // The statistics table
423 addDropTableSql('admin_las_stats');
424 addCreateTableSql('admin_las_stats', "
425 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
426 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
427 `type` ENUM('la','action','what') NOT NULL DEFAULT 'what',
428 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
433 // Update notes (these will be set as task text!)
434 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.");
437 case '0.3.4': // SQL queries for v0.3.4
438 // Update notes (these will be set as task text!)
439 setExtensionUpdateNotes("Veraltetes Update (what=list_user&mode=noref)");
442 case '0.3.5': // SQL queries for v0.3.5
443 // List accounts with no referral
444 addMemberMenuSql('stats', NULL, 'Statistiken', 4);
445 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 2);
446 addMemberMenuSql('extras', NULL, 'Extras', 5);
447 addMemberMenuSql('rals', NULL, 'Rallyes', 6);
448 addMemberMenuSql('account', NULL, 'Ihr Account', 7);
449 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='stats',`sort`=1,`title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
450 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras',`sort`=3 WHERE `what`='reflinks' LIMIT 1");
452 // Update notes (these will be set as task text!)
453 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
456 case '0.3.6': // SQL queries for v0.3.6
457 addConfigAddSql('salt_length', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
458 addConfigAddSql('pass_scramble', "VARCHAR(255) NOT NULL DEFAULT ''");
459 addExtensionChangeTableColumnSql('admins', 'password', 'password', "VARCHAR(255) NOT NULL DEFAULT ''");
460 addConfigAddSql('rand_no', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
461 addConfigAddSql('file_hash', "VARCHAR(255) NOT NULL DEFAULT ''");
462 addConfigAddSql('master_salt', "VARCHAR(255) NOT NULL DEFAULT ''");
463 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_config` SET `rand_no`=(ROUND(RAND() * 99999) + 100000) WHERE `config`=0 LIMIT 1");
464 addExtensionAddTableColumnSql('mod_reg', 'has_menu', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
465 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `has_menu`='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
467 // Update notes (these will be set as task text!)
468 setExtensionUpdateNotes("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
471 case '0.3.7': // SQL queries for v0.3.7
472 setExtensionUpdateNotes("Problem während des Installationsvorganges behoben.");
475 case '0.3.8': // SQL queries for v0.3.8
476 addExtensionChangeTableColumnSql('admin_menu', 'descr', 'descr', 'MEDIUMTEXT NULL');
477 addExtensionChangeTableColumnSql('pool', 'text', 'text', 'LONGTEXT NOT NULL');
479 // Update notes (these will be set as task text!)
480 setExtensionUpdateNotes("Beschreibungstexte für Admin-Menüs können länger sein. Diverse Fixes.");
483 case '0.3.9': // SQL queries for v0.3.9
484 // Update notes (these will be set as task text!)
485 setExtensionUpdateNotes("Beschreibungstexte für Admin-Menüs können länger sein. Diverse Fixes.");
488 case '0.4.0': // SQL queries for v0.4.0
489 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Email-Management' WHERE `action` = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
491 // Update notes (these will be set as task text!)
492 setExtensionUpdateNotes("Email-Verwaltung nach Email-Management umbenannt.");
495 case '0.4.1': // SQL queries for v0.4.1
496 addConfigAddSql('show_timings', "ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
498 // Update notes (these will be set as task text!)
499 setExtensionUpdateNotes("Tabellen-Schlüssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
502 case '0.4.2': // SQL queries for v0.4.2
503 // Update notes (these will be set as task text!)
504 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
507 case '0.4.3': // SQL queries for v0.4.3
508 addConfigAddSql('proxy_host', "VARCHAR(255) NOT NULL DEFAULT ''");
509 addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
510 addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
511 addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
512 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);
514 // Update notes (these will be set as task text!)
515 setExtensionUpdateNotes("Proxy-Einstellungen hinzugefügt.");
518 case '0.4.4': // SQL queries for v0.4.4
519 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
520 addExtensionChangeTableColumnSql('guest_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
521 addExtensionChangeTableColumnSql('member_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
522 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`=NULL WHERE `what`=''");
523 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `what`=NULL WHERE `what`=''");
524 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `what`=NULL WHERE `what`=''");
526 // Make this depending on ext-menu
527 addExtensionDependency('menu');
529 // Update notes (these will be set as task text!)
530 setExtensionUpdateNotes("Schlüssel in Admin-, Gast- und Mitgliedsmenü verbessert.");
533 case '0.4.5': // SQL queries for v0.4.5
534 addConfigAddSql('last_month', 'CHAR(2) NOT NULL DEFAULT 00');
535 addConfigAddSql('last_week', 'CHAR(2) NOT NULL DEFAULT 00');
537 // Update notes (these will be set as task text!)
538 setExtensionUpdateNotes("Täglichen/wöchentlichen/monatlichen Reset verbessert.");
541 case '0.4.6': // SQL queries for v0.4.6
542 // Update notes (these will be set as task text!)
543 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
546 case '0.4.7': // SQL queries for v0.4.7
547 // Update notes (these will be set as task text!)
548 setExtensionUpdateNotes("Veraltetes Update.");
551 case '0.4.8': // SQL queries for v0.4.8
552 addExtensionAddTableIndexSql('task_system', 'subject', '(`subject`)');
554 // Update notes (these will be set as task text!)
555 setExtensionUpdateNotes("Index für Betreff eingefügt.");
558 case '0.4.9': // SQL queries for v0.4.9
559 // Update notes (these will be set as task text!)
560 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
563 case '0.5.0': // SQL queries for v0.5.0
564 addExtensionDropTableIndexSql('refsystem', 'level`');
565 addExtensionDropTableIndexSql('refsystem', 'userid`');
566 addExtensionAddTableIndexSql('refsystem', 'userid_level', '(`userid`, `level`)');
568 // Update notes (these will be set as task text!)
569 setExtensionUpdateNotes("Referral-System unterstützt nun detailierte Referral-Übersicht und vieles mehr.");
572 case '0.5.1': // SQL queries for v0.5.1
573 addExtensionDropTableColumnSql('member_menu', 'descr');
575 // Update notes (these will be set as task text!)
576 setExtensionUpdateNotes("Beschreibungsspalte von Mitgliedsmenü entfernt, welche ohnehin nicht genutzt wird.");
579 case '0.5.2': // SQL queries for v0.5.2
580 addExtensionChangeTableColumnSql('refdepths', 'percents', 'percents', 'FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
582 // Update notes (these will be set as task text!)
583 setExtensionUpdateNotes("Prozentsätze können nun fünf Stellen hinter dem Komma sein.");
586 case '0.5.3': // SQL queries for v0.5.3
587 addConfigAddSql('session_save_path', "VARCHAR(255) NOT NULL DEFAULT ''");
588 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);
590 // Update notes (these will be set as task text!)
591 setExtensionUpdateNotes("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com nötig.");
594 case '0.5.4': // SQL queries for v0.5.4
595 addMemberMenuSql('main', 'reflist', 'Ref-Übersicht', 5);
597 // Update notes (these will be set as task text!)
598 setExtensionUpdateNotes("Ref-Übersicht eingebaut. Diese hängt von der Erweiterung <strong>refback</strong> ab.");
601 case '0.5.5': // SQL queries for v0.5.5
602 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
604 // Update notes (these will be set as task text!)
605 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbestätigten Mails kann nun optional abgeschaltet werden.");
608 case '0.5.6': // SQL queries for v0.5.6
609 // Update notes (these will be set as task text!)
610 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
613 case '0.5.7': // SQL queries for v0.5.7
614 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
616 // Update notes (these will be set as task text!)
617 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&mode=norefs verschoben.");
620 case '0.5.8': // SQL queries for v0.5.8
621 addExtensionDropTableColumnSql('extensions` DROP `ext_lang_file`');
623 // Update notes (these will be set as task text!)
624 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
627 case '0.5.9': // SQL queries for v0.5.9
628 // Table 'filters' is vital because many functionality depends on it, so don't remove it
629 addCreateTableSql('filters', "
630 `filter_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
631 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
632 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
633 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
634 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
635 PRIMARY KEY (`filter_id`),
636 UNIQUE INDEX `name_function` (`filter_name`, `filter_function`)",
640 addAdminMenuSql('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und lässt diese de- bzw. wieder aktivieren.', 17);
642 // Update notes (these will be set as task text!)
643 setExtensionUpdateNotes("Tabellen für Filter-System hinzugefügt.");
646 case '0.6.0': // SQL queries for v0.6.0
647 addConfigAddSql('update_filter_usage', "ENUM('N','Y') NOT NULL DEFAULT 'N'");
649 // Update notes (these will be set as task text!)
650 setExtensionUpdateNotes("Benutzungsstatistik eingebaut. Das Zählen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
653 case '0.6.1': // SQL queries for v0.6.1
654 // Update notes (these will be set as task text!)
655 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
658 case '0.6.2': // SQL queries for v0.6.2
659 // Depends on refback extension
660 addExtensionDependency('user');
662 // Update notes (these will be set as task text!)
663 setExtensionUpdateNotes("Abhängigkeit von <u>ext-user</u> gesetzt.");
666 case '0.6.3': // SQL queries for v0.6.3
667 // Update notes (these will be set as task text!)
668 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.");
670 // Add special fix include to fix filters
671 addIncludeToPool('extension', 'inc/fix_filters.php');
674 case '0.6.4': // SQL queries for v0.6.4
676 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
677 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `descr` = REPLACE(`descr`, '!POINTS!', '?POINTS?') WHERE `descr` LIKE '%!POINTS!%'");
678 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
679 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
681 // Update notes (these will be set as task text!)
682 setExtensionUpdateNotes("Datenbank umgestellt auf Konfigurationselemente.");
685 case '0.6.5': // SQL queries for v0.6.5
686 addConfigChangeSql('css_php', 'css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
688 // Update notes (these will be set as task text!)
689 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
692 case '0.6.6': // SQL queries for v0.6.6
693 addAdminMenuSql('setup', 'config_secure', 'Sicherheitseinstellungen', 'Stellen Sie ein, wie lange das Passwort eines Mitgliedes mindestens sein muss uvm.', 9);
694 addAdminMenuSql('setup', 'config_points', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG}', 'Stellen Sie hier die Willkommensgutschrift, Referral-Gutschrift (einmalige) usw. ein.', 10);
695 addAdminMenuSql('email', 'email_archiv', 'E-Mail Archiv', 'Sehen Sie sich hier bereits gesendete Mails an.', 6);
697 // Update notes (these will be set as task text!)
698 setExtensionUpdateNotes("Die Sicherheitseinstellungen, {?POINTS?}-Einstellungen und Email-Archiv funktionieren nur, wenn diese Erweiterung installiert ist.");
701 case '0.6.7': // SQL queries for v0.6.7
702 addConfigChangeSql('index_delay', 'index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
704 // Update notes (these will be set as task text!)
705 setExtensionUpdateNotes("Die Weiterleitungseinstellung muss auch Werte kleiner Null akzeptieren.");
708 case '0.6.8': // SQL queries for v0.6.8
709 addExtensionChangeTableColumnSql('admin_menu', 'action', 'action', 'VARCHAR(50) NOT NULL');
710 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(50) NULL DEFAULT NULL');
711 addExtensionChangeTableColumnSql('guest_menu', 'action', 'action', 'VARCHAR(50) NOT NULL');
712 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(50) NULL DEFAULT NULL');
713 addExtensionChangeTableColumnSql('member_menu', 'action', 'action', 'VARCHAR(50) NOT NULL');
714 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(50) NULL DEFAULT NULL');
716 // Update notes (these will be set as task text!)
717 setExtensionUpdateNotes("Spalten verkürzt, damit die Schlüssel passen.");
720 case '0.6.9': // SQL queries for 0.6.9
722 registerFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', FALSE, TRUE, isExtensionDryRun());
724 // Update notes (these will be set as task text!)
725 setExtensionUpdateNotes("Filter zum Zurücksetzens des fehlgeschlagenen Mitgliederlogins hinzugefügt (internes TODO).");
728 case '0.7.0': // SQL queries for 0.7.0
730 addDropTableSql('dns_cache');
731 addCreateTableSql('dns_cache', "
732 `hostname` VARCHAR(255) NOT NULL,
733 `ip` VARCHAR(15) NOT NULL,
734 `added` DATETIME NOT NULL,
735 PRIMARY KEY (`hostname`),
737 'Cache for DNS requests');
740 addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
743 registerFilter(__FILE__, __LINE__, 'reset', 'CLEANUP_DNS_CACHE', FALSE, TRUE, isExtensionDryRun());
745 // Update notes (these will be set as task text!)
746 setExtensionUpdateNotes("IP-Resolver-Klasse hinzugefügt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
749 case '0.7.1': // SQL queries for v0.7.1
750 // This update just depends on ext-timezone to make integration of an essential extension much easier
751 addExtensionDependency('timezone');
753 // Update notes (these will be set as task text!)
754 setExtensionUpdateNotes("Zeitzone ist nun mit ext-timezone konfigurierbar.");
757 case '0.7.2': // SQL queries for v0.7.2
758 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `task_type`='MEMBER_SUPPORT' WHERE `task_type`='SUPPORT_MEMBER'");
760 // Update notes (these will be set as task text!)
761 setExtensionUpdateNotes("Daten an Namenskonvention angepasst.");
764 case '0.7.3': // SQL queries for v0.7.3
765 addExtensionChangeTableColumnSql('filters', 'filter_name', 'filter_name', "VARCHAR(50) NOT NULL DEFAULT ''");
766 addExtensionChangeTableColumnSql('filters', 'filter_function', 'filter_function', "VARCHAR(100) NOT NULL DEFAULT ''");
768 // Update notes (these will be set as task text!)
769 setExtensionUpdateNotes("Spalten in Filtertabelle gekürzt (SQL-Fehler wegen zu grossem Schlüssel).");
772 case '0.7.4': // SQL queries for v0.7.4
773 addExtensionAddTableColumnSql('pool', 'mails_sent', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
775 // Update notes (these will be set as task text!)
776 setExtensionUpdateNotes("Spalten in Filtertabelle gekürzt (SQL-Fehler wegen zu grossem Schlüssel).");
779 case '0.7.5': // SQL queries for v0.7.5
780 addConfigAddSql('last_hour', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
782 // Update notes (these will be set as task text!)
783 setExtensionUpdateNotes("Aktuelle Stunde hinzugefügt (ist nicht konfigurierbar).");
786 case '0.7.6': // SQL queries for v0.7.6
787 addConfigChangeSql('last_month', 'last_month', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
788 addConfigChangeSql('last_week', 'last_week', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
790 // Update notes (these will be set as task text!)
791 setExtensionUpdateNotes("Spaltentyp fuer kleine Zahlen sollten auch z.B. TINYINT sein.");
794 case '0.7.7': // SQL queries for v0.7.7
795 addMemberMenuSql('earn', NULL, 'Verdienen', 2);
796 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='earn',`sort`=1 WHERE `what`='unconfirmed' LIMIT 1");
798 // Update notes (these will be set as task text!)
799 setExtensionUpdateNotes("Menüpunkt <strong>Verdienen</strong> hinzugefügt und <strong>Unbestätigte Mails</strong> als ersten Punkt dort hin verschoben.");
802 case '0.7.8': // SQL queries for v0.7.8
803 // Update notes (these will be set as task text!)
804 setExtensionUpdateNotes("Konfigurationseinträge mit Spaltentyp <strong>ENUM</strong> werden nun immer komplett gross geschrieben.");
807 case '0.7.9': // SQL queries for v0.7.9
808 addExtensionSQL("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_email_max_rec' WHERE `what`='config_email' LIMIT 1");
810 // Update notes (these will be set as task text!)
811 setExtensionUpdateNotes("Adminscript <strong>what-config_email.php</strong> nach <strong>what-list_email_max_rec.php</strong> umbenannt.");
814 case '0.8.0': // SQL queries for v0.8.0
815 // Points account data (this table should not be dropped or else you may have to re-install a lot extensions)
816 addCreateTableSql('points_data', "
817 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
818 `subject` VARCHAR(255) NOT NULL DEFAULT '',
819 `column_name` VARCHAR(255) NOT NULL DEFAULT 'points',
820 `locked_mode` ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED',
821 `payment_method` ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL',
822 `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N',
824 UNIQUE KEY (`subject`)",
825 'Points account data');
828 addAdminMenuSql('setup', 'list_point_accounts', 'Guthabenkonten...', 'Veralten Sie hier bequem Einstellungen zu den Guthabenkonten.', 5);
830 // Update notes (these will be set as task text!)
831 setExtensionUpdateNotes("Tabelle <span class=\"bad\">points_data</span> erzeugt, diese soll das {?POINTS?}-Guthaben komplett lenken.");
834 case '0.8.1': // SQL queries for v0.8.1
835 addExtensionChangeTableColumnSql('refdepths', 'level', 'level', 'TINYINT(3) UNSIGNED NULL DEFAULT NULL');
836 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_refdepths` SET `level`=NULL WHERE `level`=0 LIMIT 1');
838 // Update notes (these will be set as task text!)
839 setExtensionUpdateNotes("Level 0 ist nun auch NULL.");
842 case '0.8.2': // SQL queries for v0.8.2
843 addExtensionDropTableIndexSql('points_data', 'ext_name');
844 addExtensionChangeTableColumnSql('points_data', 'ext_name', 'subject', "VARCHAR(255) NOT NULL DEFAULT ''");
845 addExtensionAddTableColumnSql('points_data', 'notify_recipient', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
847 // Register points data
848 registerExtensionPointsData('pool_payback', 'points', 'LOCKED', 'DIRECT');
849 registerExtensionPointsData('mail_deleted', 'points', 'LOCKED', 'DIRECT');
851 // Remove deprecated configuration entry
852 addConfigDropSql('reg_points_mode');
854 // Update notes (these will be set as task text!)
855 setExtensionUpdateNotes("Es sollte der Gutschriftenbetreff und nicht der Erweiterungsname gepeichert werden, zudem brauchen wir einen Konfigurationseintrag nicht mehr.");
858 case '0.8.3': // SQL queries for v0.8.3
859 addConfigAddSql('display_home_in_index', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
861 // Update notes (these will be set as task text!)
862 setExtensionUpdateNotes("Es kann nun die "Home"-Seite in <strong>index.php</strong> angezeigt werden, anstelle der Weiterleitung.");
865 case '0.8.4': // SQL queries for v0.8.4
866 addCreateTableSql('history', "
867 `history_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
868 `history_subject` VARCHAR(255) NOT NULL DEFAULT 'GENERIC',
869 `history_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
870 `history_value` VARCHAR(255) NOT NULL DEFAULT '',
871 `history_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
872 `history_last_used` TIMESTAMP NULL DEFAULT NULL,
873 PRIMARY KEY (`history_id`),
874 INDEX `userid` (`history_userid`),
875 INDEX (`history_last_used` DESC)",
876 'History of used data');
879 registerFilter(__FILE__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', FALSE, TRUE, isExtensionDryRun());
881 // Update notes (these will be set as task text!)
882 setExtensionUpdateNotes("Allgemeine Historie-Tabelle hinzugefügt.");
885 case '0.8.5': // SQL queries for v0.8.5
886 // Old-lost configuration entry
887 addConfigDropSql('ext_autopurge');
889 // Update notes (these will be set as task text!)
890 setExtensionUpdateNotes("Uralten Konfigurationseintrag entfernt.");
893 case '0.8.6': // SQL queries for v0.8.6
894 addExtensionChangeTableColumnSql('points_data', 'payment_method', 'payment_method', "ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL'");
895 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_points_data` SET `payment_method`='REFERRAL' WHERE `payment_method` != 'DIRECT'");
897 // Update notes (these will be set as task text!)
898 setExtensionUpdateNotes("Referral/REFERRAL soll es überall heissen (ist ein Typo nur mit einem R zu schreiben).");
901 case '0.8.7': // SQL queries for v0.8.7
902 addConfigAddSql('admin_menu_javascript', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
904 // Update notes (these will be set as task text!)
905 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.");
908 case '0.8.8': // SQL queries for v0.8.8
909 addExtensionDropTableIndexSql('points_data', 'subject');
910 addExtensionAddTableUniqueSql('points_data', 'subject', '(`subject`)');
912 // Update notes (these will be set as task text!)
913 setExtensionUpdateNotes("Der Wert in der Spalte <strong>subject</strong> sollte nur einmal vorkommen, damit eventuell nichts mehrfach durchfl&auuml;ft.");
916 case '0.8.9': // SQL queries for v0.8.9
917 addExtensionAddTableColumnSql('points_data', 'account_provider', "ENUM('EXTENSION', 'CUSTOM') NOT NULL DEFAULT 'EXTENSION'");
918 addConfigAddSql('points_remove_account', "VARCHAR(255) NOT NULL DEFAULT 'points'");
920 // Update notes (these will be set as task text!)
921 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.");
924 case '0.9.0': // SQL queries for v0.9.0
926 registerFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', FALSE, TRUE, isExtensionDryRun());
928 // Register points data
929 registerExtensionPointsData('admin_add_single', 'points', 'LOCKED', 'DIRECT');
930 registerExtensionPointsData('admin_add_single_ref', 'points', 'LOCKED', 'DIRECT');
931 registerExtensionPointsData('admin_add_all', 'points', 'LOCKED', 'DIRECT');
932 registerExtensionPointsData('admin_add_all_ref', 'points', 'LOCKED', 'DIRECT');
934 // Update notes (these will be set as task text!)
935 setExtensionUpdateNotes("Filter zum Initialisieren von ext-sql_patches registriert und Einträge in <strong>{?_MYSQL_PREFIX?}_points_data</strong> hinzugefügt.");
938 case '0.9.1': // SQL queries for v0.9.1
940 addAdminMenuSql('misc', 'list_server_name', 'Verkehrte Domains auflisten', 'Listet alle als verkehrt erkannten Domains auf.', 4);
943 addCreateTableSql('server_name_log', "
944 `server_name_id` BIGINT (20) NOT NULL AUTO_INCREMENT,
945 `server_name` VARCHAR (255) NOT NULL DEFAULT 'invalid',
946 `server_name_remote_addr` VARCHAR (15) NOT NULL DEFAULT '0.0.0.0',
947 `server_name_ua` TINYTEXT NULL DEFAULT NULL,
948 `server_name_referrer` TINYTEXT NULL DEFAULT NULL,
949 `server_name_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
950 `server_name_counter` BIGINT (20) NOT NULL DEFAULT 1,
951 PRIMARY KEY (`server_name_id`)
952 ", 'Logging of wrong SERVER_NAME');
954 // Update notes (these will be set as task text!)
955 setExtensionUpdateNotes("Loggen von falschen <strong>SERVER_NAME</strong> Einträgen hinzugefügt.");
958 case '0.9.2': // SQL queries for v0.9.2
959 addExtensionAddTableColumnSql('server_name_log', 'server_name_remote_addr', "VARCHAR (15) NOT NULL DEFAULT '0.0.0.0'");
960 addExtensionAddTableColumnSql('server_name_log', 'server_name_counter', 'BIGINT (20) NOT NULL DEFAULT 0');
961 addExtensionAddTableColumnSql('server_name_log', 'server_name_ua', 'TINYTEXT NULL DEFAULT NULL');
962 addExtensionAddTableColumnSql('server_name_log', 'server_name_referrer', 'TINYTEXT NULL DEFAULT NULL');
964 // Update notes (these will be set as task text!)
965 setExtensionUpdateNotes("Sorry, hatte noch IP-Nummer, User-Agent, aufrufende Seite und Zähler vergessen.");
968 case '0.9.3': // SQL queries for v0.9.3
969 addConfigAddSql('ap_server_name', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
970 addConfigAddSql('ap_server_name_since', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
973 registerFilter(__FILE__, __LINE__, 'extra_autopurge', 'SERVER_NAME_EXTRA_AUTOPURGE', FALSE, TRUE, isExtensionDryRun());
975 // Update notes (these will be set as task text!)
976 setExtensionUpdateNotes("Bereinigung von verkehrten <strong>SERVER_NAME</strong> Einträgen hinzugefügt.");
979 case '0.9.4': // SQL queries for v0.9.4
980 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);
981 addExtensionChangeTableColumnSql('refdepths', 'percents', 'percents', 'FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
983 // Update notes (these will be set as task text!)
984 setExtensionUpdateNotes("Auflisten (usw.) von Referral-Ebenen ausgelagert in eigenen Menüpunkt. Referral-Prozente dürfen nun auch 5 Stellen hinter dem Komma haben.");
987 case '0.9.5': // SQL queries for v0.9.5
988 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_cats' WHERE `action`='setup' AND `what`='config_cats' LIMIT 1");
990 // Update notes (these will be set as task text!)
991 setExtensionUpdateNotes("Menüpunkt umbenannt, da "config" nur für die Konfigurationstabelle <strong>{?_MYSQL_PREFIX?}_config</strong> ist.");
996 case 'modify': // When the extension got modified
999 case 'test': // For testing purposes
1002 case 'init': // Do stuff when extension is initialized
1005 default: // Unknown extension mode
1006 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));