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 * -------------------------------------------------------------------- *
15 * $Tag:: 0.2.1-FINAL $ *
17 * -------------------------------------------------------------------- *
18 * Copyright (c) 2003 - 2009 by Roland Haeder *
19 * Copyright (c) 2009 - 2013 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')) {
43 // @TODO Remove double tabs from all lines
44 switch (getCurrentExtensionVersion()) {
45 case '0.1.0': // SQL queries for v0.1
46 addConfigAddSql('user_limit', 'INT(7) UNSIGNED NOT NULL DEFAULT 20');
48 // Update notes (these will be set as task text!)
49 setExtensionUpdateNotes("Seitenweises Anzeigen der User-Liste ist nun möglich.");
52 case '0.1.1': // SQL queries for v0.1.1
53 // Update notes (these will be set as task text!)
54 setExtensionUpdateNotes("Ungültiges Update.");
57 case '0.1.2': // SQL queries for v0.1.2
58 addExtensionAddTableColumnSql('user_data', 'mails_confirmed', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
60 // Update notes (these will be set as task text!)
61 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.");
64 case '0.1.3': // SQL queries for v0.1.3
65 // Update notes (these will be set as task text!)
66 setExtensionUpdateNotes("Den Pfad <span class=\"bad\">Sie sind hier</span> im Menüpunkt <u>Online-Liste</u> erweitert.");
69 case '0.1.4': // SQL queries for v0.1.4
70 addExtensionAddTableColumnSql('user_data', 'emails_received', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
72 // Update notes (these will be set as task text!)
73 setExtensionUpdateNotes("Anzahl empfangener Mails wird angezeigt. <big>Diese Anzeige kann fehlerhaft sein, wenn Sie bereits Mitglieder in Ihrem {?mt_word?} haben sollen!</big>");
76 case '0.1.5': // SQL queries for v0.1.5
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.6': // SQL queries for v0.1.6
82 // Update notes (these will be set as task text!)
83 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
86 case '0.1.7': // SQL queries for v0.1.7
87 // Update notes (these will be set as task text!)
88 setExtensionUpdateNotes("Erweiterung bleibt wegen integrierten Schalters immer aktiv.");
91 case '0.1.8': // SQL queries for v0.1.8
92 // Update notes (these will be set as task text!)
93 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
96 case '0.1.9': // SQL queries for v0.1.9
97 // Update notes (these will be set as task text!)
98 setExtensionUpdateNotes("Link zum Mitgliedsprofil in Funktion <u>generateUserProfileLink()</u> ausgelagert.");
101 case '0.2.0': // SQL queries for v0.2.0
102 // Update notes (these will be set as task text!)
103 setExtensionUpdateNotes("User-Liste ausgelagert in Templates und überbreite Zeile in 2er-Zeile umgewandelt.");
106 case '0.2.1': // SQL queries for v0.2.1
107 addConfigAddSql('user_alpha', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
108 addAdminMenuSql('setup','config_user','Mitgliederliste','Anzahl Mitglieder pro Seite, Anzahl Buchstaben pro Zeile usw.', 8);
110 // Update notes (these will be set as task text!)
111 setExtensionUpdateNotes("User-Liste ist konfigurierbar: Anzahl Mitglieder pro Seite und Anzahl Buchstaben pro Zeile; Template-Fehler beseitigt.");
114 case '0.2.2': // SQL queries for v0.2.2
115 addExtensionChangeTableColumnSql('user_data', 'gender', 'gender', "ENUM('M','F','C') NOT NULL DEFAULT 'M'");
117 // Update notes (these will be set as task text!)
118 setExtensionUpdateNotes("Anrede "Firma" hinzugefügt.");
121 case '0.2.3': // SQL queries for v0.2.3
122 // Update notes (these will be set as task text!)
123 setExtensionUpdateNotes("Datumsformat festgelegt auf ausführlich.");
126 case '0.2.4': // SQL queries for v0.2.4
127 // Update notes (these will be set as task text!)
128 setExtensionUpdateNotes("Wörter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
131 case '0.2.5': // SQL queries for v0.2.5
132 // Update notes (these will be set as task text!)
133 setExtensionUpdateNotes("SQL-Anweisungen abgesichert.");
136 case '0.2.6': // SQL queries for v0.2.6
137 // Update notes (these will be set as task text!)
138 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
141 case '0.2.7': // SQL queries for v0.2.7
142 // Update notes (these will be set as task text!)
143 setExtensionUpdateNotes("Sicherheitsupdate für die Include-Befehle.");
146 case '0.2.8': // SQL queries for v0.2.8
147 // Update notes (these will be set as task text!)
148 setExtensionUpdateNotes("if-Anweisungen auf Funktion <strong>empty()</strong> umgestellt.");
151 case '0.2.9': // SQL queries for v0.2.9
152 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);
154 // Update notes (these will be set as task text!)
155 setExtensionUpdateNotes("Admin-Kontaktformular hinzugefügt.");
158 case '0.3.0': // SQL queries for v0.3.0
159 // Update notes (these will be set as task text!)
160 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.");
163 case '0.3.1': // SQL queries for v0.3.1
164 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title` = 'Mitglieder-Management' WHERE `action`='user' AND (`what`='' OR `what` IS NULL) LIMIT 1");
166 // Update notes (these will be set as task text!)
167 setExtensionUpdateNotes("Verwaltung auf Management umgestellt");
170 case '0.3.2': // SQL queries for v0.3.2
171 // Update notes (these will be set as task text!)
172 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.");
175 case '0.3.3': // SQL queries for v0.3.3
176 // Update notes (these will be set as task text!)
177 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>!)");
180 case '0.3.4': // SQL queries for v0.3.4
181 addConfigAddSql('select_user_zero_refid', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
182 addConfigAddSql('user_min_confirmed', 'SMALLINT(5) UNSIGNED NOT NULL DEFAULT 10');
183 addExtensionAddTableColumnSql('user_data', 'rand_confirmed', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
185 // Update notes (these will be set as task text!)
186 setExtensionUpdateNotes("Mitglieder werden per Zufall als Referral-Id ausgewählt, die eine Mindestanzahl an bestätigten Mails haben, wenn die Ref-Id 0 ist.");
189 case '0.3.5': // SQL queries for v0.3.5
190 addExtensionAddTableColumnSql('user_data', 'lock_reason', 'TINYTEXT');
191 addExtensionAddTableColumnSql('user_data', 'lock_timestamp', 'TIMESTAMP NULL DEFAULT NULL');
192 addConfigAddSql('user_delete_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 30));
193 addAdminMenuSql('user', 'list_user_del', 'Löschungen auflisten', 'Listet die Löschungen von Usern auf.', 9);
194 addDropTableSql('user_del');
195 addCreateTableSql('user_del', "
196 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
197 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
198 `email` VARCHAR(255) NOT NULL DEFAULT '',
199 `surname` VARCHAR(255) NOT NULL DEFAULT '',
200 `family` VARCHAR(255) NOT NULL DEFAULT '',
201 `joined` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
202 `last_online` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
203 `del_timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
204 `del_reason` TINYTEXT NOT NULL,
207 'List of deleted users');
209 // Update notes (these will be set as task text!)
210 setExtensionUpdateNotes("Der Sperrgrund wird nun mit abgespeichert und beim Löschen des Users mit ausgesendet.");
213 case '0.3.6': // SQL queries for v0.3.6
214 addExtensionDropTableIndexSql('user_cats', 'userid');
215 addExtensionAddTableUniqueSql('user_cats', 'userid_catid', '(`userid`, `cat_id`)');
217 // Update notes (these will be set as task text!)
218 setExtensionUpdateNotes("Der Sperrgrund wird nun mit abgespeichert und beim Löschen des Users mit ausgesendet.");
221 case '0.3.7': // SQL queries for v0.3.7
222 addExtensionChangeTableColumnSql('user_points', 'id', 'id', 'BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT');
223 addExtensionChangeTableColumnSql('user_points', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
224 addExtensionChangeTableColumnSql('user_data', 'userid', 'userid', 'BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT');
225 addExtensionChangeTableColumnSql('user_del', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
226 addExtensionChangeTableColumnSql('user_links', 'stats_id', 'stats_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
227 addExtensionChangeTableColumnSql('user_links', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
228 addExtensionChangeTableColumnSql('user_points', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
229 addExtensionChangeTableColumnSql('user_points', 'ref_depth', 'ref_depth', 'TINYINT(3) UNSIGNED NULL DEFAULT NULL');
230 addExtensionChangeTableColumnSql('user_stats', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
231 addExtensionChangeTableColumnSql('user_stats', 'cat_id', 'cat_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
232 addExtensionChangeTableColumnSql('user_stats', 'payment_id', 'payment_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
233 addExtensionChangeTableColumnSql('user_stats', 'pool_id', 'pool_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
234 addExtensionChangeTableColumnSql('user_stats_data', 'userid', 'userid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
237 addExtensionSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_cats` WHERE `userid` IS NULL OR `cat_id` IS NULL');
238 addExtensionSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_del` WHERE `userid` IS NULL');
239 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_links` SET `stats_id`=NULL WHERE `stats_id`=0');
240 addExtensionSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_links` WHERE `userid` IS NULL');
241 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_points` SET `ref_depth`=NULL WHERE `ref_depth`=0');
242 addExtensionSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_points` WHERE `userid` IS NULL');
243 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `cat_id`=NULL WHERE `cat_id`=0');
244 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `payment_id`=NULL WHERE `payment_id`=0');
245 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `pool_id`=NULL WHERE `pool_id`=0');
246 addExtensionSql('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_stats` WHERE `userid` IS NULL');
248 // Update notes (these will be set as task text!)
249 setExtensionUpdateNotes("NULL ist wichtiger als 0 und UNSIGNED auch.");
252 case '0.3.8': // SQL queries for v0.3.8
253 addExtensionChangeTableColumnSql('user_data', 'last_failure', 'last_failure', 'TIMESTAMP NULL DEFAULT NULL');
255 // Update notes (these will be set as task text!)
256 setExtensionUpdateNotes("Ausgangswert ist nicht mehr 0000-00-00 00:00:00, sondern einfach NULL.");
259 case '0.3.9': // SQL queries for v0.3.9
260 // Update notes (these will be set as task text!)
261 setExtensionUpdateNotes("Update verschoben nach ext-order (da es Werbeguthaben ist und nichts mit dem Mitglied selbst zu tun hat).");
264 case '0.4.0': // SQL queries for v0.4.0
265 // Register new filters for gathering points
266 registerFilter(__FILE__, __LINE__, 'get_total_points', 'USER_POINTS', FALSE, TRUE, isExtensionDryRun());
267 registerFilter(__FILE__, __LINE__, 'get_own_points', 'USER_POINTS', FALSE, TRUE, isExtensionDryRun());
269 // Update notes (these will be set as task text!)
270 setExtensionUpdateNotes("Filter registriert, die das eigene {?POINTS?}-Guthaben des Mitgliedes zurückliefern.");
273 case '0.4.1': // SQL queries for v0.4.1
274 // Add special fix include to fix filters
275 addIncludeToPool('extension', 'inc/fix_user_points.php');
277 // Update notes (these will be set as task text!)
278 setExtensionUpdateNotes("Das Mitgliederguthaben musste repariert werden, da für Referral-Ebene 0, noch NULL geschrieben wurde.");
281 case '0.4.2': // SQL queries for v0.4.2
282 // Add special fix include to fix filters
283 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='chk_regs' LIMIT 1");
285 // Update notes (these will be set as task text!)
286 setExtensionUpdateNotes("Überflüssiges Menü <strong>chk_regs</strong> entfernt, dies kann mit <strong>list_user</strong> übernommen werden.");
289 case '0.4.3': // SQL queries for v0.4.3
290 // Add special fix include to fix filters
291 addExtensionChangeTableColumnSql('user_data', 'refid', 'refid', 'BIGINT(20) NULL DEFAULT NULL');
293 // Update notes (these will be set as task text!)
294 setExtensionUpdateNotes("Überflüssiges Menü <strong>chk_regs</strong> entfernt, dies kann mit <strong>list_user</strong> übernommen werden.");
297 case '0.4.4': // SQL queries for v0.4.4
298 addDropTableSql('user_refs');
299 addCreateTableSql('user_refs', "
300 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
301 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
302 `level` smallINT(6) UNSIGNED NOT NULL DEFAULT 0,
303 `refid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
305 UNIQUE `user_refid` (`userid`, `level`, `refid`),
310 // Load ext-refback's special include to regenerate the referral table
311 addIncludeToPool('extension', 'inc/fix_refsystem.php');
313 // Update notes (these will be set as task text!)
314 setExtensionUpdateNotes("Neues Tabellenlayout und verschoben von ext-refback.");
317 case '0.4.5': // SQL queries for v0.4.5
318 addExtensionChangeTableColumnSql('user_links', 'link_type', 'link_type', "VARCHAR(255) NOT NULL DEFAULT 'NORMAL'");
320 // Update notes (these will be set as task text!)
321 setExtensionUpdateNotes("Die Spalte <strong>link_type</strong> ist nun kein ENUM mehr, um weitere Mailtypen zu erlauben.");
324 case '0.4.6': // SQL queries for v0.4.6
325 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG} gutschreiben' WHERE `what` = 'add_points' LIMIT 1");
326 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='{OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen' WHERE `what` = 'sub_points' LIMIT 1");
327 addAdminMenuSql('user','sub_points','{OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen','Allen oder einem Mitglied {OPEN_CONFIG}POINTS{CLOSE_CONFIG} abziehen.', 8);
329 // This update depends on ext-menu update
330 addExtensionDependency('menu');
332 // Update notes (these will be set as task text!)
333 setExtensionUpdateNotes("Abzug von {?POINTS?} sollte nun dabei sein und Hinzufügen gefixt (war zu kurze Spalte).");
336 case '0.4.7': // SQL queries for v0.4.7
337 addExtensionChangeTableColumnSql('user_data', 'lock_timestamp', 'lock_timestamp', 'TIMESTAMP NULL DEFAULT NULL');
338 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `lock_timestamp`=NULL WHERE `lock_timestamp`='0000-00-00 00:00:00'");
340 // Update notes (these will be set as task text!)
341 setExtensionUpdateNotes("0000-00-00 00:00:00 ist kein Standardwert mehr, NULL ist dies.");
344 case '0.4.8': // SQL queries for v0.4.8
345 // Update notes (these will be set as task text!)
346 setExtensionUpdateNotes("Dieses Update ist nicht mehr gültig.");
349 case '0.4.9': // SQL queries for v0.4.9
350 addExtensionChangeTableColumnSql('user_data', 'last_module', 'last_what', 'VARCHAR(255) NULL DEFAULT NULL');
352 // Register filter locked points
353 registerFilter(__FILE__, __LINE__, 'get_locked_points', 'LOCKED_USER_POINTS', FALSE, TRUE, isExtensionDryRun());
355 // Register filter for all column names
356 registerFilter(__FILE__, __LINE__, 'get_all_point_columns', 'GET_ALL_USER_POINTS_COLUMN_NAMES', FALSE, TRUE, isExtensionDryRun());
358 // Update notes (these will be set as task text!)
359 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.");
362 case '0.5.0': // SQL queries for v0.5.0
363 // Prefix for all test accounts
364 addConfigAddSql('tester_user_maximum', 'INT(5) UNSIGNED ZEROFILL NOT NULL DEFAULT 00999');
365 addConfigAddSql('tester_user_gender', "ENUM('M','F') NOT NULL DEFAULT 'M'");
366 addConfigAddSql('tester_user_surname_prefix', "VARCHAR(255) NOT NULL DEFAULT 'tester_'");
367 addConfigAddSql('tester_user_family', "VARCHAR(255) NOT NULL DEFAULT 'Testbenutzer'");
368 addConfigAddSql('tester_user_street_nr', "VARCHAR(255) NOT NULL DEFAULT 'Teststraße 123'");
369 addConfigAddSql('tester_user_zip', 'INT(6) UNSIGNED NOT NULL DEFAULT 12345');
370 addConfigAddSql('tester_user_city', "VARCHAR(255) NOT NULL DEFAULT 'Teststadt'");
371 addConfigAddSql('tester_user_email', "VARCHAR(255) NOT NULL DEFAULT '{OPEN_CONFIG}WEBMASTER{CLOSE_CONFIG}'");
372 addConfigAddSql('tester_user_default_refid', 'BIGINT(20) NULL DEFAULT NULL');
373 addConfigAddSql('tester_user_password', "VARCHAR(255) NOT NULL DEFAULT ''");
374 addConfigAddSql('tester_user_check_cat', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
377 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);
378 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mitglieder auflisten' WHERE `what`='list_user' LIMIT 1");
380 // Change 'zip' to INT(6)
381 addExtensionChangeTableColumnSql('user_data', 'zip', 'zip', 'INT(6) NOT NULL DEFAULT 0');
383 // Register filter for WHERE/AND exclusion/inclusion statements
384 registerFilter(__FILE__, __LINE__, 'user_exclusion_sql', 'TESTER_USER_EXCLUSION_SQL', FALSE, TRUE, isExtensionDryRun());
385 registerFilter(__FILE__, __LINE__, 'user_inclusion_sql', 'TESTER_USER_INCLUSION_SQL', FALSE, TRUE, isExtensionDryRun());
387 // Update notes (these will be set as task text!)
388 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.");
391 case '0.5.1': // SQL queries for v0.5.1
393 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'TESTER_USER_REGISTRATION_ADD_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
395 // Update notes (these will be set as task text!)
396 setExtensionUpdateNotes("Filter zum Hinzufügen von SQL-Spalten für die Mitgliederanmeldung hinzugefügt.");
399 case '0.5.2': // SQL queries for v0.5.2
401 registerFilter(__FILE__, __LINE__, 'convert_user_data_columns', 'ADD_USER_DATA_CONVERT_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
403 // Update notes (these will be set as task text!)
404 setExtensionUpdateNotes("Filter zum Hinzufügen von SQL-Spalten für die Mitgliederanmeldung hinzugefügt.");
407 case '0.5.3': // SQL queries for v0.5.3
409 registerFilter(__FILE__, __LINE__, 'post_refid_validation', 'HANDLE_USER_SUBID', FALSE, TRUE, isExtensionDryRun());
410 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'SUBID_USER_REGISTRATION_ADD_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
413 addAdminMenuSql('user', 'list_user_subid', 'Sub-Ids', 'Listet alle pro vom Mitglied eingegebenen Sub-Ids und ermittelten Referral-URLs auf.', 7);
416 addMemberMenuSql('extras', 'subids', 'Sub-Id Tracking', 4);
418 // Add table for subids
419 addDropTableSql('user_subids');
420 addCreateTableSql('user_subids', "
421 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
422 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
423 `subid` VARCHAR(255) NOT NULL DEFAULT '',
424 `subid_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
426 UNIQUE `user_subid` (`userid`, `subid`),
430 // Add table for subid logging
431 addDropTableSql('subid_log');
432 addCreateTableSql('subid_log', "
433 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
434 `refid` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
435 `subid` VARCHAR(255) NOT NULL DEFAULT '',
436 `referral_url` TINYTEXT NOT NULL,
437 `remote_address` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
438 `entry_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
444 // For saving used subid in user_data table
445 addExtensionAddTableColumnSql('user_data', 'subid', 'VARCHAR(255) NULL DEFAULT NULL');
446 addExtensionAddTableIndexSql('user_data', 'subid', '(`subid`)');
448 // Configuration entry for purging old subid logs (7 days default)
449 addConfigAddSql('user_subid_purge', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
451 // Update notes (these will be set as task text!)
452 setExtensionUpdateNotes("Filter, Datenbanktabelle und Menüpunkte für SubId-Tracking hinzugefügt.");
455 case '0.5.4': // SQL queries for v0.5.4
457 registerFilter(__FILE__, __LINE__, 'update_referral_data', 'GENERIC_UPDATE_USER_REFERRAL', FALSE, TRUE, isExtensionDryRun());
458 registerFilter(__FILE__, __LINE__, 'update_referral_data', 'UPDATE_USER_SUBID', FALSE, TRUE, isExtensionDryRun());
461 addExtensionAddTableColumnSql('subid_log', 'user_agent', 'TINYTEXT NOT NULL AFTER `remote_address`');
463 // Update notes (these will be set as task text!)
464 setExtensionUpdateNotes("Weitere Filter für Referral-Counter und Sub-Id hinzugefügt.");
467 case '0.5.5': // SQL queries for v0.5.5
469 registerFilter(__FILE__, __LINE__, 'member_admin_actions', 'ADD_USER_SUBID_MEMBER_ACTION', FALSE, TRUE, isExtensionDryRun());
471 // Update notes (these will be set as task text!)
472 setExtensionUpdateNotes("Weiteren Filter für Mitglieder-Aktionen im Adminbereich hinzugefügt.");
475 case '0.5.6': // SQL queries for v0.5.6
477 registerFilter(__FILE__, __LINE__, 'member_reflink_extra_content', 'MEMBER_REFLINK_USER_SUBIDS_CONTENT', FALSE, TRUE, isExtensionDryRun());
479 // Update notes (these will be set as task text!)
480 setExtensionUpdateNotes("Weiteren Filter für Mitglieder-Aktionen im Adminbereich hinzugefügt.");
483 case '0.5.7': // SQL queries for v0.5.7
485 addAdminMenuSql('user', 'list_user_amounts', 'Guthaben anzeigen', 'Listet alle Mitglieder und deren Guthaben inklusive Abzug auf.', 8);
487 // Update notes (these will be set as task text!)
488 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.");
491 case '0.5.8': // SQL queries for v0.5.8
492 addConfigAddSql('ap_subids', "ENUM('Y', 'N') NOT NULL DEFAULT 'Y'");
493 addConfigAddSql('ap_subids_since', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
496 addAdminMenuSql('setup', 'config_user_subid', 'Sub-Id Tracking', 'Ändern Sie hier alle Einstellungen zu den Sub-Ids.', 10);
498 // Update notes (these will be set as task text!)
499 setExtensionUpdateNotes("Bereinigung von Sub-Ids und deren Einstellungen hinzugefügt.");
502 case '0.5.9': // SQL queries for v0.5.9
503 addExtensionChangeTableColumnSql('subid_log', 'refid', 'refid', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
504 addExtensionChangeTableColumnSql('user_stats', 'cat_id', 'cat_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
505 addExtensionChangeTableColumnSql('user_stats', 'payment_id', 'payment_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
506 addExtensionChangeTableColumnSql('user_stats', 'pool_id', 'pool_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
507 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_subid_log` SET `refid`=NULL WHERE `refid`=0');
508 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `cat_id`=NULL WHERE `cat_id`=0');
509 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `payment_id`=NULL WHERE `payment_id`=0');
510 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_stats` SET `pool_id`=NULL WHERE `pool_id`=0');
512 // Update notes (these will be set as task text!)
513 setExtensionUpdateNotes("Besser NULL anstelle 0.");
516 case '0.6.0': // SQL queries for v0.6.0
517 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_user_cats' WHERE `action`='user' AND `what`='list_cats' LIMIT 1");
519 // Update notes (these will be set as task text!)
520 setExtensionUpdateNotes("Menüpunkt umbenannt um Platz für Konflikt mit <strong>what-config_cats.php</strong> zu schaffen.");