2 /************************************************************************
3 * Mailer v0.2.1-FINAL Start: 09/25/2004 *
4 * =================== Last change: 09/25/2004 *
6 * -------------------------------------------------------------------- *
8 * -------------------------------------------------------------------- *
9 * Short description : Begging link *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Bettel-Link *
12 * -------------------------------------------------------------------- *
15 * $Tag:: 0.2.1-FINAL $ *
17 * -------------------------------------------------------------------- *
18 * Copyright (c) 2003 - 2009 by Roland Haeder *
19 * Copyright (c) 2009 - 2012 by Mailer Developer Team *
20 * For more information visit: http://mxchange.org *
22 * This program is free software; you can redistribute it and/or modify *
23 * it under the terms of the GNU General Public License as published by *
24 * the Free Software Foundation; either version 2 of the License, or *
25 * (at your option) any later version. *
27 * This program is distributed in the hope that it will be useful, *
28 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
30 * GNU General Public License for more details. *
32 * You should have received a copy of the GNU General Public License *
33 * along with this program; if not, write to the Free Software *
34 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
36 ************************************************************************/
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
44 setThisExtensionVersion('0.3.4');
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'));
49 switch (getExtensionMode()) {
50 case 'register': // Do stuff when installation is running
51 // SQL commands to run
53 addAdminMenuSql('setup', 'config_beg', 'Bettel-Link', 'IP-Sperre, {OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Vergütung usw. können Sie hier einstellen.', 10);
54 addGuestMenuSql('members', 'beg', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG} erbetteln!', 4);
55 addMemberMenuSql('extras', 'beg', 'Ihr Bettel-Link', 1);
57 addConfigAddSql('beg_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 600');
58 addConfigAddSql('beg_userid_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800');
59 addConfigAddSql('beg_points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00100');
60 addExtensionAddTableColumnSql('online', 'beg_clicks', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
63 addDropTableSql('beg_ips');
64 addCreateTableSql('beg_ips', "
65 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
66 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
67 `remote_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
68 `timeout` VARCHAR(10) NOT NULL DEFAULT '',
69 `sid` VARCHAR(255) NOT NULL DEFAULT '',
72 'IP lock data for beg links');
75 case 'remove': // Do stuff when removing extension
76 // SQL commands to run
77 addDropTableSql('beg_ips');
78 addDropTableSql('beg_referrals');
79 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN ('config_beg','list_beg','list_beg_referral_urls')");
80 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='beg'");
81 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what` IN ('beg','beg2')");
83 // Unregister points data
84 unregisterExtensionPointsData('beg');
85 unregisterExtensionPointsData('beg_ref');
86 unregisterExtensionPointsData('monthly_beg');
87 unregisterExtensionPointsData('monthly_beg_ref');
90 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_mod_reg` WHERE `module`='beg' LIMIT 1");
93 unregisterFilter(__FILE__, __LINE__, 'pre_user_registration', 'BEG_RALLYE_USER_REGISTRATION_ADD_SQL_COLUMNS', TRUE, isExtensionDryRun());
94 unregisterFilter(__FILE__, __LINE__, 'init', 'BEG_PURGE_IPS_NOTIFY_USER', TRUE, isExtensionDryRun());
97 case 'activate': // Do stuff when admin activates this extension
98 // SQL commands to run
99 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y',`locked`='N' WHERE `what`='beg' LIMIT 1");
100 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `what` IN ('beg','beg2')");
101 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N',`hidden`='N',`admin_only`='N',`mem_only`='N' WHERE `module`='beg' LIMIT 1");
102 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N',`hidden`='N',`admin_only`='N',`mem_only`='N' WHERE `module`='beg' LIMIT 1");
105 case 'deactivate': // Do stuff when admin deactivates this extension
106 // SQL commands to run
107 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N',`locked`='Y' WHERE `what`='beg' LIMIT 1");
108 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `what` IN('beg','beg2')");
109 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
110 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
113 case 'update': // Update an extension
114 switch (getCurrentExtensionVersion()) {
115 case '0.0.1': // SQL queries for v0.0.1
116 // Update notes (these will be set as task text!)
117 setExtensionUpdateNotes("Design "Solid-Business" eingebaut.");
120 case '0.0.2': // SQL queries for v0.0.2
121 // Update notes (these will be set as task text!)
122 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
125 case '0.0.3': // SQL queries for v0.0.3
126 addConfigAddSql('beg_points_max', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.10000');
128 // Update notes (these will be set as task text!)
129 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standard: 0,1 {?POINTS?})");
132 case '0.0.4': // SQL queries for v0.0.4
133 // Update notes (these will be set as task text!)
134 setExtensionUpdateNotes("Überlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert ("Unbekannte Spalte <u>beg_points_ma</u>").");
137 case '0.0.5': // SQL queries for v0.0.5
138 // Update notes (these will be set as task text!)
139 setExtensionUpdateNotes("Im Mitgliedsmenü wurde die Beschreibung aus dem Gastmenü verwendet.");
142 case '0.0.6': // SQL queries for v0.0.6
143 addConfigAddSql('beg_userid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
145 // Update notes (these will be set as task text!)
146 setExtensionUpdateNotes("Ein Mitgliedsaccount (empfehlenswert ist Ihr eigenes!) kann zum Abbuchen der {?POINTS?} verwendet werden. Template <u>admin_config_beg.tpl</u> (und pro!) nicht vergessen, zu aktualisieren.");
149 case '0.0.8': // SQL queries for v0.0.8
150 addConfigAddSql('beg_ip_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800');
152 // Update notes (these will be set as task text!)
153 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugefügt.");
156 case '0.0.9': // SQL queries for v0.0.9
157 // Update notes (these will be set as task text!)
158 setExtensionUpdateNotes("Bitte verschieben Sie die beg-Templates (Ordner: {?PATH?}/templates/".getLanguage()."/html/) in den neuen Order beg!");
161 case '0.1.0': // SQL queries for v0.2.1
162 // Update notes (these will be set as task text!)
163 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
166 case '0.1.1': // SQL queries for v0.1.1
167 // Update notes (these will be set as task text!)
168 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
172 // SQL queries for v0.1.2
173 addConfigAddSql('beg_ranks', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
174 addConfigAddSql('beg_active', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
175 addConfigAddSql('beg_rallye', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
176 addExtensionAddTableColumnSql('user_data', 'beg_points', 'FLOAT(21,5) UNSIGNED NOT NULL DEFAULT 0.00000');
179 addAdminMenuSql('user', 'list_beg', 'Bettel-Rallye', 'Listet alle Teilnehmer der monatlichen Bettel-Rallye auf.', 12);
181 // Update notes (these will be set as task text!)
182 setExtensionUpdateNotes("Optionale Bettel-Rallye möglich. Und die erbettelten {?POINTS?} können entweder nur dem bettelndem Mitglied direkt oder auch seinem Werber gutgeschrieben werden können.");
185 case '0.1.3': // SQL queries for v0.1.3
186 // Update notes (these will be set as task text!)
187 setExtensionUpdateNotes("Erbettelte {?POINTS?} werden nach Deaktivierung der Bettel-Rallye gelöscht.");
190 case '0.1.4': // SQL queries for v0.1.4
191 // Update notes (these will be set as task text!)
192 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen (<strong>member_list_beg.tpl</strong>); Template <strong>member_beg_404.tpl</strong> fehlte!");
195 case '0.1.5': // SQL queries for v0.1.5
196 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Bettellink/-rallye', descr='IP-Sperre, {OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Vergütung und auch die Bettel-Rallye können Sie hier einstellen.' WHERE `what`='config_beg' LIMIT 1");
198 // Update notes (these will be set as task text!)
199 setExtensionUpdateNotes("Fehlendes Template im Admin-Bereich hinzugefügt. Im Admin-Bereich Hinweis hinzugefügt, wenn Bettel-Rallye inaktiv ist. Bitte Script inc/monthly_beg.php löschen!");
202 case '0.1.6': // SQL queries for v0.1.6
203 // Update notes (these will be set as task text!)
204 setExtensionUpdateNotes("Es wurden immer dem ersten bettelndem Mitglied die {?POINTS?} gutgeschrieben.");
207 case '0.1.7': // SQL queries for v0.1.7
208 addConfigAddSql('beg_ral_en_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
209 addConfigAddSql('beg_ral_di_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
210 addConfigAddSql('beg_new_mem_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
211 addConfigAddSql('beg_notify_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
212 addConfigAddSql('beg_notify_wait', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 30');
213 addExtensionAddTableColumnSql('online', 'beg_ral_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
214 addExtensionAddTableColumnSql('online', 'beg_ral_en_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
215 addExtensionAddTableColumnSql('online', 'beg_ral_di_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
217 // Update notes (these will be set as task text!)
218 setExtensionUpdateNotes("Die Mitglieder können nun optional automatisch über eine aktivierte und/oder deaktivierte Bettel-Rallye informiert werden. Beide Benachrichtigungen können Sie unter <strong>Einstellungen --> Bettel-Link/-rallye</strong> seperat ein- und ausschalten! Zudem ist eine Sperre gegen eingeloggte Mitglieder eingebaut, die das Klicken auf den eigenen Bettel-Link etwas erschweren soll.");
221 case '0.1.8': // SQL queries for v0.1.8
222 // Update notes (these will be set as task text!)
223 setExtensionUpdateNotes("Fehler im täglichen Reset beseitigt.");
226 case '0.1.9': // SQL queries for v0.1.9
227 // Update notes (these will be set as task text!)
228 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verknüpften Modules eingebunden.");
231 case '0.2.0': // SQL queries for v0.2.0
232 // Update notes (these will be set as task text!)
233 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als nächstes nach wer als letztes Online war umsortiert.");
236 case '0.2.1': // SQL queries for v0.2.1
237 // Update notes (these will be set as task text!)
238 setExtensionUpdateNotes("Fehler <strong>unknown column 'userid'</strong> beseitigt.");
241 case '0.2.2': // SQL queries for v0.2.2
242 addConfigAddSql('beg_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
244 // Update notes (these will be set as task text!)
245 setExtensionUpdateNotes("Eigene Mitglied-Ids sind von der Bettel-Rallye nun ausschliessbar.");
248 case '0.2.3': // SQL queries for v0.2.3
249 // Update notes (these will be set as task text!)
250 setExtensionUpdateNotes("Abfrage des Account-Status eingebaut. Es können nur bestätigte Accounts betteln.");
253 case '0.2.4': // SQL queries for v0.2.4
254 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras',`sort`=1 WHERE `what`='beg' LIMIT 1");
256 // Update notes (these will be set as task text!)
257 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
260 case '0.2.5': // SQL queries for v0.2.5
261 // Update notes (these will be set as task text!)
262 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
265 case '0.2.6': // SQL queries for v0.2.6
266 addExtensionAddTableColumnSql('beg_ips', 'sid', "VARCHAR(255) NOT NULL DEFAULT ''");
267 addConfigAddSql('beg_pay_mode', "ENUM('IMG','JS','BOTH','NONE') DEFAULT 'NONE' NOT NULL ;");
269 // Update notes (these will be set as task text!)
270 setExtensionUpdateNotes("IP-Lock mit Session-Id erweitert. Tracker-Script eingefügt, dass das Einbinden des Bettel-Links als Bild/Script/CSS verhindern soll.");
273 case '0.2.7': // SQL queries for v0.2.7
274 addConfigChangeSql('beg_ral_en_notify', 'beg_ral_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
275 addConfigChangeSql('beg_ral_di_notify', 'beg_ral_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
276 addConfigChangeSql('beg_new_mem_notify', 'beg_new_member_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
277 addExtensionChangeTableColumnSql('user_data', 'beg_ral_en_notify', 'beg_ral_enable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
278 addExtensionChangeTableColumnSql('user_data', 'beg_ral_di_notify', 'beg_ral_disable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
280 // Update notes (these will be set as task text!)
281 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
284 case '0.2.8': // SQL queries for v0.2.8
285 addConfigChangeSql('beg_ral_enable_notify', 'beg_rallye_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
286 addConfigChangeSql('beg_ral_disable_notify', 'beg_rallye_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
287 addExtensionChangeTableColumnSql('user_data', 'beg_ral_enable_notify', 'beg_rallye_enable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
288 addExtensionChangeTableColumnSql('user_data', 'beg_ral_disable_notify', 'beg_rallye_disable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
290 // Update notes (these will be set as task text!)
291 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
294 case '0.2.9': // SQL queries for v0.2.9
295 addDropTableSql('beg_referrals');
296 addCreateTableSql('beg_referrals', "
297 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
298 `userid` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
299 `remote_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
300 `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
301 `referral_url` TINYTEXT NOT NULL,
304 'Recorded referral URLs');
307 addAdminMenuSql('user','list_beg_referral_urls','Bettel-Referrals auflisten','Listet alle Bettellink-Aufrufe inklusive Referral-URL auf.','13');
309 // Update notes (these will be set as task text!)
310 setExtensionUpdateNotes("Loggen der Referral-URLs hinzugefügt.");
313 case '0.3.0': // SQL queries for v0.3.0
314 addConfigDropSql('beg_mode');
316 // Register points data
317 registerExtensionPointsData('beg' , 'points', 'LOCKED', 'DIRECT');
318 registerExtensionPointsData('monthly_beg', 'points', 'LOCKED', 'DIRECT');
320 // This depends on ext-sql_patches
321 addExtensionDependency('sql_patches');
324 setExtensionUpdateNotes("Monatliche Bettelrallye und die erbettelten {?POINTS?} werden nun über die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
327 case '0.3.1': // SQL queries for v0.3.1
329 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='beg2'");
330 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `action`='members',`sort`=3 WHERE `what`='beg' LIMIT 1");
331 addMemberMenuSql('rals', 'beg2', 'Bettel-Rallye', 3);
334 setExtensionUpdateNotes("Bettel-Rallye re-hinzugefügt.");
337 case '0.3.2': // SQL queries for v0.3.2
339 addModuleSql('beg', '{OPEN_TEMPLATE}MODULE_BEG_TITLE{CLOSE_TEMPLATE}', 'Y', 'Y', 'N', 'N');
342 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `title`='Betteln bei {OPEN_CONFIG}MAIN_TITLE{CLOSE_CONFIG}' WHERE `module`='beg' AND `title`='' LIMIT 1");
345 setExtensionUpdateNotes("Modul registriert und bei leerem Titel mit einem Standardtitel versehen.");
348 case '0.3.3': // SQL queries for v0.3.3
350 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'BEG_RALLYE_USER_REGISTRATION_ADD_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
351 registerFilter(__FILE__, __LINE__, 'init', 'BEG_PURGE_IPS_NOTIFY_USER', FALSE, TRUE, isExtensionDryRun());
353 // This depends on ext-register
354 addExtensionDependency('register');
357 setExtensionUpdateNotes("Filter für Anmeldeformular und Aufrämen der IPs hinzugefügt.");
360 case '0.3.4': // SQL queries for v0.3.4
361 // Register points data
362 registerExtensionPointsData('beg_ref' , 'points', 'LOCKED', 'DIRECT');
363 registerExtensionPointsData('monthly_beg_ref', 'points', 'LOCKED', 'DIRECT');
365 // SQL queries (renaming)
366 addRenameTableSql('beg_referrals', 'referrals');
367 addExtensionChangeTableColumnSql('beg_referrals', 'referal_url', 'referral_url', 'TINYTEXT NOT NULL');
368 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_beg_referral_urls' WHERE `what`='list_beg_referal_urls' LIMIT 1");
371 setExtensionUpdateNotes("Verwendungszwecke für Referralgutgschriften registriert.");
376 case 'modify': // When the extension got modified
379 case 'test': // For testing purposes
382 case 'init': // When extension is initialized
385 default: // Unknown extension mode
386 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));