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.1');
46 // Version history array (add more with , '0.0.1' and so on)
47 setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8', '0.6.9', '0.7.0', '0.7.1', '0.7.2', '0.7.3', '0.7.4', '0.7.5', '0.7.6', '0.7.7', '0.7.8', '0.7.9', '0.8.0', '0.8.1', '0.8.2', '0.8.3', '0.8.4', '0.8.5', '0.8.6', '0.8.7', '0.8.8', '0.8.9', '0.9.0', '0.9.1'));
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());
113 case 'activate': // Do stuff when admin activates this extension
114 // SQL commands to run
118 case 'deactivate': // Do stuff when admin deactivates this extension
119 // SQL commands to run
123 case 'update': // Update an extension
124 switch (getCurrentExtensionVersion()) {
125 case '0.0.1': // SQL queries for v0.0.1
126 addAdminMenuSql('setup', 'config_extensions', 'Erweitungsmanagement', 'Alle Einstellungen am Erweiterungsmanagement.', 10);
128 // Update notes (these will be set as task text!)
129 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.");
132 case '0.0.2': // SQL queries for v0.0.2
133 addConfigChangeSql('auto_purge', 'auto_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay()*14));
135 // Update notes (these will be set as task text!)
136 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.)");
139 case '0.0.3': // SQL queries for v0.0.3
140 addConfigAddSql('points_word', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_TEMPLATE}DEFAULT_POINTS{CLOSE_TEMPLATE}'");
142 // Update notes (these will be set as task text!)
143 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.");
146 case '0.0.4': // SQL queries for v0.0.4
147 addConfigAddSql('mails_page', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
149 // Update notes (these will be set as task text!)
150 setExtensionUpdateNotes("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugefügt.");
153 case '0.0.5': // SQL queries for v0.0.5
154 addConfigAddSql('index_home', "VARCHAR(255) NOT NULL DEFAULT 'welcome'");
155 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);
157 // Update notes (these will be set as task text!)
158 setExtensionUpdateNotes("Die what-welcome.php ist derzeit die "Home"-Seite (Eingangsseite). Dies kann nun per Datenbank geändert werden.");
161 case '0.0.6': // SQL queries for v0.0.6
162 addExtensionAddTableColumnSql('extensions', 'ext_has_css', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
164 // Update notes (these will be set as task text!)
165 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.");
168 case '0.0.7': // SQL queries for v0.0.7
169 addConfigAddSql('verbose_sql', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
171 // Update notes (these will be set as task text!)
172 setExtensionUpdateNotes("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
175 case '0.0.8': // SQL queries for v0.0.8
176 addConfigAddSql('menu_blur_spacer', "VARCHAR(255) NOT NULL DEFAULT ' <strong><big>·</big></strong> '");
178 // Update notes (these will be set as task text!)
179 setExtensionUpdateNotes("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
182 case '0.0.9': // SQL queries for v0.0.9
183 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);
185 // Update notes (these will be set as task text!)
186 setExtensionUpdateNotes("Unbestätigte Maillinks können unter Email-Management -> Unbest. Mails auflisten aufgelistet werden.");
189 case '0.1.0': // SQL queries for v0.1.0
190 // Update notes (these will be set as task text!)
191 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?");
194 case '0.1.1': // SQL queries for v0.1.1
195 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");
196 addConfigAddSql('index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
197 addConfigAddSql('index_cookie', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 365));
199 // Update notes (these will be set as task text!)
200 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.");
203 case '0.1.2': // SQL queries for v0.1.2
204 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);
205 addConfigAddSql('def_refid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
207 // Update notes (these will be set as task text!)
208 setExtensionUpdateNotes("Standard Referral-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
211 case '0.1.3': // SQL queries for v0.1.3
212 addConfigAddSql('refid_target', "ENUM('register','index') NOT NULL DEFAULT 'register'");
214 // Update notes (these will be set as task text!)
215 setExtensionUpdateNotes("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
218 case '0.1.4': // SQL queries for v0.1.4
219 // Update notes (these will be set as task text!)
220 setExtensionUpdateNotes("Ungültiges Update (nach ext-theme.php verschoben!).");
223 case '0.1.5': // SQL queries for v0.1.5
224 addExtensionDropTableColumnSql('extensions', 'ext_has_admin');
226 // Update notes (these will be set as task text!)
227 setExtensionUpdateNotes("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{?_MYSQL_PREFIX?}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
230 case '0.1.6': // SQL queries for v0.1.6
231 addConfigAddSql('enable_title_deco', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
232 addConfigAddSql('title_left', "VARCHAR(10) NOT NULL DEFAULT '[--'");
233 addConfigAddSql('title_middle', "VARCHAR(10) NOT NULL DEFAULT '-'");
234 addConfigAddSql('title_right', "VARCHAR(10) NOT NULL DEFAULT '--]'");
235 addConfigAddSql('enable_mod_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
236 addConfigAddSql('enable_what_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
237 addAdminMenuSql('setup','config_title','Seitentitel ändern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8);
239 // Update notes (these will be set as task text!)
240 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.");
243 case '0.1.7': // SQL queries for v0.1.7
244 // Update notes (these will be set as task text!)
245 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
248 case '0.1.8': // SQL queries for v0.1.8
249 // Update notes (these will be set as task text!)
250 setExtensionUpdateNotes("mad_count und last_mad werden nun aus der Datenbank geladen");
253 case '0.1.9': // SQL queries for v0.1.9
254 // Update notes (these will be set as task text!)
255 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
258 case '0.2.0': // SQL queries for v0.2.0
259 addExtensionChangeTableColumnSql('jackpot', 'points', 'points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
261 addExtensionChangeTableColumnSql('payments', 'payment', 'payment', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
262 addExtensionChangeTableColumnSql('payments', 'price', 'price', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
264 // Update notes (these will be set as task text!)
265 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
268 case '0.2.1': // SQL queries for v0.2.1
269 addConfigAddSql('css_php', "ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
271 // Update notes (these will be set as task text!)
272 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
275 case '0.2.2': // SQL queries for v0.2.2
276 // Update notes (these will be set as task text!)
277 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
280 case '0.2.3': // SQL queries for v0.2.3
281 addConfigAddSql('guest_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
282 addConfigAddSql('member_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
283 addConfigAddSql('youre_here', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
285 // Update notes (these will be set as task text!)
286 setExtensionUpdateNotes("Gast- und Mitgliedsmenüs lassen sich getrennt voneinander abschalten.");
289 case '0.2.4': // SQL queries for v0.2.4
290 // PNG image is the default
293 // Is the JPEG file found and required PHP function there?
294 if ((!isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.png')) || (!function_exists('imagecreatefrompng'))) {
295 // Switch to JPEG format because PNG is not available
298 addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
300 // Update notes (these will be set as task text!)
301 setExtensionUpdateNotes("Generierung des Mailbestätigungscodes hängt davon ab, ob die PHP-Funktion <u>imagecreatefromjpeg()</u> und das JPEG-Bild vorhanden sind oder nicht.");
304 case '0.2.5': // SQL queries for v0.2.5
305 // Update notes (these will be set as task text!)
306 setExtensionUpdateNotes("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
309 case '0.2.6': // SQL queries for v0.2.6
310 // Update notes (these will be set as task text!)
311 setExtensionUpdateNotes("Verschoben nach <strong>ext-user</strong>.");
314 case '0.2.7': // SQL queries for v0.2.7
315 addConfigAddSql('stats_limit', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
316 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
318 // Update notes (these will be set as task text!)
319 setExtensionUpdateNotes("<ol>
320 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
321 <li>Mitgliederstatistik mit Seitennavigation.</li>
325 case '0.2.8': // SQL queries for v0.2.8
326 // Update notes (these will be set as task text!)
327 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
330 case '0.2.9': // SQL queries for v0.2.9
331 addConfigAddSql('mt_word', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
332 addConfigAddSql('mt_word2', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
333 addConfigAddSql('mt_word3', "VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
335 // Update notes (these will be set as task text!)
336 setExtensionUpdateNotes("Wörter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
339 case '0.3.0': // SQL queries for v0.3.0
340 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG}/Referral-Ebenen' WHERE `what`='config_points' LIMIT 1");
341 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailvergütungen...' WHERE `what`='payments' LIMIT 1");
343 // Update notes (these will be set as task text!)
344 setExtensionUpdateNotes("Zwei Menüpunkte umbenannt.");
347 case '0.3.1': // SQL queries for v0.3.1
348 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD UNIQUE INDEX `ext_name` (`ext_name`)");
349 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` ADD UNIQUE INDEX `login` (`login`)");
350 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refbanner` ADD INDEX `visible` (`visible`)");
351 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` ADD UNIQUE INDEX `level` (`level`)");
352 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD INDEX `level` (`level`)");
353 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD INDEX `data_type` (`data_type`)");
354 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD UNIQUE INDEX `module` (`module`)");
355 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `action` (`action`)");
356 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `what` (`what`)");
357 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_type` (`task_type`)");
358 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `status` (`status`)");
359 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_created` (`task_created`)");
360 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD FULLTEXT `subject` (`subject`)");
361 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `subject` (`subject`)");
362 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD INDEX `ext_active` (`ext_active`)");
363 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `action` (`action`)");
364 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `what` (`what`)");
365 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `sort` (`sort`)");
366 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `visible` (`visible`)");
367 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `locked` (`locked`)");
368 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `what` (`what`)");
369 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `sort` (`sort`)");
370 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `visible` (`visible`)");
371 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `locked` (`locked`)");
372 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `visible` (`visible`)");
373 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `sort` (`sort`)");
375 // Update notes (these will be set as task text!)
376 setExtensionUpdateNotes("Eindeutige Schlüssel (UNIQUE) und normale Schlüssel (INDEX) gesetzt.");
379 case '0.3.2': // SQL queries for v0.3.2
380 // Connection table between the menu system and the "logical area system"
381 addDropTableSql('admin_menu_las');
382 addCreateTableSql('admin_menu_las', "
383 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
384 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
385 `la_action` VARCHAR(255) NOT NULL DEFAULT '',
386 `la_what` VARCHAR(255) NOT NULL DEFAULT '',
391 'Menu system -> LAS');
393 // All "logical areas" together
394 addDropTableSql('admin_menu_las_data');
395 addCreateTableSql('admin_menu_las_data', "
396 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
397 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
398 `la_title` VARCHAR(255) NOT NULL DEFAULT '',
399 `la_posx` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
400 `la_posy` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
402 UNIQUE INDEX (`la_id`),
405 'LAS position and title data');
407 // Which menu do you like?
408 addConfigAddSql('admin_menu', "ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
411 addAdminMenuSql('setup', 'config_admin', 'Adminmenü', 'Diverse Einstellungen am Adminmenü vornehmen.', 9);
413 // Update notes (these will be set as task text!)
414 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.");
417 case '0.3.3': // SQL queries for v0.3.3
418 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
419 addConfigAddSql('admin_menu_sorter', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
421 // The statistics table
422 addDropTableSql('admin_las_stats');
423 addCreateTableSql('admin_las_stats', "
424 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
425 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
426 `type` ENUM('la','action','what') NOT NULL DEFAULT 'what',
427 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
432 // Update notes (these will be set as task text!)
433 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.");
436 case '0.3.4': // SQL queries for v0.3.4
437 // Update notes (these will be set as task text!)
438 setExtensionUpdateNotes("Veraltetes Update (what=list_user&mode=noref)");
441 case '0.3.5': // SQL queries for v0.3.5
442 // List accounts with no referral
443 addMemberMenuSql('stats', NULL, 'Statistiken', 4);
444 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 2);
445 addMemberMenuSql('extras', NULL, 'Extras', 5);
446 addMemberMenuSql('rals', NULL, 'Rallyes', 6);
447 addMemberMenuSql('account', NULL, 'Ihr Account', 7);
448 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='stats',`sort`=1,`title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
449 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras',`sort`=3 WHERE `what`='reflinks' LIMIT 1");
451 // Update notes (these will be set as task text!)
452 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
455 case '0.3.6': // SQL queries for v0.3.6
456 addConfigAddSql('salt_length', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
457 addConfigAddSql('pass_scramble', "VARCHAR(255) NOT NULL DEFAULT ''");
458 addExtensionChangeTableColumnSql('admins', 'password', 'password', "VARCHAR(255) NOT NULL DEFAULT ''");
459 addConfigAddSql('rand_no', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
460 addConfigAddSql('file_hash', "VARCHAR(255) NOT NULL DEFAULT ''");
461 addConfigAddSql('master_salt', "VARCHAR(255) NOT NULL DEFAULT ''");
462 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_config` SET `rand_no`=(ROUND(RAND() * 99999) + 100000) WHERE `config`=0 LIMIT 1");
463 addExtensionAddTableColumnSql('mod_reg', 'has_menu', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
464 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `has_menu`='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
466 // Update notes (these will be set as task text!)
467 setExtensionUpdateNotes("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
470 case '0.3.7': // SQL queries for v0.3.7
471 setExtensionUpdateNotes("Problem während des Installationsvorganges behoben.");
474 case '0.3.8': // SQL queries for v0.3.8
475 addExtensionChangeTableColumnSql('admin_menu', 'descr', 'descr', 'MEDIUMTEXT NULL');
476 addExtensionChangeTableColumnSql('pool', 'text', 'text', 'LONGTEXT NOT NULL');
478 // Update notes (these will be set as task text!)
479 setExtensionUpdateNotes("Beschreibungstexte für Admin-Menüs können länger sein. Diverse Fixes.");
482 case '0.3.9': // SQL queries for v0.3.9
483 // Update notes (these will be set as task text!)
484 setExtensionUpdateNotes("Beschreibungstexte für Admin-Menüs können länger sein. Diverse Fixes.");
487 case '0.4.0': // SQL queries for v0.4.0
488 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Email-Management' WHERE `action` = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
490 // Update notes (these will be set as task text!)
491 setExtensionUpdateNotes("Email-Verwaltung nach Email-Management umbenannt.");
494 case '0.4.1': // SQL queries for v0.4.1
495 addConfigAddSql('show_timings', "ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
497 // Update notes (these will be set as task text!)
498 setExtensionUpdateNotes("Tabellen-Schlüssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
501 case '0.4.2': // SQL queries for v0.4.2
502 // Update notes (these will be set as task text!)
503 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
506 case '0.4.3': // SQL queries for v0.4.3
507 addConfigAddSql('proxy_host', "VARCHAR(255) NOT NULL DEFAULT ''");
508 addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
509 addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
510 addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
511 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);
513 // Update notes (these will be set as task text!)
514 setExtensionUpdateNotes("Proxy-Einstellungen hinzugefügt.");
517 case '0.4.4': // SQL queries for v0.4.4
518 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
519 addExtensionChangeTableColumnSql('guest_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
520 addExtensionChangeTableColumnSql('member_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
521 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`=NULL WHERE `what`=''");
522 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `what`=NULL WHERE `what`=''");
523 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `what`=NULL WHERE `what`=''");
525 // Make this depending on ext-menu
526 addExtensionDependency('menu');
528 // Update notes (these will be set as task text!)
529 setExtensionUpdateNotes("Schlüssel in Admin-, Gast- und Mitgliedsmenü verbessert.");
532 case '0.4.5': // SQL queries for v0.4.5
533 addConfigAddSql('last_month', 'CHAR(2) NOT NULL DEFAULT 00');
534 addConfigAddSql('last_week', 'CHAR(2) NOT NULL DEFAULT 00');
536 // Update notes (these will be set as task text!)
537 setExtensionUpdateNotes("Täglichen/wöchentlichen/monatlichen Reset verbessert.");
540 case '0.4.6': // SQL queries for v0.4.6
541 // Update notes (these will be set as task text!)
542 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
545 case '0.4.7': // SQL queries for v0.4.7
546 // Update notes (these will be set as task text!)
547 setExtensionUpdateNotes("Veraltetes Update.");
550 case '0.4.8': // SQL queries for v0.4.8
551 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX (`subject`)');
553 // Update notes (these will be set as task text!)
554 setExtensionUpdateNotes("Index für Betreff eingefügt.");
557 case '0.4.9': // SQL queries for v0.4.9
558 // Update notes (these will be set as task text!)
559 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
562 case '0.5.0': // SQL queries for v0.5.0
563 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `level`');
564 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `userid`');
565 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD UNIQUE INDEX `userid_level` (`userid`, `level`)');
567 // Update notes (these will be set as task text!)
568 setExtensionUpdateNotes("Referral-System unterstützt nun detailierte Referral-Übersicht und vieles mehr.");
571 case '0.5.1': // SQL queries for v0.5.1
572 addExtensionDropTableColumnSql('member_menu', 'descr');
574 // Update notes (these will be set as task text!)
575 setExtensionUpdateNotes("Beschreibungsspalte von Mitgliedsmenü entfernt, welche ohnehin nicht genutzt wird.");
578 case '0.5.2': // SQL queries for v0.5.2
579 addExtensionChangeTableColumnSql('refdepths', 'percents', 'percents', 'FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
581 // Update notes (these will be set as task text!)
582 setExtensionUpdateNotes("Prozentsätze können nun fünf Stellen hinter dem Komma sein.");
585 case '0.5.3': // SQL queries for v0.5.3
586 addConfigAddSql('session_save_path', "VARCHAR(255) NOT NULL DEFAULT ''");
587 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);
589 // Update notes (these will be set as task text!)
590 setExtensionUpdateNotes("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com nötig.");
593 case '0.5.4': // SQL queries for v0.5.4
594 addMemberMenuSql('main', 'reflist', 'Ref-Übersicht', 5);
596 // Update notes (these will be set as task text!)
597 setExtensionUpdateNotes("Ref-Übersicht eingebaut. Diese hängt von der Erweiterung <strong>refback</strong> ab.");
600 case '0.5.5': // SQL queries for v0.5.5
601 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
603 // Update notes (these will be set as task text!)
604 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbestätigten Mails kann nun optional abgeschaltet werden.");
607 case '0.5.6': // SQL queries for v0.5.6
608 // Update notes (these will be set as task text!)
609 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
612 case '0.5.7': // SQL queries for v0.5.7
613 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
615 // Update notes (these will be set as task text!)
616 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&mode=norefs verschoben.");
619 case '0.5.8': // SQL queries for v0.5.8
620 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_lang_file`');
622 // Update notes (these will be set as task text!)
623 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
626 case '0.5.9': // SQL queries for v0.5.9
627 // Table 'filters' is vital because many functionality depends on it, so don't remove it
628 addCreateTableSql('filters', "
629 `filter_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
630 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
631 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
632 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
633 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
634 PRIMARY KEY (`filter_id`),
635 UNIQUE INDEX `name_function` (`filter_name`, `filter_function`)",
639 addAdminMenuSql('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und lässt diese de- bzw. wieder aktivieren.', 17);
641 // Update notes (these will be set as task text!)
642 setExtensionUpdateNotes("Tabellen für Filter-System hinzugefügt.");
645 case '0.6.0': // SQL queries for v0.6.0
646 addConfigAddSql('update_filter_usage', "ENUM('N','Y') NOT NULL DEFAULT 'N'");
648 // Update notes (these will be set as task text!)
649 setExtensionUpdateNotes("Benutzungsstatistik eingebaut. Das Zählen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
652 case '0.6.1': // SQL queries for v0.6.1
653 // Update notes (these will be set as task text!)
654 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
657 case '0.6.2': // SQL queries for v0.6.2
658 // Depends on refback extension
659 addExtensionDependency('user');
661 // Update notes (these will be set as task text!)
662 setExtensionUpdateNotes("Abhängigkeit von <u>ext-user</u> gesetzt.");
665 case '0.6.3': // SQL queries for v0.6.3
666 // Update notes (these will be set as task text!)
667 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.");
669 // Add special fix include to fix filters
670 addIncludeToPool('extension', 'inc/fix_filters.php');
673 case '0.6.4': // SQL queries for v0.6.4
675 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
676 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `descr` = REPLACE(`descr`, '!POINTS!', '?POINTS?') WHERE `descr` LIKE '%!POINTS!%'");
677 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
678 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
680 // Update notes (these will be set as task text!)
681 setExtensionUpdateNotes("Datenbank umgestellt auf Konfigurationselemente.");
684 case '0.6.5': // SQL queries for v0.6.5
685 addConfigChangeSql('css_php', 'css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
687 // Update notes (these will be set as task text!)
688 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
691 case '0.6.6': // SQL queries for v0.6.6
692 addAdminMenuSql('setup', 'config_secure', 'Sicherheitseinstellungen', 'Stellen Sie ein, wie lange das Passwort eines Mitgliedes mindestens sein muss uvm.', 9);
693 addAdminMenuSql('setup', 'config_points', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG}', 'Stellen Sie hier die Willkommensgutschrift, Referral-Gutschrift (einmalige) usw. ein.', 10);
694 addAdminMenuSql('email', 'email_archiv', 'E-Mail Archiv', 'Sehen Sie sich hier bereits gesendete Mails an.', 6);
696 // Update notes (these will be set as task text!)
697 setExtensionUpdateNotes("Die Sicherheitseinstellungen, {?POINTS?}-Einstellungen und Email-Archiv funktionieren nur, wenn diese Erweiterung installiert ist.");
700 case '0.6.7': // SQL queries for v0.6.7
701 addConfigChangeSql('index_delay', 'index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
703 // Update notes (these will be set as task text!)
704 setExtensionUpdateNotes("Die Weiterleitungseinstellung muss auch Werte kleiner Null akzeptieren.");
707 case '0.6.8': // SQL queries for v0.6.8
708 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
709 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
710 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
711 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
712 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
713 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
715 // Update notes (these will be set as task text!)
716 setExtensionUpdateNotes("Spalten verkürzt, damit die Schlüssel passen.");
719 case '0.6.9': // SQL queries for 0.6.9
721 registerFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', FALSE, TRUE, isExtensionDryRun());
723 // Update notes (these will be set as task text!)
724 setExtensionUpdateNotes("Filter zum Zurücksetzens des fehlgeschlagenen Mitgliederlogins hinzugefügt (internes TODO).");
727 case '0.7.0': // SQL queries for 0.7.0
729 addDropTableSql('dns_cache');
730 addCreateTableSql('dns_cache', "
731 `hostname` VARCHAR(255) NOT NULL,
732 `ip` VARCHAR(15) NOT NULL,
733 `added` DATETIME NOT NULL,
734 PRIMARY KEY (`hostname`),
736 'Cache for DNS requests');
739 addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
742 registerFilter(__FILE__, __LINE__, 'reset', 'CLEANUP_DNS_CACHE', FALSE, TRUE, isExtensionDryRun());
744 // Update notes (these will be set as task text!)
745 setExtensionUpdateNotes("IP-Resolver-Klasse hinzugefügt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
748 case '0.7.1': // SQL queries for v0.7.1
749 // This update just depends on ext-timezone to make integration of an essential extension much easier
750 addExtensionDependency('timezone');
752 // Update notes (these will be set as task text!)
753 setExtensionUpdateNotes("Zeitzone ist nun mit ext-timezone konfigurierbar.");
756 case '0.7.2': // SQL queries for v0.7.2
757 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `task_type`='MEMBER_SUPPORT' WHERE `task_type`='SUPPORT_MEMBER'");
759 // Update notes (these will be set as task text!)
760 setExtensionUpdateNotes("Daten an Namenskonvention angepasst.");
763 case '0.7.3': // SQL queries for v0.7.3
764 addExtensionChangeTableColumnSql('filters', 'filter_name', 'filter_name', "VARCHAR(50) NOT NULL DEFAULT ''");
765 addExtensionChangeTableColumnSql('filters', 'filter_function', 'filter_function', "VARCHAR(100) NOT NULL DEFAULT ''");
767 // Update notes (these will be set as task text!)
768 setExtensionUpdateNotes("Spalten in Filtertabelle gekürzt (SQL-Fehler wegen zu grossem Schlüssel).");
771 case '0.7.4': // SQL queries for v0.7.4
772 addExtensionAddTableColumnSql('pool', 'mails_sent', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
774 // Update notes (these will be set as task text!)
775 setExtensionUpdateNotes("Spalten in Filtertabelle gekürzt (SQL-Fehler wegen zu grossem Schlüssel).");
778 case '0.7.5': // SQL queries for v0.7.5
779 addConfigAddSql('last_hour', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
781 // Update notes (these will be set as task text!)
782 setExtensionUpdateNotes("Aktuelle Stunde hinzugefügt (ist nicht konfigurierbar).");
785 case '0.7.6': // SQL queries for v0.7.6
786 addConfigChangeSql('last_month', 'last_month', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
787 addConfigChangeSql('last_week', 'last_week', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
789 // Update notes (these will be set as task text!)
790 setExtensionUpdateNotes("Spaltentyp fuer kleine Zahlen sollten auch z.B. TINYINT sein.");
793 case '0.7.7': // SQL queries for v0.7.7
794 addMemberMenuSql('earn', NULL, 'Verdienen', 2);
795 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='earn',`sort`=1 WHERE `what`='unconfirmed' LIMIT 1");
797 // Update notes (these will be set as task text!)
798 setExtensionUpdateNotes("Menüpunkt <strong>Verdienen</strong> hinzugefügt und <strong>Unbestätigte Mails</strong> als ersten Punkt dort hin verschoben.");
801 case '0.7.8': // SQL queries for v0.7.8
802 // Update notes (these will be set as task text!)
803 setExtensionUpdateNotes("Konfigurationseinträge mit Spaltentyp <strong>ENUM</strong> werden nun immer komplett gross geschrieben.");
806 case '0.7.9': // SQL queries for v0.7.9
807 addExtensionSQL("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_email_max_rec' WHERE `what`='config_email' LIMIT 1");
809 // Update notes (these will be set as task text!)
810 setExtensionUpdateNotes("Adminscript <strong>what-config_email.php</strong> nach <strong>what-list_email_max_rec.php</strong> umbenannt.");
813 case '0.8.0': // SQL queries for v0.8.0
814 // Points account data (this table should not be dropped or else you may have to re-install a lot extensions)
815 addCreateTableSql('points_data', "
816 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
817 `subject` VARCHAR(255) NOT NULL DEFAULT '',
818 `column_name` VARCHAR(255) NOT NULL DEFAULT 'points',
819 `locked_mode` ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED',
820 `payment_method` ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL',
821 `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N',
823 UNIQUE KEY (`subject`)",
824 'Points account data');
827 addAdminMenuSql('setup', 'list_point_accounts', 'Guthabenkonten...', 'Veralten Sie hier bequem Einstellungen zu den Guthabenkonten.', 5);
829 // Update notes (these will be set as task text!)
830 setExtensionUpdateNotes("Tabelle <span class=\"bad\">points_data</span> erzeugt, diese soll das {?POINTS?}-Guthaben komplett lenken.");
833 case '0.8.1': // SQL queries for v0.8.1
834 addExtensionChangeTableColumnSql('refdepths', 'level', 'level', 'TINYINT(3) UNSIGNED NULL DEFAULT NULL');
835 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_refdepths` SET `level`=NULL WHERE `level`=0 LIMIT 1');
837 // Update notes (these will be set as task text!)
838 setExtensionUpdateNotes("Level 0 ist nun auch NULL.");
841 case '0.8.2': // SQL queries for v0.8.2
842 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` DROP INDEX `ext_name`");
843 addExtensionChangeTableColumnSql('points_data', 'ext_name', 'subject', "VARCHAR(255) NOT NULL DEFAULT ''");
844 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD INDEX `subject` (`subject`)");
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 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` DROP INDEX `subject`, ADD UNIQUE `subject` (`subject`)");
911 // Update notes (these will be set as task text!)
912 setExtensionUpdateNotes("Der Wert in der Spalte <strong>subject</strong> sollte nur einmal vorkommen, damit eventuell nichts mehrfach durchfl&auuml;ft.");
915 case '0.8.9': // SQL queries for v0.8.9
916 addExtensionAddTableColumnSql('points_data', 'account_provider', "ENUM('EXTENSION', 'CUSTOM') NOT NULL DEFAULT 'EXTENSION'");
917 addConfigAddSql('points_remove_account', "VARCHAR(255) NOT NULL DEFAULT 'points'");
919 // Update notes (these will be set as task text!)
920 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.");
923 case '0.9.0': // SQL queries for v0.9.0
925 registerFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', FALSE, TRUE, isExtensionDryRun());
927 // Register points data
928 registerExtensionPointsData('admin_add_single', 'points', 'LOCKED', 'DIRECT');
929 registerExtensionPointsData('admin_add_single_ref', 'points', 'LOCKED', 'DIRECT');
930 registerExtensionPointsData('admin_add_all', 'points', 'LOCKED', 'DIRECT');
931 registerExtensionPointsData('admin_add_all_ref', 'points', 'LOCKED', 'DIRECT');
933 // Update notes (these will be set as task text!)
934 setExtensionUpdateNotes("Filter zum Initialisieren von ext-sql_patches registriert und Einträge in <strong>{?_MYSQL_PREFIX?}_points_data</strong> hinzugefügt.");
937 case '0.9.1': // SQL queries for v0.9.1
938 addAdminMenuSql('misc', 'list_server_name', 'Verkehrte Domains auflisten', 'Listet alle als verkehrt erkannten Domains auf.', 4);
939 addCreateTableSql('server_name_log', "
940 `server_name_id` BIGINT (20) NOT NULL AUTO_INCREMENT,
941 `server_name` VARCHAR (255) NOT NULL DEFAULT 'invalid',
942 `server_name_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
943 `server_name_remote_addr` VARCHAR (15) NOT NULL DEFAULT '0.0.0.0',
944 `server_name_ua` TINYTEXT NULL DEFAULT NULL,
945 `server_name_referrer` TINYTEXT NULL DEFAULT NULL,
946 `server_name_counter` BIGINT (20) NOT NULL DEFAULT 0,
947 PRIMARY KEY (`server_name_id`)
948 ", 'Logging of wrong SERVER_NAME');
950 // Update notes (these will be set as task text!)
951 setExtensionUpdateNotes("Loggen von falschen <strong>SERVER_NAME</strong> Einträgen hinzugefügt.");
954 case '0.9.2': // SQL queries for v0.9.2
955 addExtensionAddTableColumnSql('server_name_log', 'server_name_remote_addr', "VARCHAR (15) NOT NULL DEFAULT '0.0.0.0'");
956 addExtensionAddTableColumnSql('server_name_log', 'server_name_counter', 'BIGINT (20) NOT NULL DEFAULT 0');
957 addExtensionAddTableColumnSql('server_name_log', 'server_name_ua', 'TINYTEXT NULL DEFAULT NULL');
958 addExtensionAddTableColumnSql('server_name_log', 'server_name_referrer', 'TINYTEXT NULL DEFAULT NULL');
960 // Update notes (these will be set as task text!)
961 setExtensionUpdateNotes("Sorry, hatte noch IP-Nummer, User-Agent, aufrufende Seite und Zähler vergessen.");
966 case 'modify': // When the extension got modified
969 case 'test': // For testing purposes
972 case 'init': // Do stuff when extension is initialized
973 // Transfer POINTS word
974 if (isExtensionInstalledAndNewer('sql_patches', '0.0.3')) {
975 // Okay, recent enough, so transfer the word for POINTS
976 setConfigEntry('POINTS', getPointsWord());
980 setConfigEntry('secret_key', '');
982 // Is the version recent enought for secret keys?
983 if (isExtensionInstalledAndNewer('sql_patches', '0.3.6')) {
984 // Read key from secret file
985 if ((getFileHash() == '') || (getMasterSalt() == '') || (getPassScramble() == '')) {
986 // Maybe need setup of secret key!
987 loadIncludeOnce('inc/gen_sql_patches.php');
991 if ((getFileHash() != '') && (getMasterSalt() != '') && (getPassScramble() != '')) {
992 // File hash fas generated so we can also file the secret file... hopefully.
993 $hashFile = sprintf("%s%s.%s.cache", getPath(), getCachePath(), getFileHash());
995 // Is the secret key file readable?
996 if (isFileReadable($hashFile)) {
998 setConfigEntry('secret_key', readFromFile($hashFile));
1000 // Remove it from database
1001 updateConfiguration('file_hash', '');
1003 // Cannot read secret file!
1004 reportBug(__FILE__, __LINE__, 'Cannot read secret file! Please try to reload.');
1010 default: // Unknown extension mode
1011 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));