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('user_data', '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 '',
71 'IP lock data for beg links');
74 case 'remove': // Do stuff when removing extension
75 // SQL commands to run
76 addDropTableSql('beg_ips');
77 addDropTableSql('beg_referrals');
78 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN ('config_beg','list_beg','list_beg_referral_urls')");
79 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='beg'");
80 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what` IN ('beg','beg2')");
82 // Unregister points data
83 unregisterExtensionPointsData('beg');
84 unregisterExtensionPointsData('beg_ref');
85 unregisterExtensionPointsData('monthly_beg');
86 unregisterExtensionPointsData('monthly_beg_ref');
89 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_mod_reg` WHERE `module`='beg' LIMIT 1");
92 unregisterFilter(__FILE__, __LINE__, 'pre_user_registration', 'BEG_RALLYE_USER_REGISTRATION_ADD_SQL_COLUMNS', TRUE, isExtensionDryRun());
93 unregisterFilter(__FILE__, __LINE__, 'init', 'BEG_PURGE_IPS_NOTIFY_USER', TRUE, isExtensionDryRun());
96 case 'activate': // Do stuff when admin activates this extension
97 // SQL commands to run
98 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y',`locked`='N' WHERE `what`='beg' LIMIT 1");
99 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `what` IN ('beg','beg2')");
100 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N',`hidden`='N',`admin_only`='N',`mem_only`='N' WHERE `module`='beg' LIMIT 1");
101 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N',`hidden`='N',`admin_only`='N',`mem_only`='N' WHERE `module`='beg' LIMIT 1");
104 case 'deactivate': // Do stuff when admin deactivates this extension
105 // SQL commands to run
106 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N',`locked`='Y' WHERE `what`='beg' LIMIT 1");
107 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `what` IN('beg','beg2')");
108 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
109 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
112 case 'update': // Update an extension
113 switch (getCurrentExtensionVersion()) {
114 case '0.0.1': // SQL queries for v0.0.1
115 // Update notes (these will be set as task text!)
116 setExtensionUpdateNotes("Design "Solid-Business" eingebaut.");
119 case '0.0.2': // SQL queries for v0.0.2
120 // Update notes (these will be set as task text!)
121 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
124 case '0.0.3': // SQL queries for v0.0.3
125 addConfigAddSql('beg_points_max', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.10000');
127 // Update notes (these will be set as task text!)
128 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standard: 0,1 {?POINTS?})");
131 case '0.0.4': // SQL queries for v0.0.4
132 // Update notes (these will be set as task text!)
133 setExtensionUpdateNotes("Überlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert ("Unbekannte Spalte <u>beg_points_ma</u>").");
136 case '0.0.5': // SQL queries for v0.0.5
137 // Update notes (these will be set as task text!)
138 setExtensionUpdateNotes("Im Mitgliedsmenü wurde die Beschreibung aus dem Gastmenü verwendet.");
141 case '0.0.6': // SQL queries for v0.0.6
142 addConfigAddSql('beg_userid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
144 // Update notes (these will be set as task text!)
145 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.");
148 case '0.0.8': // SQL queries for v0.0.8
149 addConfigAddSql('beg_ip_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800');
151 // Update notes (these will be set as task text!)
152 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugefügt.");
155 case '0.0.9': // SQL queries for v0.0.9
156 // Update notes (these will be set as task text!)
157 setExtensionUpdateNotes("Bitte verschieben Sie die beg-Templates (Ordner: {?PATH?}/templates/".getLanguage()."/html/) in den neuen Order beg!");
160 case '0.1.0': // SQL queries for v0.2.1
161 // Update notes (these will be set as task text!)
162 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
165 case '0.1.1': // SQL queries for v0.1.1
166 // Update notes (these will be set as task text!)
167 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
171 // SQL queries for v0.1.2
172 addConfigAddSql('beg_ranks', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
173 addConfigAddSql('beg_active', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
174 addConfigAddSql('beg_rallye', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
175 addExtensionAddTableColumnSql('user_data', 'beg_points', 'FLOAT(21,5) UNSIGNED NOT NULL DEFAULT 0.00000');
178 addAdminMenuSql('user', 'list_beg', 'Bettel-Rallye', 'Listet alle Teilnehmer der monatlichen Bettel-Rallye auf.', 12);
180 // Update notes (these will be set as task text!)
181 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.");
184 case '0.1.3': // SQL queries for v0.1.3
185 // Update notes (these will be set as task text!)
186 setExtensionUpdateNotes("Erbettelte {?POINTS?} werden nach Deaktivierung der Bettel-Rallye gelöscht.");
189 case '0.1.4': // SQL queries for v0.1.4
190 // Update notes (these will be set as task text!)
191 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen (<strong>member_list_beg.tpl</strong>); Template <strong>member_beg_404.tpl</strong> fehlte!");
194 case '0.1.5': // SQL queries for v0.1.5
195 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");
197 // Update notes (these will be set as task text!)
198 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!");
201 case '0.1.6': // SQL queries for v0.1.6
202 // Update notes (these will be set as task text!)
203 setExtensionUpdateNotes("Es wurden immer dem ersten bettelndem Mitglied die {?POINTS?} gutgeschrieben.");
206 case '0.1.7': // SQL queries for v0.1.7
207 addConfigAddSql('beg_ral_en_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
208 addConfigAddSql('beg_ral_di_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
209 addConfigAddSql('beg_new_mem_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
210 addConfigAddSql('beg_notify_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
211 addConfigAddSql('beg_notify_wait', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 30');
212 addExtensionAddTableColumnSql('user_data', 'beg_ral_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
213 addExtensionAddTableColumnSql('user_data', 'beg_ral_en_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
214 addExtensionAddTableColumnSql('user_data', 'beg_ral_di_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
216 // Update notes (these will be set as task text!)
217 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.");
220 case '0.1.8': // SQL queries for v0.1.8
221 // Update notes (these will be set as task text!)
222 setExtensionUpdateNotes("Fehler im täglichen Reset beseitigt.");
225 case '0.1.9': // SQL queries for v0.1.9
226 // Update notes (these will be set as task text!)
227 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verknüpften Modules eingebunden.");
230 case '0.2.0': // SQL queries for v0.2.0
231 // Update notes (these will be set as task text!)
232 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als nächstes nach wer als letztes Online war umsortiert.");
235 case '0.2.1': // SQL queries for v0.2.1
236 // Update notes (these will be set as task text!)
237 setExtensionUpdateNotes("Fehler <strong>unknown column 'userid'</strong> beseitigt.");
240 case '0.2.2': // SQL queries for v0.2.2
241 addConfigAddSql('beg_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
243 // Update notes (these will be set as task text!)
244 setExtensionUpdateNotes("Eigene Mitglieds-Ids sind von der Bettel-Rallye nun ausschliessbar.");
247 case '0.2.3': // SQL queries for v0.2.3
248 // Update notes (these will be set as task text!)
249 setExtensionUpdateNotes("Abfrage des Account-Status eingebaut. Es können nur bestätigte Accounts betteln.");
252 case '0.2.4': // SQL queries for v0.2.4
253 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras',`sort`=1 WHERE `what`='beg' LIMIT 1");
255 // Update notes (these will be set as task text!)
256 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
259 case '0.2.5': // SQL queries for v0.2.5
260 // Update notes (these will be set as task text!)
261 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
264 case '0.2.6': // SQL queries for v0.2.6
265 addExtensionAddTableColumnSql('beg_ips', 'sid', "VARCHAR(255) NOT NULL DEFAULT ''");
266 addConfigAddSql('beg_pay_mode', "ENUM('IMG','JS','BOTH','NONE') DEFAULT 'NONE' NOT NULL ;");
268 // Update notes (these will be set as task text!)
269 setExtensionUpdateNotes("IP-Lock mit Session-Id erweitert. Tracker-Script eingefügt, dass das Einbinden des Bettel-Links als Bild/Script/CSS verhindern soll.");
272 case '0.2.7': // SQL queries for v0.2.7
273 addConfigChangeSql('beg_ral_en_notify', 'beg_ral_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
274 addConfigChangeSql('beg_ral_di_notify', 'beg_ral_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
275 addConfigChangeSql('beg_new_mem_notify', 'beg_new_member_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
276 addExtensionChangeTableColumnSql('user_data', 'beg_ral_en_notify', 'beg_ral_enable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
277 addExtensionChangeTableColumnSql('user_data', 'beg_ral_di_notify', 'beg_ral_disable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
279 // Update notes (these will be set as task text!)
280 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
283 case '0.2.8': // SQL queries for v0.2.8
284 addConfigChangeSql('beg_ral_enable_notify', 'beg_rallye_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
285 addConfigChangeSql('beg_ral_disable_notify', 'beg_rallye_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
286 addExtensionChangeTableColumnSql('user_data', 'beg_ral_enable_notify', 'beg_rallye_enable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
287 addExtensionChangeTableColumnSql('user_data', 'beg_ral_disable_notify', 'beg_rallye_disable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
289 // Update notes (these will be set as task text!)
290 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
293 case '0.2.9': // SQL queries for v0.2.9
294 addDropTableSql('beg_referrals');
295 addCreateTableSql('beg_referrals', "
296 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
297 `userid` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
298 `remote_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
299 `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
300 `referral_url` TINYTEXT NOT NULL,
303 'Recorded referral URLs');
306 addAdminMenuSql('user','list_beg_referral_urls','Bettel-Referrals auflisten','Listet alle Bettellink-Aufrufe inklusive Referral-URL auf.','13');
308 // Update notes (these will be set as task text!)
309 setExtensionUpdateNotes("Loggen der Referral-URLs hinzugefügt.");
312 case '0.3.0': // SQL queries for v0.3.0
313 addConfigDropSql('beg_mode');
315 // Register points data
316 registerExtensionPointsData('beg' , 'points', 'LOCKED', 'DIRECT');
317 registerExtensionPointsData('monthly_beg', 'points', 'LOCKED', 'DIRECT');
319 // This depends on ext-sql_patches
320 addExtensionDependency('sql_patches');
323 setExtensionUpdateNotes("Monatliche Bettelrallye und die erbettelten {?POINTS?} werden nun über die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
326 case '0.3.1': // SQL queries for v0.3.1
328 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='beg2'");
329 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `action`='members',`sort`=3 WHERE `what`='beg' LIMIT 1");
330 addMemberMenuSql('rals', 'beg2', 'Bettel-Rallye', 3);
333 setExtensionUpdateNotes("Bettel-Rallye re-hinzugefügt.");
336 case '0.3.2': // SQL queries for v0.3.2
338 addModuleSql('beg', '{OPEN_TEMPLATE}MODULE_BEG_TITLE{CLOSE_TEMPLATE}', 'Y', 'Y', 'N', 'N');
341 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `title`='Betteln bei {OPEN_CONFIG}MAIN_TITLE{CLOSE_CONFIG}' WHERE `module`='beg' AND `title`='' LIMIT 1");
344 setExtensionUpdateNotes("Modul registriert und bei leerem Titel mit einem Standardtitel versehen.");
347 case '0.3.3': // SQL queries for v0.3.3
349 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'BEG_RALLYE_USER_REGISTRATION_ADD_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
350 registerFilter(__FILE__, __LINE__, 'init', 'BEG_PURGE_IPS_NOTIFY_USER', FALSE, TRUE, isExtensionDryRun());
352 // This depends on ext-register
353 addExtensionDependency('register');
356 setExtensionUpdateNotes("Filter für Anmeldeformular und Aufrämen der IPs hinzugefügt.");
359 case '0.3.4': // SQL queries for v0.3.4
360 // Register points data
361 registerExtensionPointsData('beg_ref' , 'points', 'LOCKED', 'DIRECT');
362 registerExtensionPointsData('monthly_beg_ref', 'points', 'LOCKED', 'DIRECT');
364 // SQL queries (renaming)
365 addRenameTableSql('beg_referrals', 'referrals');
366 addExtensionChangeTableColumnSql('beg_referrals', 'referal_url', 'referral_url', 'TINYTEXT NOT NULL');
367 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `what`='list_beg_referral_urls' WHERE `what`='list_beg_referal_urls' LIMIT 1");
370 setExtensionUpdateNotes("Verwendungszwecke für Referralgutgschriften registriert.");
375 case 'modify': // When the extension got modified
378 case 'test': // For testing purposes
381 case 'init': // When extension is initialized
384 default: // Unknown extension mode
385 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));