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 - 2011 by Mailer Developer Team *
20 * For more information visit: http://www.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.8.5');
46 // Version history array (add more with , '0.0.1' and so on)
47 setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.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'));
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`
80 'list_point_accounts',
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 unregisterFilter(__FUNCTION__, __LINE__, 'member_login_check', 'RESET_USER_LOGIN_FAILURE', true, isExtensionDryRun());
101 unregisterFilter(__FUNCTION__, __LINE__, 'add_history_entry', 'ADD_HISTORY_ENTRY', true, isExtensionDryRun());
104 case 'activate': // Do stuff when admin activates this extension
105 // SQL commands to run
109 case 'deactivate': // Do stuff when admin deactivates this extension
110 // SQL commands to run
114 case 'update': // Update an extension
115 switch (getCurrentExtensionVersion()) {
116 case '0.0.1': // SQL queries for v0.0.1
117 addAdminMenuSql('setup', 'config_extensions', 'Erweitungsmanagement', 'Alle Einstellungen am Erweiterungsmanagement.', 10);
119 // Update notes (these will be set as task text!)
120 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.");
123 case '0.0.2': // SQL queries for v0.0.2
124 addConfigChangeSql('auto_purge', 'auto_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay()*14));
126 // Update notes (these will be set as task text!)
127 setExtensionUpdateNotes("In der Tabelle <strong>{?_MYSQL_PREFIX?}_config</strong> musste die Spalte <strong>auto_purge</strong> (autom. Löschen von Bestätigungsmails angepasst werden (war auf dem Testsystem auf TINYINT(4) gesetzt.)");
130 case '0.0.3': // SQL queries for v0.0.3
131 addConfigAddSql('points_word', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_TEMPLATE}DEFAULT_POINTS{CLOSE_TEMPLATE}'");
133 // Update notes (these will be set as task text!)
134 setExtensionUpdateNotes("Das Wort "Punkte" kann nun per Datenbank geändert werden. Damit können Sie anstelle des Wortes Punkte auch Klammlose, Wernis, Primera oder € schreiben.");
137 case '0.0.4': // SQL queries for v0.0.4
138 addConfigAddSql('mails_page', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
140 // Update notes (these will be set as task text!)
141 setExtensionUpdateNotes("Anzahl Mails pro Seite in <strong>EMail-Details ansehen</strong> und <strong>EMail-Archiv</strong> hinzugefügt.");
144 case '0.0.5': // SQL queries for v0.0.5
145 addConfigAddSql('index_home', "VARCHAR(255) NOT NULL DEFAULT 'welcome'");
146 addAdminMenuSql('setup','config_home','Home-Seite festlegen','Stellen Sie hier ein, welcher Menüpunkt (what-welcome ist Standard) als Einstiegspunkt in das Menüsystem genutzt werden soll.', 5);
148 // Update notes (these will be set as task text!)
149 setExtensionUpdateNotes("Die what-welcome.php ist derzeit die "Home"-Seite (Eingangsseite). Dies kann nun per Datenbank geändert werden.");
152 case '0.0.6': // SQL queries for v0.0.6
153 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD `ext_has_css` ENUM('Y','N') NOT NULL DEFAULT 'N'");
155 // Update notes (these will be set as task text!)
156 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.");
159 case '0.0.7': // SQL queries for v0.0.7
160 addConfigAddSql('verbose_sql', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
162 // Update notes (these will be set as task text!)
163 setExtensionUpdateNotes("Die SQL-Anweisungen werden bei eingeschalteter Verbose-Funktion detailiert angezeigt.");
166 case '0.0.8': // SQL queries for v0.0.8
167 addConfigAddSql('menu_blur_spacer', "VARCHAR(255) NOT NULL DEFAULT ' <strong><big>·</big></strong> '");
169 // Update notes (these will be set as task text!)
170 setExtensionUpdateNotes("Nette Mouse-Hover-Effekte eingebaut (Anleitung <strong>MENUE_HOVER.txt</strong> zum Patchen der general.css bitte lesen!)");
173 case '0.0.9': // SQL queries for v0.0.9
174 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);
176 // Update notes (these will be set as task text!)
177 setExtensionUpdateNotes("Unbestätigte Maillinks können unter Email-Management -> Unbest. Mails auflisten aufgelistet werden.");
180 case '0.1.0': // SQL queries for v0.1.0
181 // Update notes (these will be set as task text!)
182 setExtensionUpdateNotes("Soll der einmalige Ref-Bonus über das Referal-System (also alle oberen Refs bekommen auch etwas davon ab) oder direkt dem Werber aufgebucht werden?");
185 case '0.1.1': // SQL queries for v0.1.1
186 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Home-/Eingangsseite', descr='Stellen Sie hier ein, welcher Menü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");
187 addConfigAddSql('index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
188 addConfigAddSql('index_cookie', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 365));
190 // Update notes (these will be set as task text!)
191 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.");
194 case '0.1.2': // SQL queries for v0.1.2
195 addAdminMenuSql('setup','config_refid','Standard-Ref-Id','Stellen Sie hier die Mitglieder-Id ein, die genommen werden soll, wenn der Gast n icht per Referal-Link Ihren {?mt_word?} aufgerufen hat.', 7);
196 addConfigAddSql('def_refid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
198 // Update notes (these will be set as task text!)
199 setExtensionUpdateNotes("Standard Referal-Id kann per Admin-Bereich eingestellt werden (war vorher nur in modules.php und index.php direkt eingebbar.)");
202 case '0.1.3': // SQL queries for v0.1.3
203 addConfigAddSql('refid_target', "ENUM('register','index') NOT NULL DEFAULT 'register'");
205 // Update notes (these will be set as task text!)
206 setExtensionUpdateNotes("Auf welche Seite soll der Ref-Link zeigen? Eingangsseite oder Anmeldeformular?");
209 case '0.1.4': // SQL queries for v0.1.4
210 // Update notes (these will be set as task text!)
211 setExtensionUpdateNotes("Ungültiges Update (nach ext-theme.php verschoben!).");
214 case '0.1.5': // SQL queries for v0.1.5
215 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_has_admin`");
217 // Update notes (these will be set as task text!)
218 setExtensionUpdateNotes("Spalte <u>ext_has_admin</u> aus der Tabelle <u>{?_MYSQL_PREFIX?}_extensions</u> entfernt, da sie keinen Sinn mehr macht.");
221 case '0.1.6': // SQL queries for v0.1.6
222 addConfigAddSql('enable_title_deco', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
223 addConfigAddSql('title_left', "VARCHAR(10) NOT NULL DEFAULT '[--'");
224 addConfigAddSql('title_middle', "VARCHAR(10) NOT NULL DEFAULT '-'");
225 addConfigAddSql('title_right', "VARCHAR(10) NOT NULL DEFAULT '--]'");
226 addConfigAddSql('enable_mod_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
227 addConfigAddSql('enable_what_title', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
228 addAdminMenuSql('setup','config_title','Seitentitel ändern','De-/aktivieren Sie hier die Dekorationen, sowie Modul-Titel und what-Titel im Seitentitel.', 8);
230 // Update notes (these will be set as task text!)
231 setExtensionUpdateNotes("Dekorationen des Seitentiteles lassen sich ein- und ausschalten und selber definieren; Modul-Titel und Titel der <strong>what</strong>-Dateien kann hinzugefügt werden.");
234 case '0.1.7': // SQL queries for v0.1.7
235 // Update notes (these will be set as task text!)
236 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
239 case '0.1.8': // SQL queries for v0.1.8
240 // Update notes (these will be set as task text!)
241 setExtensionUpdateNotes("mad_count und last_mad werden nun aus der Datenbank geladen");
244 case '0.1.9': // SQL queries for v0.1.9
245 // Update notes (these will be set as task text!)
246 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
249 case '0.2.0': // SQL queries for v0.2.0
250 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_jackpot` CHANGE `points` `points` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
252 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payments` CHANGE `payment` `payment` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
253 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_payments` CHANGE `price` `price` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
255 // Update notes (these will be set as task text!)
256 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
259 case '0.2.1': // SQL queries for v0.2.1
260 addConfigAddSql('css_php', "ENUM('DIRECT','FILE') NOT NULL DEFAULT 'FILE'");
262 // Update notes (these will be set as task text!)
263 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
266 case '0.2.2': // SQL queries for v0.2.2
267 // Update notes (these will be set as task text!)
268 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
271 case '0.2.3': // SQL queries for v0.2.3
272 addConfigAddSql('guest_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
273 addConfigAddSql('member_menu', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
274 addConfigAddSql('youre_here', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
276 // Update notes (these will be set as task text!)
277 setExtensionUpdateNotes("Gast- und Mitgliedsmenüs lassen sich getrennt voneinander abschalten.");
280 case '0.2.4': // SQL queries for v0.2.4
281 // PNG image is the default
284 // Is the JPEG file found and required PHP function there?
285 if ((isFileReadable(getPath() . 'theme/' . getCurrentTheme() . '/images/code_bg.jpg')) && function_exists('imagecreatefromjpeg')) {
286 // Switch to JPEG format
289 addConfigAddSql('img_type', "ENUM('jpg','png') NOT NULL DEFAULT '" . $auto_type . "'");
291 // Update notes (these will be set as task text!)
292 setExtensionUpdateNotes("Generierung des Mailbestätigungscodes hängt davon ab, ob die PHP-Funktion <u>imagecreatefromjpeg()</u> und das JPEG-Bild vorhanden sind oder nicht.");
295 case '0.2.5': // SQL queries for v0.2.5
296 // Update notes (these will be set as task text!)
297 setExtensionUpdateNotes("Spalten <u>max_mails</u> und <u>receive_mails</u> auf BIGINT(20) gesetzt.");
300 case '0.2.6': // SQL queries for v0.2.6
301 // Update notes (these will be set as task text!)
302 setExtensionUpdateNotes("Verschoben nach <strong>ext-user</strong>.");
305 case '0.2.7': // SQL queries for v0.2.7
306 addConfigAddSql('stats_limit', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
307 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='config_stats' WHERE `what`='stats' LIMIT 1");
309 // Update notes (these will be set as task text!)
310 setExtensionUpdateNotes("<ol>
311 <li>Das Mitglied kann das derzeitige Design in sein Profil abspeichern.</li>
312 <li>Mitgliederstatistik mit Seitennavigation.</li>
316 case '0.2.8': // SQL queries for v0.2.8
317 // Update notes (these will be set as task text!)
318 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
321 case '0.2.9': // SQL queries for v0.2.9
322 addConfigAddSql('mt_word', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausch'");
323 addConfigAddSql('mt_word2', "VARCHAR(255) NOT NULL DEFAULT 'Mailtausches'");
324 addConfigAddSql('mt_word3', "VARCHAR(255) NOT NULL DEFAULT 'Mailtauscher'");
326 // Update notes (these will be set as task text!)
327 setExtensionUpdateNotes("Wörter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
330 case '0.3.0': // SQL queries for v0.3.0
331 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG}/Referal-Ebenen' WHERE `what`='config_points' LIMIT 1");
332 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailvergütungen...' WHERE `what`='payments' LIMIT 1");
334 // Update notes (these will be set as task text!)
335 setExtensionUpdateNotes("Zwei Menüpunkte umbenannt.");
338 case '0.3.1': // SQL queries for v0.3.1
339 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD UNIQUE `ext_name` (`ext_name`)");
340 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` ADD UNIQUE `login` (`login`)");
341 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refbanner` ADD INDEX `visible` (`visible`)");
342 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` ADD UNIQUE `level` (`level`)");
343 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD INDEX `level` (`level`)");
344 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD INDEX `data_type` (`data_type`)");
345 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD UNIQUE `module` (`module`)");
346 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `action` (`action`)");
347 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` ADD INDEX `what` (`what`)");
348 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_type` (`task_type`)");
349 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `status` (`status`)");
350 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `task_created` (`task_created`)");
351 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD FULLTEXT `subject` (`subject`)");
352 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX `subject` (`subject`)");
353 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` ADD INDEX `ext_active` (`ext_active`)");
354 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `action` (`action`)");
355 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `what` (`what`)");
356 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `sort` (`sort`)");
357 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `visible` (`visible`)");
358 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` ADD INDEX `locked` (`locked`)");
359 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `what` (`what`)");
360 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `sort` (`sort`)");
361 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `visible` (`visible`)");
362 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` ADD INDEX `locked` (`locked`)");
363 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `visible` (`visible`)");
364 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` ADD INDEX `sort` (`sort`)");
366 // Update notes (these will be set as task text!)
367 setExtensionUpdateNotes("Eindeutige Schlüssel (UNIQUE) und normale Schlüssel (INDEX) gesetzt.");
370 case '0.3.2': // SQL queries for v0.3.2
371 // Connection table between the menu system and the "logical area system"
372 addDropTableSql('admin_menu_las');
373 addCreateTableSql('admin_menu_las', "
374 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
375 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
376 `la_action` VARCHAR(255) NOT NULL DEFAULT '',
377 `la_what` VARCHAR(255) NOT NULL DEFAULT '',
382 'Menu system -> LAS');
384 // All "logical areas" together
385 addDropTableSql('admin_menu_las_data');
386 addCreateTableSql('admin_menu_las_data', "
387 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
388 `la_id` VARCHAR(255) NOT NULL DEFAULT '',
389 `la_title` VARCHAR(255) NOT NULL DEFAULT '',
390 `la_posx` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
391 `la_posy` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
396 'LAS position and title data');
398 // Which menu do you like?
399 addConfigAddSql('admin_menu', "ENUM('NEW','OLD') NOT NULL DEFAULT 'OLD'");
402 addAdminMenuSql('setup', 'config_admin', 'Adminmenü', 'Diverse Einstellungen am Adminmenü vornehmen.', 9);
404 // Update notes (these will be set as task text!)
405 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.");
408 case '0.3.3': // SQL queries for v0.3.3
409 // Switch of the "intelligent menu sorter" when you want to have a fixed menu structure...
410 addConfigAddSql('admin_menu_sorter', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
412 // The statistics table
413 addDropTableSql('admin_las_stats');
414 addCreateTableSql('admin_las_stats', "
415 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
416 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
417 `type` ENUM('la','action','what') NOT NULL DEFAULT 'what',
418 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
423 // Update notes (these will be set as task text!)
424 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.");
427 case '0.3.4': // SQL queries for v0.3.4
428 // Update notes (these will be set as task text!)
429 setExtensionUpdateNotes("Veraltetes Update (what=list_user&mode=noref)");
432 case '0.3.5': // SQL queries for v0.3.5
433 // List accounts with no referal
434 addMemberMenuSql('stats', NULL, 'Statistiken', 4);
435 addMemberMenuSql('stats', 'stats2', 'Framekiller-Mails', 2);
436 addMemberMenuSql('extras', NULL, 'Extras', 5);
437 addMemberMenuSql('rals', NULL, 'Rallyes', 6);
438 addMemberMenuSql('account', NULL, 'Ihr Account', 7);
439 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='stats', `sort`=1, `title`='Klick-Mails' WHERE `what`='stats' LIMIT 1");
440 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=3 WHERE `what`='reflinks' LIMIT 1");
442 // Update notes (these will be set as task text!)
443 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
446 case '0.3.6': // SQL queries for v0.3.6
447 addConfigAddSql('salt_length', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
448 addConfigAddSql('pass_scramble', "VARCHAR(255) NOT NULL DEFAULT ''");
449 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admins` CHANGE `password` `password` VARCHAR(255) NOT NULL DEFAULT ''");
450 addConfigAddSql('rand_no', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
451 addConfigAddSql('file_hash', "VARCHAR(255) NOT NULL DEFAULT ''");
452 addConfigAddSql('master_salt', "VARCHAR(255) NOT NULL DEFAULT ''");
453 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_config` SET `rand_no`=(ROUND(RAND() * 99999) + 100000) WHERE `config`=0 LIMIT 1");
454 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_mod_reg` ADD `has_menu` ENUM('Y','N') NOT NULL DEFAULT 'N'");
455 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `has_menu`='Y' WHERE `module`='admin' OR `module`='index' OR `module`='login' LIMIT 3");
457 // Update notes (these will be set as task text!)
458 setExtensionUpdateNotes("Passwort-System mit Zufallshash erweitert (Schutzt gegen Dictionary-Attacks!)");
461 case '0.3.7': // SQL queries for v0.3.7
462 setExtensionUpdateNotes("Problem während des Installationsvorganges behoben.");
465 case '0.3.8': // SQL queries for v0.3.8
466 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `descr` `descr` MEDIUMTEXT NULL");
467 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` CHANGE `text` `text` LONGTEXT NOT NULL");
469 // Update notes (these will be set as task text!)
470 setExtensionUpdateNotes("Beschreibungstexte für Admin-Menüs können länger sein. Diverse Fixes.");
473 case '0.3.9': // SQL queries for v0.3.9
474 // Update notes (these will be set as task text!)
475 setExtensionUpdateNotes("Beschreibungstexte für Admin-Menüs können länger sein. Diverse Fixes.");
478 case '0.4.0': // SQL queries for v0.4.0
479 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Email-Management' WHERE `action` = 'email' AND (`what`='' OR `what` IS NULL) LIMIT 1");
481 // Update notes (these will be set as task text!)
482 setExtensionUpdateNotes("Email-Verwaltung nach Email-Management umbenannt.");
485 case '0.4.1': // SQL queries for v0.4.1
486 addConfigAddSql('show_timings', "ENUM ('Y','N') NOT NULL DEFAULT 'Y'");
488 // Update notes (these will be set as task text!)
489 setExtensionUpdateNotes("Tabellen-Schlüssel neu gesetzt und Parsing-Zeit im Footer eingeblendet.");
492 case '0.4.2': // SQL queries for v0.4.2
493 // Update notes (these will be set as task text!)
494 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
497 case '0.4.3': // SQL queries for v0.4.3
498 addConfigAddSql('proxy_host', "VARCHAR(255) NOT NULL DEFAULT ''");
499 addConfigAddSql('proxy_port', 'INT(5) UNSIGNED NOT NULL DEFAULT 0');
500 addConfigAddSql('proxy_username', "VARCHAR(255) NOT NULL DEFAULT ''");
501 addConfigAddSql('proxy_password', "VARCHAR(255) NOT NULL DEFAULT ''");
502 addAdminMenuSql('setup','config_proxy','Proxy-Einstellungen','Sollte Ihr Webserver sich hinter einem Proxy befinden, so können Sie Ihren {?mt_word?} so konfigurieren, dass es Updates durch diesen hindurch sucht!', 15);
504 // Update notes (these will be set as task text!)
505 setExtensionUpdateNotes("Proxy-Einstellungen hinzugefügt.");
508 case '0.4.4': // SQL queries for v0.4.4
509 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
510 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
511 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` CHANGE `what` `what` VARCHAR(255) NULL DEFAULT NULL");
512 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`=NULL WHERE `what`=''");
513 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `what`=NULL WHERE `what`=''");
514 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `what`=NULL WHERE `what`=''");
516 // Make this depending on ext-menu
517 addExtensionDependency('menu');
519 // Update notes (these will be set as task text!)
520 setExtensionUpdateNotes("Schlüssel in Admin-, Gast- und Mitgliedsmenü verbessert.");
523 case '0.4.5': // SQL queries for v0.4.5
524 addConfigAddSql('last_month', 'CHAR(2) NOT NULL DEFAULT 00');
525 addConfigAddSql('last_week', 'CHAR(2) NOT NULL DEFAULT 00');
527 // Update notes (these will be set as task text!)
528 setExtensionUpdateNotes("Täglichen/wöchentlichen/monatlichen Reset verbessert.");
531 case '0.4.6': // SQL queries for v0.4.6
532 // Update notes (these will be set as task text!)
533 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
536 case '0.4.7': // SQL queries for v0.4.7
537 // Update notes (these will be set as task text!)
538 setExtensionUpdateNotes("Veraltetes Update.");
541 case '0.4.8': // SQL queries for v0.4.8
542 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_task_system` ADD INDEX (`subject`)');
544 // Update notes (these will be set as task text!)
545 setExtensionUpdateNotes("Index für Betreff eingefügt.");
548 case '0.4.9': // SQL queries for v0.4.9
549 // Update notes (these will be set as task text!)
550 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
553 case '0.5.0': // SQL queries for v0.5.0
554 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `level`');
555 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` DROP INDEX `userid`');
556 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refsystem` ADD UNIQUE `userid_level` (`userid`,`level`)');
558 // Update notes (these will be set as task text!)
559 setExtensionUpdateNotes("Referal-System unterstützt nun detailierte Referal-Übersicht und vieles mehr.");
562 case '0.5.1': // SQL queries for v0.5.1
563 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` DROP `descr`');
565 // Update notes (these will be set as task text!)
566 setExtensionUpdateNotes("Beschreibungsspalte von Mitgliedsmenü entfernt, welche ohnehin nicht genutzt wird.");
569 case '0.5.2': // SQL queries for v0.5.2
570 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` CHANGE `percents` `percents` FLOAT(8,5) UNSIGNED NOT NULL DEFAULT 0.00000');
572 // Update notes (these will be set as task text!)
573 setExtensionUpdateNotes("Prozentsätze können nun fünf Stellen hinter dem Komma sein.");
576 case '0.5.3': // SQL queries for v0.5.3
577 addConfigAddSql('session_save_path', "VARCHAR(255) NOT NULL DEFAULT ''");
578 addAdminMenuSql('setup','config_session','Session-Einstellungen','Ändern Sie hier den Speicherpfad für Sessiondateien (Sitzungsdateien) ab, falls die Standard-Einstellung bei Ihrem Hoster zu Problem führen sollte.', 16);
580 // Update notes (these will be set as task text!)
581 setExtensionUpdateNotes("Session-Speicherpfad konfigurierbar. Beispielsweise ist dies bei all-inkl.com nötig.");
584 case '0.5.4': // SQL queries for v0.5.4
585 addMemberMenuSql('main', 'reflist', 'Ref-Übersicht', 5);
587 // Update notes (these will be set as task text!)
588 setExtensionUpdateNotes("Ref-Übersicht eingebaut. Diese hängt von der Erweiterung <strong>refback</strong> ab.");
591 case '0.5.5': // SQL queries for v0.5.5
592 addConfigAddSql('show_points_unconfirmed', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
594 // Update notes (these will be set as task text!)
595 setExtensionUpdateNotes("Anzeige der {?POINTS?} unter den unbestätigten Mails kann nun optional abgeschaltet werden.");
598 case '0.5.6': // SQL queries for v0.5.6
599 // Update notes (these will be set as task text!)
600 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
603 case '0.5.7': // SQL queries for v0.5.7
604 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='list_norefs' LIMIT 1");
606 // Update notes (these will be set as task text!)
607 setExtensionUpdateNotes("Auflistung der Mitglieder ohne Werber nach what=list_user&mode=norefs verschoben.");
610 case '0.5.8': // SQL queries for v0.5.8
611 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_extensions` DROP `ext_lang_file`');
613 // Update notes (these will be set as task text!)
614 setExtensionUpdateNotes("Sprachdateinamen werden nicht mehr in der Datenbank behalten.");
617 case '0.5.9': // SQL queries for v0.5.9
618 // Table 'filters' is vital because many functionality depends on it, so don't remove it
619 addCreateTableSql('filters', "
620 `filter_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
621 `filter_name` VARCHAR(50) NOT NULL DEFAULT '',
622 `filter_function` VARCHAR(100) NOT NULL DEFAULT '',
623 `filter_active` ENUM('N','Y') NOT NULL DEFAULT 'Y',
624 `filter_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
625 PRIMARY KEY (`filter_id`),
626 UNIQUE `name_function` (`filter_name` , `filter_function`)",
630 addAdminMenuSql('setup','list_filter','Filter-Management', 'Zeigt alle im System registrierten Filter an und lässt diese de- bzw. wieder aktivieren.', 17);
632 // Update notes (these will be set as task text!)
633 setExtensionUpdateNotes("Tabellen für Filter-System hinzugefügt.");
636 case '0.6.0': // SQL queries for v0.6.0
637 addConfigAddSql('update_filter_usage', "ENUM('N','Y') NOT NULL DEFAULT 'N'");
639 // Update notes (these will be set as task text!)
640 setExtensionUpdateNotes("Benutzungsstatistik eingebaut. Das Zählen der Filterverwendungen sollte <strong>ausschliesslich</strong> zu Debugging-Zwecken eingesetzt werden.");
643 case '0.6.1': // SQL queries for v0.6.1
644 // Update notes (these will be set as task text!)
645 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
648 case '0.6.2': // SQL queries for v0.6.2
649 // Depends on refback extension
650 addExtensionDependency('user');
652 // Update notes (these will be set as task text!)
653 setExtensionUpdateNotes("Abhängigkeit von <u>ext-user</u> gesetzt.");
656 case '0.6.3': // SQL queries for v0.6.3
657 // Update notes (these will be set as task text!)
658 setExtensionUpdateNotes("Filter-Tabelle bereinigt um doppelte Einträge und Unique-Key auf <em>filter_name</em> und <em>filter_function</em> zusammen gesetzt.");
660 // Add special fix include to fix filters
661 addIncludeToPool('extension', 'inc/fix_filters.php');
664 case '0.6.4': // SQL queries for v0.6.4
666 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
667 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `descr` = REPLACE(`descr`, '!POINTS!', '?POINTS?') WHERE `descr` LIKE '%!POINTS!%'");
668 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
669 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `title` = REPLACE(`title`, '!POINTS!', '?POINTS?') WHERE `title` LIKE '%!POINTS!%'");
671 // Update notes (these will be set as task text!)
672 setExtensionUpdateNotes("Datenbank umgestellt auf Konfigurationselemente.");
675 case '0.6.5': // SQL queries for v0.6.5
676 addConfigChangeSql('css_php', 'css_php', "ENUM('DIRECT','FILE','INLINE') NOT NULL DEFAULT 'FILE'");
678 // Update notes (these will be set as task text!)
679 setExtensionUpdateNotes("Ausgabe der CSS-Dateien entweder per css.php oder sie sind direkt eingebunden.");
682 case '0.6.6': // SQL queries for v0.6.6
683 addAdminMenuSql('setup','config_secure','Sicherheitseinstellungen','Stellen Sie ein, wie lange das Passwort eines Mitgliedes mindestens sein muss uvm.',9);
684 addAdminMenuSql('setup','config_points','{OPEN_CONFIG}POINTS{CLOSE_CONFIG}','Stellen Sie hier die Willkommensgutschrift, Referal-Gutschrift (einmalige) usw. ein.',10);
685 addAdminMenuSql('email','email_archiv','E-Mail Archiv','Sehen Sie sich hier bereits gesendete Mails an.',6);
687 // Update notes (these will be set as task text!)
688 setExtensionUpdateNotes("Die Sicherheitseinstellungen, {?POINTS?}-Einstellungen und Email-Archiv funktionieren nur, wenn diese Erweiterung installiert ist.");
691 case '0.6.7': // SQL queries for v0.6.7
692 addConfigChangeSql('index_delay', 'index_delay', 'TINYINT(3) NOT NULL DEFAULT 0');
694 // Update notes (these will be set as task text!)
695 setExtensionUpdateNotes("Die Weiterleitungseinstellung muss auch Werte kleiner Null akzeptieren.");
698 case '0.6.8': // SQL queries for v0.6.8
699 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
700 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
701 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_guest_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
702 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
703 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_member_menu` CHANGE `action` `action` VARCHAR(50) NOT NULL');
704 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_admin_menu` CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
706 // Update notes (these will be set as task text!)
707 setExtensionUpdateNotes("Spalten verkürzt, damit die Schlüssel passen.");
710 case '0.6.9': // SQL queries for 0.6.9
712 registerFilter('member_login_check', 'RESET_USER_LOGIN_FAILURE', false, true, isExtensionDryRun());
714 // Update notes (these will be set as task text!)
715 setExtensionUpdateNotes("Filter zum Zurücksetzens des fehlgeschlagenen Mitgliederlogins hinzugefügt (internes TODO).");
718 case '0.7.0': // SQL queries for 0.7.0
720 addDropTableSql('dns_cache');
721 addCreateTableSql('dns_cache', "
722 `hostname` VARCHAR(255) NOT NULL,
723 `ip` VARCHAR(15) NOT NULL,
724 `added` DATETIME NOT NULL,
725 PRIMARY KEY (`hostname`),
727 'Cache for DNS requests');
730 addConfigAddSql('dns_cache_timeout', 'BIGINT(20) NOT NULL DEFAULT ' . (60*60*24));
733 registerFilter('reset', 'CLEANUP_DNS_CACHE', false, true, isExtensionDryRun());
735 // Update notes (these will be set as task text!)
736 setExtensionUpdateNotes("IP-Resolver-Klasse hinzugefügt, um bei der Erweiterung ext-network DNS-Anfragen einzusparen.");
739 case '0.7.1': // SQL queries for v0.7.1
740 // This update just depends on ext-timezone to make integration of an essential extension much easier
741 addExtensionDependency('timezone');
743 // Update notes (these will be set as task text!)
744 setExtensionUpdateNotes("Zeitzone ist nun mit ext-timezone konfigurierbar.");
747 case '0.7.2': // SQL queries for v0.7.2
748 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_task_system` SET `task_type`='MEMBER_SUPPORT' WHERE `task_type`='SUPPORT_MEMBER'");
750 // Update notes (these will be set as task text!)
751 setExtensionUpdateNotes("Daten an Namenskonvention angepasst.");
754 case '0.7.3': // SQL queries for v0.7.3
755 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_filters` CHANGE `filter_name` `filter_name` VARCHAR(50) NOT NULL DEFAULT ''");
756 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_filters` CHANGE `filter_function` `filter_function` VARCHAR(100) NOT NULL DEFAULT ''");
758 // Update notes (these will be set as task text!)
759 setExtensionUpdateNotes("Spalten in Filtertabelle gekürzt (SQL-Fehler wegen zu grossem Schlüssel).");
762 case '0.7.4': // SQL queries for v0.7.4
763 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_pool` ADD `mails_sent` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
765 // Update notes (these will be set as task text!)
766 setExtensionUpdateNotes("Spalten in Filtertabelle gekürzt (SQL-Fehler wegen zu grossem Schlüssel).");
769 case '0.7.5': // SQL queries for v0.7.5
770 addConfigAddSql('last_hour', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
772 // Update notes (these will be set as task text!)
773 setExtensionUpdateNotes("Aktuelle Stunde hinzugefügt (ist nicht konfigurierbar).");
776 case '0.7.6': // SQL queries for v0.7.6
777 addConfigChangeSql('last_month', 'last_month', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
778 addConfigChangeSql('last_week', 'last_week', 'TINYINT(2) UNSIGNED ZEROFILL NOT NULL DEFAULT 00');
780 // Update notes (these will be set as task text!)
781 setExtensionUpdateNotes("Spaltentyp fuer kleine Zahlen sollten auch z.B. TINYINT sein.");
784 case '0.7.7': // SQL queries for v0.7.7
785 addMemberMenuSql('earn', NULL, 'Verdienen', 2);
786 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='earn',`sort`=1 WHERE `what`='unconfirmed' LIMIT 1");
788 // Update notes (these will be set as task text!)
789 setExtensionUpdateNotes("Menüpunkt <strong>Verdienen</strong> hinzugefügt und <strong>Unbestätigte Mails</strong> als ersten Punkt dort hin verschoben.");
792 case '0.7.8': // SQL queries for v0.7.8
793 // Update notes (these will be set as task text!)
794 setExtensionUpdateNotes("Konfigurationseinträge mit Spaltentyp <strong>ENUM</strong> werden nun immer komplett gross geschrieben.");
797 case '0.7.9': // SQL queries for v0.7.9
798 addExtensionSQL("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_email_max_rec' WHERE `what`='config_email' LIMIT 1");
800 // Update notes (these will be set as task text!)
801 setExtensionUpdateNotes("Adminscript <strong>what-config_email.php</strong> nach <strong>what-list_email_max_rec.php</strong> umbenannt.");
804 case '0.8.0': // SQL queries for v0.8.0
805 // Points account data (this table should not be dropped or else you may have to re-install a lot extensions)
806 addCreateTableSql('points_data', "
807 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
808 `subject` VARCHAR(255) NOT NULL DEFAULT '',
809 `column_name` VARCHAR(255) NOT NULL DEFAULT 'points',
810 `locked_mode` ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED',
811 `payment_method` ENUM('DIRECT','REFERAL') NOT NULL DEFAULT 'REFERAL',
812 `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N',
815 'Points account data');
818 addAdminMenuSql('setup', 'list_point_accounts', 'Guthabenkonten...', 'Veralten Sie hier bequem Einstellungen zu den Guthabenkonten.', 5);
820 // Update notes (these will be set as task text!)
821 setExtensionUpdateNotes("Tabelle <em>points_data</em> erzeugt, diese soll das {?POINTS?}-Guthaben komplett lenken.");
824 case '0.8.1': // SQL queries for v0.8.1
825 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_refdepths` CHANGE `level` `level` TINYINT(3) UNSIGNED NULL DEFAULT NULL');
826 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_refdepths` SET `level`=NULL WHERE `level`=0 LIMIT 1');
828 // Update notes (these will be set as task text!)
829 setExtensionUpdateNotes("Level 0 ist nun auch NULL.");
832 case '0.8.2': // SQL queries for v0.8.2
833 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` DROP INDEX `ext_name`");
834 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` CHANGE `ext_name` `subject` VARCHAR(255) NOT NULL DEFAULT ''");
835 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` CHANGE `payment_method` `payment_method` ENUM('DIRECT','REFERAL') NOT NULL DEFAULT 'REFERAL'");
836 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD INDEX `subject` (`subject`)");
837 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_points_data` ADD `notify_recipient` ENUM('Y','N') NOT NULL DEFAULT 'N'");
838 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('pool_payback','points','LOCKED','DIRECT')");
839 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('mail_deleted','points','LOCKED','DIRECT')");
840 addConfigDropSql('reg_points_mode');
842 // Update notes (these will be set as task text!)
843 setExtensionUpdateNotes("Es sollte der Gutschriftenbetreff und nicht der Erweiterungsname gepeichert werden, zudem brauchen wir einen Konfigurationseintrag nicht mehr.");
846 case '0.8.3': // SQL queries for v0.8.3
847 addConfigAddSql('display_home_in_index', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
849 // Update notes (these will be set as task text!)
850 setExtensionUpdateNotes("Es kann nun die "Home"-Seite in <strong>index.php</strong> angezeigt werden, anstelle der Weiterleitung.");
853 case '0.8.4': // SQL queries for v0.8.4
854 addCreateTableSql('history', "
855 `history_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
856 `history_subject` VARCHAR(255) NOT NULL DEFAULT 'GENERIC',
857 `history_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
858 `history_value` VARCHAR(255) NOT NULL DEFAULT '',
859 `history_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
860 `history_last_used` TIMESTAMP NULL DEFAULT NULL,
861 PRIMARY KEY (`history_id`),
862 INDEX `userid` (`history_userid`),
863 INDEX (`history_last_used` DESC)",
864 'History of used data');
867 registerFilter('add_history_entry', 'ADD_HISTORY_ENTRY', false, true, isExtensionDryRun());
869 // Update notes (these will be set as task text!)
870 setExtensionUpdateNotes("Allgemeine Historie-Tabelle hinzugefügt.");
873 case '0.8.5': // SQL queries for v0.8.5
874 // Old-lost configuration entry
875 addConfigDropSql('ext_autopurge');
877 // Extra earning for our members :-)
878 addMemberMenuSql('earn', 'earnings', 'Zusatzverdienste', 2);
881 addAdminMenuSql('setup', 'list_earnings', 'Zusatzverdienste...', 'Veralten Sie hier bequem alle Zusatzverdienste (wie z.B. vergütete PopUps usw.).', 6);
883 // Earning data table
884 addDropTableSql('earning_data');
885 addCreateTableSql('earning_data', "
886 `earning_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
887 `earning_group` VARCHAR(255) NOT NULL DEFAULT 'INVALID',
888 `earning_name` VARCHAR(255) NOT NULL DEFAULT 'INVALID',
889 `earning_sorting` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
890 PRIMARY KEY (`earning_id`),
891 UNIQUE `earning_group_name` (`earning_group`,`earning_name`)",
892 'Registered (extra) earnings');
894 // User->earnings connection table
895 addDropTableSql('user_earning');
896 addCreateTableSql('user_earning', "
897 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
898 `earning_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
899 `earning_userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
900 `earning_active` ENUM('Y','N') NOT NULL DEFAULT 'Y',
901 `earning_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
902 `earning_canceled` TIMESTAMP NULL DEFAULT NULL,
903 `earning_daily_amount` SMALLINT(7) NOT NULL DEFAULT 0,
904 `earning_points` FLOAT(20,5) NOT NULL DEFAULT 0.00000,
906 UNIQUE `user_earning` (`earning_id`,`earning_userid`),
907 INDEX (`earning_userid`)",
908 'User->Earning connections');
910 // Update notes (these will be set as task text!)
911 setExtensionUpdateNotes("Menüpunkt für Zusatzverdienste wie z.B. Forced-PopUps hinzugefügt und uralten Konfigurationseintrag entfernt.");
916 case 'modify': // When the extension got modified
919 case 'test': // For testing purposes
922 case 'init': // Do stuff when extension is initialized
923 // Transfer POINTS word
924 if (isExtensionInstalledAndNewer('sql_patches', '0.0.3')) {
925 // Okay, recent enough, so transfer the word for POINTS
926 setConfigEntry('POINTS', getPointsWord());
930 setConfigEntry('secret_key', '');
932 // Read key from secret file
933 if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && ((getFileHash() == '') || (getMasterSalt() == '') || (getPassScramble() == ''))) {
934 // Maybe need setup of secret key!
935 loadIncludeOnce('inc/gen_sql_patches.php');
939 if ((isExtensionInstalledAndNewer('sql_patches', '0.3.6')) && (getFileHash() != '') && (getMasterSalt() != '') && (getPassScramble() != '')) {
940 // File hash fas generated so we can also file the secret file... hopefully.
941 $hashFile = sprintf("%s%s.%s.cache", getPath(), getCachePath(), getFileHash());
942 if (isFileReadable($hashFile)) {
944 setConfigEntry('secret_key', readFromFile($hashFile));
946 // Remove it from database
947 updateConfiguration('file_hash', '');
949 // Cannot read secret file!
950 debug_report_bug(__FILE__, __LINE__, 'Cannot read secret file! Please try to reload.');
955 default: // Unknown extension mode
956 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));