2 /************************************************************************
3 * Mailer v0.2.1-FINAL Start: 01/14/2013 *
4 * =================== Last change: 01/14/2013 *
6 * -------------------------------------------------------------------- *
7 * File : mode-update.php *
8 * -------------------------------------------------------------------- *
9 * Short description : Steps for updates on ext-user *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Schritte fuer Updates fuer ext-user *
12 * -------------------------------------------------------------------- *
13 * Copyright (c) 2003 - 2009 by Roland Haeder *
14 * Copyright (c) 2009 - 2013 by Mailer Developer Team *
15 * For more information visit: http://mxchange.org *
17 * This program is free software; you can redistribute it and/or modify *
18 * it under the terms of the GNU General Public License as published by *
19 * the Free Software Foundation; either version 2 of the License, or *
20 * (at your option) any later version. *
22 * This program is distributed in the hope that it will be useful, *
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
25 * GNU General Public License for more details. *
27 * You should have received a copy of the GNU General Public License *
28 * along with this program; if not, write to the Free Software *
29 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
31 ************************************************************************/
33 // Some security stuff...
34 if (!defined('__SECURITY')) {
38 // @TODO Remove double tabs from all lines
39 switch (getCurrentExtensionVersion()) {
40 case '0.1.0': // SQL queries for v0.1
41 addConfigAddSql('user_limit', 'INT(7) UNSIGNED NOT NULL DEFAULT 20');
43 // Update notes (these will be set as task text!)
44 setExtensionUpdateNotes("Seitenweises Anzeigen der User-Liste ist nun möglich.");
47 case '0.1.1': // SQL queries for v0.1.1
48 // Update notes (these will be set as task text!)
49 setExtensionUpdateNotes("Ungültiges Update.");
52 case '0.1.2': // SQL queries for v0.1.2
53 addExtensionAddTableColumnSql('user_data', 'mails_confirmed', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
55 // Update notes (these will be set as task text!)
56 setExtensionUpdateNotes("Dem Mitglied wird nun angezeigt, wie viele Mails er bestätigt hat. Alle vor dieser Version best. Mails werden leider nicht mehr berücksichtigt! Bitte teilen Sie dies Ihren Mitgliedern mit.");
59 case '0.1.3': // SQL queries for v0.1.3
60 // Update notes (these will be set as task text!)
61 setExtensionUpdateNotes("Den Pfad <span class=\"bad\">Sie sind hier</span> im Menüpunkt <u>Online-Liste</u> erweitert.");
64 case '0.1.4': // SQL queries for v0.1.4
65 addExtensionAddTableColumnSql('user_data', 'emails_received', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
67 // Update notes (these will be set as task text!)
68 setExtensionUpdateNotes("Anzahl empfangener Mails wird angezeigt. <big>Diese Anzeige kann fehlerhaft sein, wenn Sie bereits Mitglieder in Ihrem {?mt_word?} haben sollen!</big>");
71 case '0.1.5': // SQL queries for v0.1.5
72 // Update notes (these will be set as task text!)
73 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
76 case '0.1.6': // SQL queries for v0.1.6
77 // Update notes (these will be set as task text!)
78 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
81 case '0.1.7': // SQL queries for v0.1.7
82 // Update notes (these will be set as task text!)
83 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
86 case '0.1.8': // SQL queries for v0.1.8
87 // Update notes (these will be set as task text!)
88 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
91 case '0.1.9': // SQL queries for v0.1.9
92 // Update notes (these will be set as task text!)
93 setExtensionUpdateNotes("Link zum Mitgliedsprofil in Funktion <u>generateUserProfileLink()</u> ausgelagert.");
96 case '0.2.0': // SQL queries for v0.2.0
97 // Update notes (these will be set as task text!)
98 setExtensionUpdateNotes("User-Liste ausgelagert in Templates und überbreite Zeile in 2er-Zeile umgewandelt.");
101 case '0.2.1': // SQL queries for v0.2.1
102 addConfigAddSql('user_alpha', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
103 addAdminMenuSql('setup','config_user','Mitgliederliste','Anzahl Mitglieder pro Seite, Anzahl Buchstaben pro Zeile usw.', 8);
105 // Update notes (these will be set as task text!)
106 setExtensionUpdateNotes("User-Liste ist konfigurierbar: Anzahl Mitglieder pro Seite und Anzahl Buchstaben pro Zeile; Template-Fehler beseitigt.");
109 case '0.2.2': // SQL queries for v0.2.2
110 addExtensionChangeTableColumnSql('user_data', 'gender', 'gender', "ENUM('M','F','C') NOT NULL DEFAULT 'M'");
112 // Update notes (these will be set as task text!)
113 setExtensionUpdateNotes("Anrede "Firma" hinzugefügt.");
116 case '0.2.3': // SQL queries for v0.2.3
117 // Update notes (these will be set as task text!)
118 setExtensionUpdateNotes("Datumsformat festgelegt auf ausführlich.");
121 case '0.2.4': // SQL queries for v0.2.4
122 // Update notes (these will be set as task text!)
123 setExtensionUpdateNotes("Wörter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
126 case '0.2.5': // SQL queries for v0.2.5
127 // Update notes (these will be set as task text!)
128 setExtensionUpdateNotes("SQL-Anweisungen abgesichert.");
131 case '0.2.6': // SQL queries for v0.2.6
132 // Update notes (these will be set as task text!)
133 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
136 case '0.2.7': // SQL queries for v0.2.7
137 // Update notes (these will be set as task text!)
138 setExtensionUpdateNotes("Sicherheitsupdate für die Include-Befehle.");
141 case '0.2.8': // SQL queries for v0.2.8
142 // Update notes (these will be set as task text!)
143 setExtensionUpdateNotes("if-Anweisungen auf Funktion <strong>empty()</strong> umgestellt.");
146 case '0.2.9': // SQL queries for v0.2.9
147 addAdminMenuSql('user','user_contct','Mitglied kontaktieren','Kontaktieren Sie hier Ihre Mitglieder ganz direkt über ein Webformular. Sie brauchen somit kein EMail-Programm mehr starten!', 8);
149 // Update notes (these will be set as task text!)
150 setExtensionUpdateNotes("Admin-Kontaktformular hinzugefügt.");
153 case '0.3.0': // SQL queries for v0.3.0
154 // Update notes (these will be set as task text!)
155 setExtensionUpdateNotes("Hash-Erstellung von <strong>md5()</strong> auf bessere Funktion <strong>generateHash()</strong> umgestellt.<br />Diverse Fixes für <span class=\"bad\">0.2.1-Beta1</span> Release.");
158 case '0.3.1': // SQL queries for v0.3.1
159 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Mitglieder-Management' WHERE `action`='user' AND (`what`='' OR `what` IS NULL) LIMIT 1");
161 // Update notes (these will be set as task text!)
162 setExtensionUpdateNotes("Verwaltung auf Management umgestellt");
165 case '0.3.2': // SQL queries for v0.3.2
166 // Update notes (these will be set as task text!)
167 setExtensionUpdateNotes("PHP-Hinweis in Userauflistung gefixt (trat bei fehlender Erweiterung <span class=\"data\">ext-nickname</span> auf) und Darstellungsfehler von <strong>0.00000</strong> unbestätigten Mails gefixt.");
170 case '0.3.3': // SQL queries for v0.3.3
171 // Update notes (these will be set as task text!)
172 setExtensionUpdateNotes("Mitglieder sind nun per Formular kontaktierbar (es wird eine EMail versendet), gesperrte und bestätigte Mitgliedaccounts sind seperat oder gemeinsam auflistbar (seperat nur mit der Erweiterung <span class=\"bad\">task</span>!)");
175 case '0.3.4': // SQL queries for v0.3.4
176 addConfigAddSql('select_user_zero_refid', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
177 addConfigAddSql('user_min_confirmed', 'SMALLINT(5) UNSIGNED NOT NULL DEFAULT 10');
178 addExtensionAddTableColumnSql('user_data', 'rand_confirmed', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
180 // Update notes (these will be set as task text!)
181 setExtensionUpdateNotes("Mitglieder werden per Zufall als Referral-Id ausgewählt, die eine Mindestanzahl an bestätigten Mails haben, wenn die Ref-Id 0 ist.");
184 case '0.3.5': // SQL queries for v0.3.5
185 addExtensionAddTableColumnSql('user_data', 'lock_reason', 'TINYTEXT');
186 addExtensionAddTableColumnSql('user_data', 'lock_timestamp', 'TIMESTAMP NULL DEFAULT NULL');
187 addConfigAddSql('user_delete_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 30));
188 addAdminMenuSql('user', 'list_user_del', 'Löschungen auflisten', 'Listet die Löschungen von Usern auf.', 9);
189 addDropTableSql('user_del');
190 addCreateTableSql('user_del', "
191 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
192 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
193 `email` VARCHAR(255) NOT NULL DEFAULT '',
194 `surname` VARCHAR(255) NOT NULL DEFAULT '',
195 `family` VARCHAR(255) NOT NULL DEFAULT '',
196 `joined` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
197 `last_online` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
198 `del_timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
199 `del_reason` TINYTEXT NOT NULL,
202 'List of deleted users');
204 // Update notes (these will be set as task text!)
205 setExtensionUpdateNotes("Der Sperrgrund wird nun mit abgespeichert und beim Löschen des Users mit ausgesendet.");
208 case '0.3.6': // SQL queries for v0.3.6
209 addExtensionDropTableIndexSql('user_cats', 'userid');
210 addExtensionAddTableUniqueSql('user_cats', 'userid_catid', '(`userid`, `cat_id`)');
212 // Update notes (these will be set as task text!)
213 setExtensionUpdateNotes("Der Sperrgrund wird nun mit abgespeichert und beim Löschen des Users mit ausgesendet.");
216 case '0.3.7': // SQL queries for v0.3.7
217 addExtensionChangeTableColumnSql('user_points', 'id', 'id', 'BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT');
218 addExtensionChangeTableColumnSql('user_points', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
219 addExtensionChangeTableColumnSql('user_data', 'userid', 'userid', 'BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT');
220 addExtensionChangeTableColumnSql('user_del', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
221 addExtensionChangeTableColumnSql('user_links', 'stats_id', 'stats_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
222 addExtensionChangeTableColumnSql('user_links', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
223 addExtensionChangeTableColumnSql('user_points', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
224 addExtensionChangeTableColumnSql('user_points', 'ref_depth', 'ref_depth', 'TINYINT(3) UNSIGNED NULL DEFAULT NULL');
225 addExtensionChangeTableColumnSql('user_stats', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
226 addExtensionChangeTableColumnSql('user_stats', 'cat_id', 'cat_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
227 addExtensionChangeTableColumnSql('user_stats', 'payment_id', 'payment_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
228 addExtensionChangeTableColumnSql('user_stats', 'pool_id', 'pool_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
229 addExtensionChangeTableColumnSql('user_stats_data', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
232 addExtensionSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_cats` WHERE `userid` IS NULL OR `cat_id` IS NULL');
233 addExtensionSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_del` WHERE `userid` IS NULL');
234 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_links` SET `stats_id`=NULL WHERE `stats_id`=0');
235 addExtensionSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `userid` IS NULL');
236 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_points` SET `ref_depth`=NULL WHERE `ref_depth`=0');
237 addExtensionSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_points` WHERE `userid` IS NULL');
238 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `cat_id`=NULL WHERE `cat_id`=0');
239 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `payment_id`=NULL WHERE `payment_id`=0');
240 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `pool_id`=NULL WHERE `pool_id`=0');
241 addExtensionSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_stats` WHERE `userid` IS NULL');
243 // Update notes (these will be set as task text!)
244 setExtensionUpdateNotes("NULL ist wichtiger als 0 und UNSIGNED auch.");
247 case '0.3.8': // SQL queries for v0.3.8
248 addExtensionChangeTableColumnSql('user_data', 'last_failure', 'last_failure', 'TIMESTAMP NULL DEFAULT NULL');
250 // Update notes (these will be set as task text!)
251 setExtensionUpdateNotes("Ausgangswert ist nicht mehr 0000-00-00 00:00:00, sondern einfach NULL.");
254 case '0.3.9': // SQL queries for v0.3.9
255 // Update notes (these will be set as task text!)
256 setExtensionUpdateNotes("Update verschoben nach ext-order (da es Werbeguthaben ist und nichts mit dem Mitglied selbst zu tun hat).");
259 case '0.4.0': // SQL queries for v0.4.0
260 // Register new filters for gathering points
261 registerFilter(__FILE__, __LINE__, 'get_total_points', 'USER_POINTS', FALSE, TRUE, isExtensionDryRun());
262 registerFilter(__FILE__, __LINE__, 'get_own_points', 'USER_POINTS', FALSE, TRUE, isExtensionDryRun());
264 // Update notes (these will be set as task text!)
265 setExtensionUpdateNotes("Filter registriert, die das eigene {?POINTS?}-Guthaben des Mitgliedes zurückliefern.");
268 case '0.4.1': // SQL queries for v0.4.1
269 // Add special fix include to fix filters
270 addIncludeToPool('extension', 'inc/fix_user_points.php');
272 // Update notes (these will be set as task text!)
273 setExtensionUpdateNotes("Das Mitgliederguthaben musste repariert werden, da für Referral-Ebene 0, noch NULL geschrieben wurde.");
276 case '0.4.2': // SQL queries for v0.4.2
277 // Add special fix include to fix filters
278 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='chk_regs' LIMIT 1");
280 // Update notes (these will be set as task text!)
281 setExtensionUpdateNotes("Überflüssiges Menü <strong>chk_regs</strong> entfernt, dies kann mit <strong>list_user</strong> übernommen werden.");
284 case '0.4.3': // SQL queries for v0.4.3
285 // Add special fix include to fix filters
286 addExtensionChangeTableColumnSql('user_data', 'refid', 'refid', 'BIGINT(20) NULL DEFAULT NULL');
288 // Update notes (these will be set as task text!)
289 setExtensionUpdateNotes("Überflüssiges Menü <strong>chk_regs</strong> entfernt, dies kann mit <strong>list_user</strong> übernommen werden.");
292 case '0.4.4': // SQL queries for v0.4.4
293 addDropTableSql('user_refs');
294 addCreateTableSql('user_refs', "
295 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
296 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
297 `level` smallINT(6) UNSIGNED NOT NULL DEFAULT 0,
298 `refid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
300 UNIQUE `user_refid` (`userid`, `level`, `refid`),
305 // Load ext-refback's special include to regenerate the referral table
306 addIncludeToPool('extension', 'inc/fix_refsystem.php');
308 // Update notes (these will be set as task text!)
309 setExtensionUpdateNotes("Neues Tabellenlayout und verschoben von ext-refback.");
312 case '0.4.5': // SQL queries for v0.4.5
313 addExtensionChangeTableColumnSql('user_links', 'link_type', 'link_type', "VARCHAR(255) NOT NULL DEFAULT 'NORMAL'");
315 // Update notes (these will be set as task text!)
316 setExtensionUpdateNotes("Die Spalte <strong>link_type</strong> ist nun kein ENUM mehr, um weitere Mailtypen zu erlauben.");
319 case '0.4.6': // SQL queries for v0.4.6
320 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG} gutschreiben' WHERE `what` = 'add_points' LIMIT 1");
321 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen' WHERE `what` = 'sub_points' LIMIT 1");
322 addAdminMenuSql('user','sub_points','{OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen','Allen oder einem Mitglied {OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen.', 8);
324 // This update depends on ext-menu update
325 addExtensionDependency('menu');
327 // Update notes (these will be set as task text!)
328 setExtensionUpdateNotes("Abzug von {?POINTS?} sollte nun dabei sein und Hinzufügen gefixt (war zu kurze Spalte).");
331 case '0.4.7': // SQL queries for v0.4.7
332 addExtensionChangeTableColumnSql('user_data', 'lock_timestamp', 'lock_timestamp', 'TIMESTAMP NULL DEFAULT NULL');
333 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `lock_timestamp`=NULL WHERE `lock_timestamp`='0000-00-00 00:00:00'");
335 // Update notes (these will be set as task text!)
336 setExtensionUpdateNotes("0000-00-00 00:00:00 ist kein Standardwert mehr, NULL ist dies.");
339 case '0.4.8': // SQL queries for v0.4.8
340 // Update notes (these will be set as task text!)
341 setExtensionUpdateNotes("Dieses Update ist nicht mehr gültig.");
344 case '0.4.9': // SQL queries for v0.4.9
345 addExtensionChangeTableColumnSql('user_data', 'last_module', 'last_what', 'VARCHAR(255) NULL DEFAULT NULL');
347 // Register filter locked points
348 registerFilter(__FILE__, __LINE__, 'get_locked_points', 'LOCKED_USER_POINTS', FALSE, TRUE, isExtensionDryRun());
350 // Register filter for all column names
351 registerFilter(__FILE__, __LINE__, 'get_all_point_columns', 'GET_ALL_USER_POINTS_COLUMN_NAMES', FALSE, TRUE, isExtensionDryRun());
353 // Update notes (these will be set as task text!)
354 setExtensionUpdateNotes("Die Spalte <strong>last_module</strong> ist nach <strong>last_what</strong> umbenannt und hat nun NULL als Ausgangswert und Filter für gesperrtes Guthaben hinzugefügt.");
357 case '0.5.0': // SQL queries for v0.5.0
358 // Prefix for all test accounts
359 addConfigAddSql('tester_user_maximum', 'INT(5) UNSIGNED ZEROFILL NOT NULL DEFAULT 00999');
360 addConfigAddSql('tester_user_gender', "ENUM('M','F') NOT NULL DEFAULT 'M'");
361 addConfigAddSql('tester_user_surname_prefix', "VARCHAR(255) NOT NULL DEFAULT 'tester_'");
362 addConfigAddSql('tester_user_family', "VARCHAR(255) NOT NULL DEFAULT 'Testbenutzer'");
363 addConfigAddSql('tester_user_street_nr', "VARCHAR(255) NOT NULL DEFAULT 'Teststraße 123'");
364 addConfigAddSql('tester_user_zip', 'INT(6) UNSIGNED NOT NULL DEFAULT 12345');
365 addConfigAddSql('tester_user_city', "VARCHAR(255) NOT NULL DEFAULT 'Teststadt'");
366 addConfigAddSql('tester_user_email', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_CONFIG}WEBMASTER{CLOSE_CONFIG}'");
367 addConfigAddSql('tester_user_default_refid', 'BIGINT(20) NULL DEFAULT NULL');
368 addConfigAddSql('tester_user_password', "VARCHAR(255) NOT NULL DEFAULT ''");
369 addConfigAddSql('tester_user_check_cat', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
372 addAdminMenuSql('user', 'add_tester_user', 'Testbenutzer anlegen', 'Es können hier bis zu 100 Testbenutzer angelegt werden. Diese haben als Vornamen immer den Präfix <span class="data">{?tester_user_surname_prefix?}</span> und werden bei Null anfangend bis 99 hochgezält.', 1);
373 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mitglieder auflisten' WHERE `what`='list_user' LIMIT 1");
375 // Change 'zip' to INT(6)
376 addExtensionChangeTableColumnSql('user_data', 'zip', 'zip', 'INT(6) NOT NULL DEFAULT 0');
378 // Register filter for WHERE/AND exclusion/inclusion statements
379 registerFilter(__FILE__, __LINE__, 'user_exclusion_sql', 'TESTER_USER_EXCLUSION_SQL', FALSE, TRUE, isExtensionDryRun());
380 registerFilter(__FILE__, __LINE__, 'user_inclusion_sql', 'TESTER_USER_INCLUSION_SQL', FALSE, TRUE, isExtensionDryRun());
382 // Update notes (these will be set as task text!)
383 setExtensionUpdateNotes("Es können nun Test-Benutzer angelegt werden. Noch müssen diese überall ausgeschlossen werden, damit die Mediadaten nicht unnötig verfälscht werden.");
386 case '0.5.1': // SQL queries for v0.5.1
388 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'TESTER_USER_REGISTRATION_ADD_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
390 // Update notes (these will be set as task text!)
391 setExtensionUpdateNotes("Filter zum Hinzufügen von SQL-Spalten für die Mitgliederanmeldung hinzugefügt.");
394 case '0.5.2': // SQL queries for v0.5.2
396 registerFilter(__FILE__, __LINE__, 'convert_user_data_columns', 'ADD_USER_DATA_CONVERT_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
398 // Update notes (these will be set as task text!)
399 setExtensionUpdateNotes("Filter zum Hinzufügen von SQL-Spalten für die Mitgliederanmeldung hinzugefügt.");
402 case '0.5.3': // SQL queries for v0.5.3
403 // Is the PHP extension 'recode' activated
404 if (!isPhpExtensionLoaded('recode')) {
405 // This update requires 'recode'
406 enableExtensionReportingFailure();
410 registerFilter(__FILE__, __LINE__, 'post_refid_validation', 'HANDLE_USER_SUBID', FALSE, TRUE, isExtensionDryRun());
411 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'SUBID_USER_REGISTRATION_ADD_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
414 addAdminMenuSql('user', 'list_user_subid', 'Sub-Ids', 'Listet alle pro vom Mitglied eingegebenen Sub-Ids und ermittelten Referral-URLs auf.', 7);
417 addMemberMenuSql('extras', 'subids', 'Sub-Id Tracking', 4);
419 // Add table for subids
420 addDropTableSql('user_subids');
421 addCreateTableSql('user_subids', "
422 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
423 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
424 `subid` VARCHAR(255) NOT NULL DEFAULT '',
425 `subid_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
427 UNIQUE `user_subid` (`userid`, `subid`),
431 // Add table for subid logging
432 addDropTableSql('subid_log');
433 addCreateTableSql('subid_log', "
434 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
435 `refid` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
436 `subid` VARCHAR(255) NOT NULL DEFAULT '',
437 `referral_url` TINYTEXT NOT NULL,
438 `remote_address` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
439 `entry_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
445 // For saving used subid in user_data table
446 addExtensionAddTableColumnSql('user_data', 'subid', 'VARCHAR(255) NULL DEFAULT NULL');
447 addExtensionAddTableIndexSql('user_data', 'subid', '(`subid`)');
449 // Configuration entry for purging old subid logs (7 days default)
450 addConfigAddSql('user_subid_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
452 // Update notes (these will be set as task text!)
453 setExtensionUpdateNotes("Filter, Datenbanktabelle und Menüpunkte für SubId-Tracking hinzugefügt.");
456 case '0.5.4': // SQL queries for v0.5.4
458 registerFilter(__FILE__, __LINE__, 'update_referral_data', 'GENERIC_UPDATE_USER_REFERRAL', FALSE, TRUE, isExtensionDryRun());
459 registerFilter(__FILE__, __LINE__, 'update_referral_data', 'UPDATE_USER_SUBID', FALSE, TRUE, isExtensionDryRun());
462 addExtensionAddTableColumnSql('subid_log', 'user_agent', 'TINYTEXT NOT NULL AFTER `remote_address`');
464 // Update notes (these will be set as task text!)
465 setExtensionUpdateNotes("Weitere Filter für Referral-Counter und Sub-Id hinzugefügt.");
468 case '0.5.5': // SQL queries for v0.5.5
470 registerFilter(__FILE__, __LINE__, 'member_admin_actions', 'ADD_USER_SUBID_MEMBER_ACTION', FALSE, TRUE, isExtensionDryRun());
472 // Update notes (these will be set as task text!)
473 setExtensionUpdateNotes("Weiteren Filter für Mitglieder-Aktionen im Adminbereich hinzugefügt.");
476 case '0.5.6': // SQL queries for v0.5.6
478 registerFilter(__FILE__, __LINE__, 'member_reflink_extra_content', 'MEMBER_REFLINK_USER_SUBIDS_CONTENT', FALSE, TRUE, isExtensionDryRun());
480 // Update notes (these will be set as task text!)
481 setExtensionUpdateNotes("Weiteren Filter für Mitglieder-Aktionen im Adminbereich hinzugefügt.");
484 case '0.5.7': // SQL queries for v0.5.7
486 addAdminMenuSql('user', 'list_user_amounts', 'Guthaben anzeigen', 'Listet alle Mitglieder und deren Guthaben inklusive Abzug auf.', 8);
488 // Update notes (these will be set as task text!)
489 setExtensionUpdateNotes("Menü zum Auflisten des Guthabens hinzugefügt. Diese Daten sollen noch später weiter verarbeitet werden. Zum Beispiel soll dann schnell feststellbar sein, welche Verdienstgruppe das meiste und wenigste {?POINTS?}-Volumen besitzt.");
492 case '0.5.8': // SQL queries for v0.5.8
493 addConfigAddSql('ap_subids', "ENUM('Y', 'N') NOT NULL DEFAULT 'Y'");
494 addConfigAddSql('ap_subids_since', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
497 addAdminMenuSql('setup', 'config_user_subid', 'Sub-Id Tracking', 'Ändern Sie hier alle Einstellungen zu den Sub-Ids.', 10);
499 // Update notes (these will be set as task text!)
500 setExtensionUpdateNotes("Bereinigung von Sub-Ids und deren Einstellungen hinzugefügt.");
503 case '0.5.9': // SQL queries for v0.5.9
504 addExtensionChangeTableColumnSql('subid_log', 'refid', 'refid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
505 addExtensionChangeTableColumnSql('user_stats', 'cat_id', 'cat_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
506 addExtensionChangeTableColumnSql('user_stats', 'payment_id', 'payment_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
507 addExtensionChangeTableColumnSql('user_stats', 'pool_id', 'pool_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
508 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_subid_log` SET `refid`=NULL WHERE `refid`=0');
509 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `cat_id`=NULL WHERE `cat_id`=0');
510 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `payment_id`=NULL WHERE `payment_id`=0');
511 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `pool_id`=NULL WHERE `pool_id`=0');
513 // Update notes (these will be set as task text!)
514 setExtensionUpdateNotes("Besser NULL anstelle 0.");
517 case '0.6.0': // SQL queries for v0.6.0
518 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_user_cats' WHERE `action`='user' AND `what`='list_cats' LIMIT 1");
520 // Update notes (these will be set as task text!)
521 setExtensionUpdateNotes("Menüpunkt umbenannt um Platz für Konflikt mit <strong>what-config_cats.php</strong> zu schaffen.");
524 case '0.6.1': // SQL queries for v0.6.1
525 // Add table for user login provider
526 addDropTableSql('user_login_provider');
527 addCreateTableSql('user_login_provider', "
528 `provider_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
529 `provider_name` VARCHAR(255) NOT NULL DEFAULT 'local_generic_user_login',
530 `provider_extension` VARCHAR(255) NOT NULL DEFAULT 'user',
531 `provider_is_active` ENUM('Y','N') NOT NULL DEFAULT 'N',
532 PRIMARY KEY (`provider_id`)",
533 'User login providers');
535 // Add (activated) default entry
536 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_user_login_provider` (`provider_is_active`) VALUES ('Y')");
539 addAdminMenuSql('setup', 'list_user_login_provider', 'MLP verwalten', 'Alle Mitgliederlogin-Provider (MLP) auflisten und verwalten.', 10);
541 // Update notes (these will be set as task text!)
542 setExtensionUpdateNotes("Tabelle für Mitgliedslogin-Provider hinzugefügt.");
545 case '0.6.2': // SQL queries for v0.6.2
547 registerFilter(__FILE__, __LINE__, 'user_login', 'GENERIC_USER_LOGIN', FALSE, TRUE, isExtensionDryRun());
548 registerFilter(__FILE__, __LINE__, 'check_user_login', 'GENERIC_USER_LOGIN_CHECK', FALSE, TRUE, isExtensionDryRun());
550 // Add column for login provider
551 addExtensionAddTableColumnSql('user_data', 'login_provider', "VARCHAR (255) NOT NULL DEFAULT 'user'");
554 // @TODO Make configurable through web interface
555 addConfigAddSql('default_login_provider', "VARCHAR(255) NOT NULL DEFAULT 'login'");
557 // Update notes (these will be set as task text!)
558 setExtensionUpdateNotes("Filter für das Handling der Loginanfragen hinzugeügt.");