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.0');
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'));
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');
65 // Delete admin menu entries
66 addExtensionSql("DELETE LOW_PRIORITY FROM
67 `{?_MYSQL_PREFIX?}_admin_menu`
83 // Delete/update member menu entries
84 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE
87 (`action`='stats' AND (`what`='' OR `what` IS NULL)) OR
88 (`action`='extras' AND (`what`='' OR `what` IS NULL)) OR
89 (`action`='rals' AND (`what`='' OR `what` IS NULL)) OR
90 (`action`='account' AND (`what`='' OR `what` IS NULL)) OR
92 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='main' WHERE
99 unregisterExtensionPointsData('pool_payback');
100 unregisterExtensionPointsData('mail_deleted');
101 unregisterExtensionPointsData('admin_add_single');
102 unregisterExtensionPointsData('admin_add_single_ref');
103 unregisterExtensionPointsData('admin_add_all');
104 unregisterExtensionPointsData('admin_add_all_ref');
107 unregisterFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', TRUE, isExtensionDryRun());
108 unregisterFilter(__FILE__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', TRUE, isExtensionDryRun());
109 unregisterFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', TRUE, isExtensionDryRun());
112 case 'activate': // Do stuff when admin activates this extension
113 // SQL commands to run
117 case 'deactivate': // Do stuff when admin deactivates this extension
118 // SQL commands to run
122 case 'update': // Update an extension
123 switch (getCurrentExtensionVersion()) {
124 case '0.0.1': // SQL queries for v0.0.1
125 addAdminMenuSql('setup', 'config_extensions', 'Erweitungsmanagement', 'Alle Einstellungen am Erweiterungsmanagement.', 10);
127 // Update notes (these will be set as task text!)
128 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.");
131 case '0.0.2': // SQL queries for v0.0.2
132 addConfigChangeSql('auto_purge', 'auto_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay()*14));
134 // Update notes (these will be set as task text!)
135 setExtensionUpdateNotes("In der Tabelle <strong>{?_MYSQL_PREFIX?}_config</strong> musste die Spalte <strong>auto_purge</strong> (autom. Löschen von Bestätigungsmails angepasst werden (war auf dem Testsystem auf TINYINT(4) gesetzt.)");
138 case '0.0.3': // SQL queries for v0.0.3
139 addConfigAddSql('points_word', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_TEMPLATE}DEFAULT_POINTS{CLOSE_TEMPLATE}'");
141 // Update notes (these will be set as task text!)
142 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.");
145 case '0.0.4': // SQL queries for v0.0.4
146 addConfigAddSql('mails_page', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
148 // Update notes (these will be set as task text!)
149 setExtensionUpdateNotes("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugefügt.");
152 case '0.0.5': // SQL queries for v0.0.5
153 addConfigAddSql('index_home', "VARCHAR(255) NOT NULL DEFAULT 'welcome'");
154 addAdminMenuSql('setup','config_home','Home-Seite festlegen','Stellen Sie hier ein, welcher Menüpunkt (what-welcome ist Standard) als Einstiegspunkt in das Menüsystem genutzt werden soll.', 5);
156 // Update notes (these will be set as task text!)
157 setExtensionUpdateNotes("Die what-welcome.php ist derzeit die "Home"-Seite (Eingangsseite). Dies kann nun per Datenbank geändert werden.");
160 case '0.0.6': // SQL queries for v0.0.6
161 addExtensionAddTableColumnSql('extensions', 'ext_has_css', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
163 // Update notes (these will be set as task text!)
164 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.");
167 case '0.0.7': // SQL queries for v0.0.7
168 addConfigAddSql('verbose_sql', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
170 // Update notes (these will be set as task text!)
171 setExtensionUpdateNotes("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
174 case '0.0.8': // SQL queries for v0.0.8
175 addConfigAddSql('menu_blur_spacer', "VARCHAR(255) NOT NULL DEFAULT ' <strong><big>·</big></strong> '");
177 // Update notes (these will be set as task text!)
178 setExtensionUpdateNotes("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
181 case '0.0.9': // SQL queries for v0.0.9
182 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);
184 // Update notes (these will be set as task text!)
185 setExtensionUpdateNotes("Unbestätigte Maillinks können unter Email-Management -> Unbest. Mails auflisten aufgelistet werden.");
188 case '0.1.0': // SQL queries for v0.1.0
189 // Update notes (these will be set as task text!)
190 setExtensionUpdateNotes("Soll der einmalige Ref-Bonus über das Referral-System (also alle oberen Refs bekommen auch etwas davon ab) oder direkt dem Werber aufgebucht werden?");
193 case '0.1.1': // SQL queries for v0.1.1
194 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Home-/Eingangsseite', descr='Stellen Sie hier ein, welcher Menü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");
195 addConfigAddSql('index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
196 addConfigAddSql('index_cookie', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 365));
198 // Update notes (these will be set as task text!)
199 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.");
202 case '0.1.2': // SQL queries for v0.1.2
203 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);
204 addConfigAddSql('def_refid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
206 // Update notes (these will be set as task text!)
207 setExtensionUpdateNotes("Standard Referral-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
210 case '0.1.3': // SQL queries for v0.1.3
211 addConfigAddSql('refid_target', "ENUM('register','index') NOT NULL DEFAULT 'register'");
213 // Update notes (these will be set as task text!)
214 setExtensionUpdateNotes("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
217 case '0.1.4': // SQL queries for v0.1.4
218 // Update notes (these will be set as task text!)
219 setExtensionUpdateNotes("Ungültiges Update (nach ext-theme.php verschoben!).");
222 case '0.1.5': // SQL queries for v0.1.5
223 addExtensionDropTableColumnSql('extensions', 'ext_has_admin');
225 // Update notes (these will be set as task text!)
226 setExtensionUpdateNotes("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{?_MYSQL_PREFIX?}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
229 case '0.1.6': // SQL queries for v0.1.6
230 addConfigAddSql('enable_title_deco', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
231 addConfigAddSql('title_left', "VARCHAR(10) NOT NULL DEFAULT '[--'");
232 addConfigAddSql('title_middle', "VARCHAR(10) NOT NULL DEFAULT '-'");
233 addConfigAddSql('title_right', "VARCHAR(10) NOT NULL DEFAULT '--]'");
234 addConfigAddSql('enable_mod_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
235 addConfigAddSql('enable_what_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
236 addAdminMenuSql('setup','config_title','Seitentitel ändern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8);
238 // Update notes (these will be set as task text!)
239 setExtensionUpdateNotes("Dekorationen des Seitentiteles lassen sich ein- und ausschalten und selber definieren; Modul-Titel und Titel der <strong>what</strong>-Dateien kann hinzugefügt werden.");
242 case '0.1.7': // SQL queries for v0.1.7
243 // Update notes (these will be set as task text!)
244 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
247 case '0.1.8': // SQL queries for v0.1.8
248 // Update notes (these will be set as task text!)
249 setExtensionUpdateNotes("mad_count und last_mad werden nun aus der Datenbank geladen");
252 case '0.1.9': // SQL queries for v0.1.9
253 // Update notes (these will be set as task text!)
254 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
257 case '0.2.0': // SQL queries for v0.2.0
258 addExtensionChangeTableColumnSql('jackpot', 'points', 'points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
260 addExtensionChangeTableColumnSql('payments', 'payment', 'payment', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
261 addExtensionChangeTableColumnSql('payments', 'price', 'price', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
263 // Update notes (these will be set as task text!)
264 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
267 case '0.2.1': // SQL queries for v0.2.1
268 addConfigAddSql('css_php', "ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
270 // Update notes (these will be set as task text!)
271 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
274 case '0.2.2': // SQL queries for v0.2.2
275 // Update notes (these will be set as task text!)
276 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
279 case '0.2.3': // SQL queries for v0.2.3
280 addConfigAddSql('guest_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
281 addConfigAddSql('member_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
282 addConfigAddSql('youre_here', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
284 // Update notes (these will be set as task text!)
285 setExtensionUpdateNotes("Gast- und Mitgliedsmenüs lassen sich getrennt voneinander abschalten.");
288 case '0.2.4': // SQL queries for v0.2.4
289 // PNG image is the default
292 // Is the JPEG file found and required PHP function there?
293 if ((!isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.png')) || (!function_exists('imagecreatefrompng'))) {
294 // Switch to JPEG format because PNG is not available
297 addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
299 // Update notes (these will be set as task text!)
300 setExtensionUpdateNotes("Generierung des Mailbestätigungscodes hängt davon ab, ob die PHP-Funktion <u>imagecreatefromjpeg()</u> und das JPEG-Bild vorhanden sind oder nicht.");
303 case '0.2.5': // SQL queries for v0.2.5
304 // Update notes (these will be set as task text!)
305 setExtensionUpdateNotes("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
308 case '0.2.6': // SQL queries for v0.2.6
309 // Update notes (these will be set as task text!)
310 setExtensionUpdateNotes("Verschoben nach <strong>ext-user</strong>.");
313 case '0.2.7': // SQL queries for v0.2.7
314 addConfigAddSql('stats_limit', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
315 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
317 // Update notes (these will be set as task text!)
318 setExtensionUpdateNotes("<ol>
319 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
320 <li>Mitgliederstatistik mit Seitennavigation.</li>
324 case '0.2.8': // SQL queries for v0.2.8
325 // Update notes (these will be set as task text!)
326 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
329 case '0.2.9': // SQL queries for v0.2.9
330 addConfigAddSql('mt_word', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
331 addConfigAddSql('mt_word2', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
332 addConfigAddSql('mt_word3', "VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
334 // Update notes (these will be set as task text!)
335 setExtensionUpdateNotes("Wörter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
338 case '0.3.0': // SQL queries for v0.3.0
339 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG}/Referral-Ebenen' WHERE `what`='config_points' LIMIT 1");
340 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailvergütungen...' WHERE `what`='payments' LIMIT 1");
342 // Update notes (these will be set as task text!)
343 setExtensionUpdateNotes("Zwei Menüpunkte umbenannt.");
346 case '0.3.1': // SQL queries for v0.3.1
347 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD UNIQUE INDEX `ext_name` (`ext_name`)");
348 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` ADD UNIQUE INDEX `login` (`login`)");
349 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refbanner` ADD INDEX `visible` (`visible`)");
350 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` ADD UNIQUE INDEX `level` (`level`)");
351 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD INDEX `level` (`level`)");
352 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD INDEX `data_type` (`data_type`)");
353 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD UNIQUE INDEX `module` (`module`)");
354 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `action` (`action`)");
355 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `what` (`what`)");
356 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_type` (`task_type`)");
357 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `status` (`status`)");
358 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_created` (`task_created`)");
359 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD FULLTEXT `subject` (`subject`)");
360 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `subject` (`subject`)");
361 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD INDEX `ext_active` (`ext_active`)");
362 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `action` (`action`)");
363 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `what` (`what`)");
364 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `sort` (`sort`)");
365 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `visible` (`visible`)");
366 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `locked` (`locked`)");
367 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `what` (`what`)");
368 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `sort` (`sort`)");
369 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `visible` (`visible`)");
370 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `locked` (`locked`)");
371 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `visible` (`visible`)");
372 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `sort` (`sort`)");
374 // Update notes (these will be set as task text!)
375 setExtensionUpdateNotes("Eindeutige Schlüssel (UNIQUE) und normale Schlüssel (INDEX) gesetzt.");
378 case '0.3.2': // SQL queries for v0.3.2
379 // Connection table between the menu system and the "logical area system"
380 addDropTableSql('admin_menu_las');
381 addCreateTableSql('admin_menu_las', "
382 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
383 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
384 `la_action` VARCHAR(255) NOT NULL DEFAULT '',
385 `la_what` VARCHAR(255) NOT NULL DEFAULT '',
390 'Menu system -> LAS');
392 // All "logical areas" together
393 addDropTableSql('admin_menu_las_data');
394 addCreateTableSql('admin_menu_las_data', "
395 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
396 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
397 `la_title` VARCHAR(255) NOT NULL DEFAULT '',
398 `la_posx` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
399 `la_posy` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
401 UNIQUE INDEX (`la_id`),
404 'LAS position and title data');
406 // Which menu do you like?
407 addConfigAddSql('admin_menu', "ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
410 addAdminMenuSql('setup', 'config_admin', 'Adminmenü', 'Diverse Einstellungen am Adminmenü vornehmen.', 9);
412 // Update notes (these will be set as task text!)
413 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.");
416 case '0.3.3': // SQL queries for v0.3.3
417 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
418 addConfigAddSql('admin_menu_sorter', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
420 // The statistics table
421 addDropTableSql('admin_las_stats');
422 addCreateTableSql('admin_las_stats', "
423 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
424 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
425 `type` ENUM('la','action','what') NOT NULL DEFAULT 'what',
426 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
431 // Update notes (these will be set as task text!)
432 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.");
435 case '0.3.4': // SQL queries for v0.3.4
436 // Update notes (these will be set as task text!)
437 setExtensionUpdateNotes("Veraltetes Update (what=list_user&mode=noref)");
440 case '0.3.5': // SQL queries for v0.3.5
441 // List accounts with no referral
442 addMemberMenuSql('stats', NULL, 'Statistiken', 4);
443 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 2);
444 addMemberMenuSql('extras', NULL, 'Extras', 5);
445 addMemberMenuSql('rals', NULL, 'Rallyes', 6);
446 addMemberMenuSql('account', NULL, 'Ihr Account', 7);
447 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='stats',`sort`=1,`title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
448 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras',`sort`=3 WHERE `what`='reflinks' LIMIT 1");
450 // Update notes (these will be set as task text!)
451 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
454 case '0.3.6': // SQL queries for v0.3.6
455 addConfigAddSql('salt_length', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
456 addConfigAddSql('pass_scramble', "VARCHAR(255) NOT NULL DEFAULT ''");
457 addExtensionChangeTableColumnSql('admins', 'password', 'password', "VARCHAR(255) NOT NULL DEFAULT ''");
458 addConfigAddSql('rand_no', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
459 addConfigAddSql('file_hash', "VARCHAR(255) NOT NULL DEFAULT ''");
460 addConfigAddSql('master_salt', "VARCHAR(255) NOT NULL DEFAULT ''");
461 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_config` SET `rand_no`=(ROUND(RAND() * 99999) + 100000) WHERE `config`=0 LIMIT 1");
462 addExtensionAddTableColumnSql('mod_reg', 'has_menu', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
463 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `has_menu`='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
465 // Update notes (these will be set as task text!)
466 setExtensionUpdateNotes("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
469 case '0.3.7': // SQL queries for v0.3.7
470 setExtensionUpdateNotes("Problem während des Installationsvorganges behoben.");
473 case '0.3.8': // SQL queries for v0.3.8
474 addExtensionChangeTableColumnSql('admin_menu', 'descr', 'descr', 'MEDIUMTEXT NULL');
475 addExtensionChangeTableColumnSql('pool', 'text', 'text', 'LONGTEXT NOT NULL');
477 // Update notes (these will be set as task text!)
478 setExtensionUpdateNotes("Beschreibungstexte für Admin-Menüs können länger sein. Diverse Fixes.");
481 case '0.3.9': // SQL queries for v0.3.9
482 // Update notes (these will be set as task text!)
483 setExtensionUpdateNotes("Beschreibungstexte für Admin-Menüs können länger sein. Diverse Fixes.");
486 case '0.4.0': // SQL queries for v0.4.0
487 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Email-Management' WHERE `action` = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
489 // Update notes (these will be set as task text!)
490 setExtensionUpdateNotes("Email-Verwaltung nach Email-Management umbenannt.");
493 case '0.4.1': // SQL queries for v0.4.1
494 addConfigAddSql('show_timings', "ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
496 // Update notes (these will be set as task text!)
497 setExtensionUpdateNotes("Tabellen-Schlüssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
500 case '0.4.2': // SQL queries for v0.4.2
501 // Update notes (these will be set as task text!)
502 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
505 case '0.4.3': // SQL queries for v0.4.3
506 addConfigAddSql('proxy_host', "VARCHAR(255) NOT NULL DEFAULT ''");
507 addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
508 addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
509 addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
510 addAdminMenuSql('setup','config_proxy','Proxy-Einstellungen','Sollte Ihr Webserver sich hinter einem Proxy befinden, so können Sie Ihren {?mt_word?} so konfigurieren, dass es z.B. Updates, Abfragen von Netzwerkupdates über diesen tätigt.', 15);
512 // Update notes (these will be set as task text!)
513 setExtensionUpdateNotes("Proxy-Einstellungen hinzugefügt.");
516 case '0.4.4': // SQL queries for v0.4.4
517 addExtensionChangeTableColumnSql('admin_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
518 addExtensionChangeTableColumnSql('guest_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
519 addExtensionChangeTableColumnSql('member_menu', 'what', 'what', 'VARCHAR(255) NULL DEFAULT NULL');
520 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`=NULL WHERE `what`=''");
521 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `what`=NULL WHERE `what`=''");
522 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `what`=NULL WHERE `what`=''");
524 // Make this depending on ext-menu
525 addExtensionDependency('menu');
527 // Update notes (these will be set as task text!)
528 setExtensionUpdateNotes("Schlüssel in Admin-, Gast- und Mitgliedsmenü verbessert.");
531 case '0.4.5': // SQL queries for v0.4.5
532 addConfigAddSql('last_month', 'CHAR(2) NOT NULL DEFAULT 00');
533 addConfigAddSql('last_week', 'CHAR(2) NOT NULL DEFAULT 00');
535 // Update notes (these will be set as task text!)
536 setExtensionUpdateNotes("Täglichen/wöchentlichen/monatlichen Reset verbessert.");
539 case '0.4.6': // SQL queries for v0.4.6
540 // Update notes (these will be set as task text!)
541 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
544 case '0.4.7': // SQL queries for v0.4.7
545 // Update notes (these will be set as task text!)
546 setExtensionUpdateNotes("Veraltetes Update.");
549 case '0.4.8': // SQL queries for v0.4.8
550 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX (`subject`)');
552 // Update notes (these will be set as task text!)
553 setExtensionUpdateNotes("Index für Betreff eingefügt.");
556 case '0.4.9': // SQL queries for v0.4.9
557 // Update notes (these will be set as task text!)
558 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
561 case '0.5.0': // SQL queries for v0.5.0
562 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `level`');
563 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `userid`');
564 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD UNIQUE INDEX `userid_level` (`userid`, `level`)');
566 // Update notes (these will be set as task text!)
567 setExtensionUpdateNotes("Referral-System unterstützt nun detailierte Referral-Übersicht und vieles mehr.");
570 case '0.5.1': // SQL queries for v0.5.1
571 addExtensionDropTableColumnSql('member_menu', 'descr');
573 // Update notes (these will be set as task text!)
574 setExtensionUpdateNotes("Beschreibungsspalte von Mitgliedsmenü entfernt, welche ohnehin nicht genutzt wird.");
577 case '0.5.2': // SQL queries for v0.5.2
578 addExtensionChangeTableColumnSql('refdepths', 'percents', 'percents', 'FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
580 // Update notes (these will be set as task text!)
581 setExtensionUpdateNotes("Prozentsätze können nun fünf Stellen hinter dem Komma sein.");
584 case '0.5.3': // SQL queries for v0.5.3
585 addConfigAddSql('session_save_path', "VARCHAR(255) NOT NULL DEFAULT ''");
586 addAdminMenuSql('setup','config_session','Session-Einstellungen','Ändern Sie hier den Speicherpfad für Sessiondateien (Sitzungsdateien) ab, falls die Standard-Einstellung bei Ihrem Hoster zu Problem führen sollte.', 16);
588 // Update notes (these will be set as task text!)
589 setExtensionUpdateNotes("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com nötig.");
592 case '0.5.4': // SQL queries for v0.5.4
593 addMemberMenuSql('main', 'reflist', 'Ref-Übersicht', 5);
595 // Update notes (these will be set as task text!)
596 setExtensionUpdateNotes("Ref-Übersicht eingebaut. Diese hängt von der Erweiterung <strong>refback</strong> ab.");
599 case '0.5.5': // SQL queries for v0.5.5
600 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
602 // Update notes (these will be set as task text!)
603 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbestätigten Mails kann nun optional abgeschaltet werden.");
606 case '0.5.6': // SQL queries for v0.5.6
607 // Update notes (these will be set as task text!)
608 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
611 case '0.5.7': // SQL queries for v0.5.7
612 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
614 // Update notes (these will be set as task text!)
615 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&mode=norefs verschoben.");
618 case '0.5.8': // SQL queries for v0.5.8
619 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_lang_file`');
621 // Update notes (these will be set as task text!)
622 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
625 case '0.5.9': // SQL queries for v0.5.9
626 // Table 'filters' is vital because many functionality depends on it, so don't remove it
627 addCreateTableSql('filters', "
628 `filter_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
629 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
630 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
631 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
632 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
633 PRIMARY KEY (`filter_id`),
634 UNIQUE INDEX `name_function` (`filter_name`, `filter_function`)",
638 addAdminMenuSql('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und lässt diese de- bzw. wieder aktivieren.', 17);
640 // Update notes (these will be set as task text!)
641 setExtensionUpdateNotes("Tabellen für Filter-System hinzugefügt.");
644 case '0.6.0': // SQL queries for v0.6.0
645 addConfigAddSql('update_filter_usage', "ENUM('N','Y') NOT NULL DEFAULT 'N'");
647 // Update notes (these will be set as task text!)
648 setExtensionUpdateNotes("Benutzungsstatistik eingebaut. Das Zählen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
651 case '0.6.1': // SQL queries for v0.6.1
652 // Update notes (these will be set as task text!)
653 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
656 case '0.6.2': // SQL queries for v0.6.2
657 // Depends on refback extension
658 addExtensionDependency('user');
660 // Update notes (these will be set as task text!)
661 setExtensionUpdateNotes("Abhängigkeit von <u>ext-user</u> gesetzt.");
664 case '0.6.3': // SQL queries for v0.6.3
665 // Update notes (these will be set as task text!)
666 setExtensionUpdateNotes("Filter-Tabelle bereinigt um doppelte Einträge und Unique-Key auf <span class=\"bad\">filter_name</span> und <span class=\"bad\">filter_function</span> zusammen gesetzt.");
668 // Add special fix include to fix filters
669 addIncludeToPool('extension', 'inc/fix_filters.php');
672 case '0.6.4': // SQL queries for v0.6.4
674 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
675 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `descr` = REPLACE(`descr`, '!POINTS!', '?POINTS?') WHERE `descr` LIKE '%!POINTS!%'");
676 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
677 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
679 // Update notes (these will be set as task text!)
680 setExtensionUpdateNotes("Datenbank umgestellt auf Konfigurationselemente.");
683 case '0.6.5': // SQL queries for v0.6.5
684 addConfigChangeSql('css_php', 'css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
686 // Update notes (these will be set as task text!)
687 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
690 case '0.6.6': // SQL queries for v0.6.6
691 addAdminMenuSql('setup', 'config_secure', 'Sicherheitseinstellungen', 'Stellen Sie ein, wie lange das Passwort eines Mitgliedes mindestens sein muss uvm.', 9);
692 addAdminMenuSql('setup', 'config_points', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG}', 'Stellen Sie hier die Willkommensgutschrift, Referral-Gutschrift (einmalige) usw. ein.', 10);
693 addAdminMenuSql('email', 'email_archiv', 'E-Mail Archiv', 'Sehen Sie sich hier bereits gesendete Mails an.', 6);
695 // Update notes (these will be set as task text!)
696 setExtensionUpdateNotes("Die Sicherheitseinstellungen, {?POINTS?}-Einstellungen und Email-Archiv funktionieren nur, wenn diese Erweiterung installiert ist.");
699 case '0.6.7': // SQL queries for v0.6.7
700 addConfigChangeSql('index_delay', 'index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
702 // Update notes (these will be set as task text!)
703 setExtensionUpdateNotes("Die Weiterleitungseinstellung muss auch Werte kleiner Null akzeptieren.");
706 case '0.6.8': // SQL queries for v0.6.8
707 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
708 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
709 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
710 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
711 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
712 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
714 // Update notes (these will be set as task text!)
715 setExtensionUpdateNotes("Spalten verkürzt, damit die Schlüssel passen.");
718 case '0.6.9': // SQL queries for 0.6.9
720 registerFilter(__FILE__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', FALSE, TRUE, isExtensionDryRun());
722 // Update notes (these will be set as task text!)
723 setExtensionUpdateNotes("Filter zum Zurücksetzens des fehlgeschlagenen Mitgliederlogins hinzugefügt (internes TODO).");
726 case '0.7.0': // SQL queries for 0.7.0
728 addDropTableSql('dns_cache');
729 addCreateTableSql('dns_cache', "
730 `hostname` VARCHAR(255) NOT NULL,
731 `ip` VARCHAR(15) NOT NULL,
732 `added` DATETIME NOT NULL,
733 PRIMARY KEY (`hostname`),
735 'Cache for DNS requests');
738 addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
741 registerFilter(__FILE__, __LINE__, 'reset', 'CLEANUP_DNS_CACHE', FALSE, TRUE, isExtensionDryRun());
743 // Update notes (these will be set as task text!)
744 setExtensionUpdateNotes("IP-Resolver-Klasse hinzugefügt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
747 case '0.7.1': // SQL queries for v0.7.1
748 // This update just depends on ext-timezone to make integration of an essential extension much easier
749 addExtensionDependency('timezone');
751 // Update notes (these will be set as task text!)
752 setExtensionUpdateNotes("Zeitzone ist nun mit ext-timezone konfigurierbar.");
755 case '0.7.2': // SQL queries for v0.7.2
756 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `task_type`='MEMBER_SUPPORT' WHERE `task_type`='SUPPORT_MEMBER'");
758 // Update notes (these will be set as task text!)
759 setExtensionUpdateNotes("Daten an Namenskonvention angepasst.");
762 case '0.7.3': // SQL queries for v0.7.3
763 addExtensionChangeTableColumnSql('filters', 'filter_name', 'filter_name', "VARCHAR(50) NOT NULL DEFAULT ''");
764 addExtensionChangeTableColumnSql('filters', 'filter_function', 'filter_function', "VARCHAR(100) NOT NULL DEFAULT ''");
766 // Update notes (these will be set as task text!)
767 setExtensionUpdateNotes("Spalten in Filtertabelle gekürzt (SQL-Fehler wegen zu grossem Schlüssel).");
770 case '0.7.4': // SQL queries for v0.7.4
771 addExtensionAddTableColumnSql('pool', 'mails_sent', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
773 // Update notes (these will be set as task text!)
774 setExtensionUpdateNotes("Spalten in Filtertabelle gekürzt (SQL-Fehler wegen zu grossem Schlüssel).");
777 case '0.7.5': // SQL queries for v0.7.5
778 addConfigAddSql('last_hour', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
780 // Update notes (these will be set as task text!)
781 setExtensionUpdateNotes("Aktuelle Stunde hinzugefügt (ist nicht konfigurierbar).");
784 case '0.7.6': // SQL queries for v0.7.6
785 addConfigChangeSql('last_month', 'last_month', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
786 addConfigChangeSql('last_week', 'last_week', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
788 // Update notes (these will be set as task text!)
789 setExtensionUpdateNotes("Spaltentyp fuer kleine Zahlen sollten auch z.B. TINYINT sein.");
792 case '0.7.7': // SQL queries for v0.7.7
793 addMemberMenuSql('earn', NULL, 'Verdienen', 2);
794 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='earn',`sort`=1 WHERE `what`='unconfirmed' LIMIT 1");
796 // Update notes (these will be set as task text!)
797 setExtensionUpdateNotes("Menüpunkt <strong>Verdienen</strong> hinzugefügt und <strong>Unbestätigte Mails</strong> als ersten Punkt dort hin verschoben.");
800 case '0.7.8': // SQL queries for v0.7.8
801 // Update notes (these will be set as task text!)
802 setExtensionUpdateNotes("Konfigurationseinträge mit Spaltentyp <strong>ENUM</strong> werden nun immer komplett gross geschrieben.");
805 case '0.7.9': // SQL queries for v0.7.9
806 addExtensionSQL("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_email_max_rec' WHERE `what`='config_email' LIMIT 1");
808 // Update notes (these will be set as task text!)
809 setExtensionUpdateNotes("Adminscript <strong>what-config_email.php</strong> nach <strong>what-list_email_max_rec.php</strong> umbenannt.");
812 case '0.8.0': // SQL queries for v0.8.0
813 // Points account data (this table should not be dropped or else you may have to re-install a lot extensions)
814 addCreateTableSql('points_data', "
815 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
816 `subject` VARCHAR(255) NOT NULL DEFAULT '',
817 `column_name` VARCHAR(255) NOT NULL DEFAULT 'points',
818 `locked_mode` ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED',
819 `payment_method` ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL',
820 `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N',
822 UNIQUE KEY (`subject`)",
823 'Points account data');
826 addAdminMenuSql('setup', 'list_point_accounts', 'Guthabenkonten...', 'Veralten Sie hier bequem Einstellungen zu den Guthabenkonten.', 5);
828 // Update notes (these will be set as task text!)
829 setExtensionUpdateNotes("Tabelle <span class=\"bad\">points_data</span> erzeugt, diese soll das {?POINTS?}-Guthaben komplett lenken.");
832 case '0.8.1': // SQL queries for v0.8.1
833 addExtensionChangeTableColumnSql('refdepths', 'level', 'level', 'TINYINT(3) UNSIGNED NULL DEFAULT NULL');
834 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_refdepths` SET `level`=NULL WHERE `level`=0 LIMIT 1');
836 // Update notes (these will be set as task text!)
837 setExtensionUpdateNotes("Level 0 ist nun auch NULL.");
840 case '0.8.2': // SQL queries for v0.8.2
841 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` DROP INDEX `ext_name`");
842 addExtensionChangeTableColumnSql('points_data', 'ext_name', 'subject', "VARCHAR(255) NOT NULL DEFAULT ''");
843 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD INDEX `subject` (`subject`)");
844 addExtensionAddTableColumnSql('points_data', 'notify_recipient', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
846 // Register points data
847 registerExtensionPointsData('pool_payback', 'points', 'LOCKED', 'DIRECT');
848 registerExtensionPointsData('mail_deleted', 'points', 'LOCKED', 'DIRECT');
850 // Remove deprecated configuration entry
851 addConfigDropSql('reg_points_mode');
853 // Update notes (these will be set as task text!)
854 setExtensionUpdateNotes("Es sollte der Gutschriftenbetreff und nicht der Erweiterungsname gepeichert werden, zudem brauchen wir einen Konfigurationseintrag nicht mehr.");
857 case '0.8.3': // SQL queries for v0.8.3
858 addConfigAddSql('display_home_in_index', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
860 // Update notes (these will be set as task text!)
861 setExtensionUpdateNotes("Es kann nun die "Home"-Seite in <strong>index.php</strong> angezeigt werden, anstelle der Weiterleitung.");
864 case '0.8.4': // SQL queries for v0.8.4
865 addCreateTableSql('history', "
866 `history_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
867 `history_subject` VARCHAR(255) NOT NULL DEFAULT 'GENERIC',
868 `history_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
869 `history_value` VARCHAR(255) NOT NULL DEFAULT '',
870 `history_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
871 `history_last_used` TIMESTAMP NULL DEFAULT NULL,
872 PRIMARY KEY (`history_id`),
873 INDEX `userid` (`history_userid`),
874 INDEX (`history_last_used` DESC)",
875 'History of used data');
878 registerFilter(__FILE__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', FALSE, TRUE, isExtensionDryRun());
880 // Update notes (these will be set as task text!)
881 setExtensionUpdateNotes("Allgemeine Historie-Tabelle hinzugefügt.");
884 case '0.8.5': // SQL queries for v0.8.5
885 // Old-lost configuration entry
886 addConfigDropSql('ext_autopurge');
888 // Update notes (these will be set as task text!)
889 setExtensionUpdateNotes("Uralten Konfigurationseintrag entfernt.");
892 case '0.8.6': // SQL queries for v0.8.6
893 addExtensionChangeTableColumnSql('points_data', 'payment_method', 'payment_method', "ENUM('DIRECT','REFERRAL') NOT NULL DEFAULT 'REFERRAL'");
894 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_points_data` SET `payment_method`='REFERRAL' WHERE `payment_method` != 'DIRECT'");
896 // Update notes (these will be set as task text!)
897 setExtensionUpdateNotes("Referral/REFERRAL soll es überall heissen (ist ein Typo nur mit einem R zu schreiben).");
900 case '0.8.7': // SQL queries for v0.8.7
901 addConfigAddSql('admin_menu_javascript', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
903 // Update notes (these will be set as task text!)
904 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.");
907 case '0.8.8': // SQL queries for v0.8.8
908 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` DROP INDEX `subject`, ADD UNIQUE `subject` (`subject`)");
910 // Update notes (these will be set as task text!)
911 setExtensionUpdateNotes("Der Wert in der Spalte <strong>subject</strong> sollte nur einmal vorkommen, damit eventuell nichts mehrfach durchfl&auuml;ft.");
914 case '0.8.9': // SQL queries for v0.8.9
915 addExtensionAddTableColumnSql('points_data', 'account_provider', "ENUM('EXTENSION', 'CUSTOM') NOT NULL DEFAULT 'EXTENSION'");
916 addConfigAddSql('points_remove_account', "VARCHAR(255) NOT NULL DEFAULT 'points'");
918 // Update notes (these will be set as task text!)
919 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.");
922 case '0.9.0': // SQL queries for v0.9.0
924 registerFilter(__FILE__, __LINE__, 'init', 'GENERATE_FILE_SECRET_HASH', FALSE, TRUE, isExtensionDryRun());
926 // Register points data
927 registerExtensionPointsData('admin_add_single', 'points', 'LOCKED', 'DIRECT');
928 registerExtensionPointsData('admin_add_single_ref', 'points', 'LOCKED', 'DIRECT');
929 registerExtensionPointsData('admin_add_all', 'points', 'LOCKED', 'DIRECT');
930 registerExtensionPointsData('admin_add_all_ref', 'points', 'LOCKED', 'DIRECT');
932 // Update notes (these will be set as task text!)
933 setExtensionUpdateNotes("Filter zum Initialisieren von ext-sql_patches registriert und Einträge in <strong>{?_MYSQL_PREFIX?}_points_data</strong> hinzugefügt.");
938 case 'modify': // When the extension got modified
941 case 'test': // For testing purposes
944 case 'init': // Do stuff when extension is initialized
945 // Transfer POINTS word
946 if (isExtensionInstalledAndNewer('sql_patches', '0.0.3')) {
947 // Okay, recent enough, so transfer the word for POINTS
948 setConfigEntry('POINTS', getPointsWord());
952 setConfigEntry('secret_key', '');
954 // Is the version recent enought for secret keys?
955 if (isExtensionInstalledAndNewer('sql_patches', '0.3.6')) {
956 // Read key from secret file
957 if ((getFileHash() == '') || (getMasterSalt() == '') || (getPassScramble() == '')) {
958 // Maybe need setup of secret key!
959 loadIncludeOnce('inc/gen_sql_patches.php');
963 if ((getFileHash() != '') && (getMasterSalt() != '') && (getPassScramble() != '')) {
964 // File hash fas generated so we can also file the secret file... hopefully.
965 $hashFile = sprintf("%s%s.%s.cache", getPath(), getCachePath(), getFileHash());
967 // Is the secret key file readable?
968 if (isFileReadable($hashFile)) {
970 setConfigEntry('secret_key', readFromFile($hashFile));
972 // Remove it from database
973 updateConfiguration('file_hash', '');
975 // Cannot read secret file!
976 reportBug(__FILE__, __LINE__, 'Cannot read secret file! Please try to reload.');
982 default: // Unknown extension mode
983 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));