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 - 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.3.0');
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'));
49 switch (getExtensionMode()) {
50 case 'register': // Do stuff when installation is running
51 // SQL commands to run
52 addAdminMenuSql('setup', 'config_beg', 'Bettel-Link', 'IP-Sperre, {OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Vergütung usw. können Sie hier einstellen.', 10);
53 addGuestMenuSql('main', 'beg', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG} erbetteln!', 4);
54 addMemberMenuSql('main', 'beg', 'Ihr Bettel-Link', 6);
55 addConfigAddSql('beg_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 600');
56 addConfigAddSql('beg_userid_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800');
57 addConfigAddSql('beg_points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00100');
58 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
61 addDropTableSql('beg_ips');
62 addCreateTableSql('beg_ips', "
63 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
64 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
65 `remote_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
66 `timeout` VARCHAR(10) NOT NULL DEFAULT '',
67 `sid` VARCHAR(255) NOT NULL DEFAULT '',
70 'IP lock data for beg links');
73 case 'remove': // Do stuff when removing extension
74 // SQL commands to run
75 addDropTableSql('beg_ips');
76 addDropTableSql('beg_referals');
77 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN ('config_beg','list_beg','list_beg_referal_urls')");
78 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='beg'");
79 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what` IN ('beg','beg2')");
82 case 'activate': // Do stuff when admin activates this extension
83 // SQL commands to run
84 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y', `locked`='N' WHERE `what`='beg' LIMIT 1");
85 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what` IN ('beg','beg2') LIMIT 2");
86 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='N' WHERE `module`='beg' LIMIT 1");
89 case 'deactivate': // Do stuff when admin deactivates this extension
90 // SQL commands to run
91 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N', `locked`='Y' WHERE `what`='beg' LIMIT 1");
92 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `what` IN('beg','beg2') LIMIT 2");
93 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
96 case 'update': // Update an extension
97 switch (getCurrentExtensionVersion()) {
98 case '0.0.1': // SQL queries for v0.0.1
99 // Update notes (these will be set as task text!)
100 setExtensionUpdateNotes("Design "Solid-Business" eingebaut.");
103 case '0.0.2': // SQL queries for v0.0.2
104 // Update notes (these will be set as task text!)
105 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
108 case '0.0.3': // SQL queries for v0.0.3
109 addConfigAddSql('beg_points_max', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.10000');
111 // Update notes (these will be set as task text!)
112 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standard: 0,1 {?POINTS?})");
115 case '0.0.4': // SQL queries for v0.0.4
116 // Update notes (these will be set as task text!)
117 setExtensionUpdateNotes("Überlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert ("Unbekannte Spalte <u>beg_points_ma</u>").");
120 case '0.0.5': // SQL queries for v0.0.5
121 // Update notes (these will be set as task text!)
122 setExtensionUpdateNotes("Im Mitgliedsmenü wurde die Beschreibung aus dem Gastmenü verwendet.");
125 case '0.0.6': // SQL queries for v0.0.6
126 addConfigAddSql('beg_userid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
128 // Update notes (these will be set as task text!)
129 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.");
132 case '0.0.8': // SQL queries for v0.0.8
133 addConfigAddSql('beg_ip_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800');
135 // Update notes (these will be set as task text!)
136 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugefügt.");
139 case '0.0.9': // SQL queries for v0.0.9
140 // Update notes (these will be set as task text!)
141 setExtensionUpdateNotes("Bitte verschieben Sie die beg-Templates (Ordner: {?PATH?}/templates/".getLanguage()."/html/) in den neuen Order beg!");
144 case '0.1.0': // SQL queries for v0.2.1
145 // Update notes (these will be set as task text!)
146 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
149 case '0.1.1': // SQL queries for v0.1.1
150 // Update notes (these will be set as task text!)
151 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
155 // SQL queries for v0.1.2
156 addConfigAddSql('beg_ranks', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
157 addConfigAddSql('beg_active', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
158 addConfigAddSql('beg_rallye', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
159 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_points` FLOAT(21,5) UNSIGNED NOT NULL DEFAULT 0.00000");
161 addMemberMenuSql('main', 'beg2', 'Bettel-Rallye', 7);
162 addAdminMenuSql('user', 'list_beg', 'Bettel-Rallye', 'Listet alle Teilnehmer der monatlichen Bettel-Rallye auf.', 12);
164 // Update notes (these will be set as task text!)
165 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.");
168 case '0.1.3': // SQL queries for v0.1.3
169 // Update notes (these will be set as task text!)
170 setExtensionUpdateNotes("Erbettelte {?POINTS?} werden nach Deaktivierung der Bettel-Rallye gelöscht.");
173 case '0.1.4': // SQL queries for v0.1.4
174 // Update notes (these will be set as task text!)
175 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen (<strong>member_list_beg.tpl</strong>); Template <strong>member_beg_404.tpl</strong> fehlte!");
178 case '0.1.5': // SQL queries for v0.1.5
179 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");
181 // Update notes (these will be set as task text!)
182 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!");
185 case '0.1.6': // SQL queries for v0.1.6
186 // Update notes (these will be set as task text!)
187 setExtensionUpdateNotes("Es wurden immer dem ersten bettelndem Mitglied die {?POINTS?} gutgeschrieben.");
190 case '0.1.7': // SQL queries for v0.1.7
191 addConfigAddSql('beg_ral_en_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
192 addConfigAddSql('beg_ral_di_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
193 addConfigAddSql('beg_new_mem_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
194 addConfigAddSql('beg_notify_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
195 addConfigAddSql('beg_notify_wait', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 30');
196 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
197 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_en_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
198 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_di_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
200 // Update notes (these will be set as task text!)
201 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.");
204 case '0.1.8': // SQL queries for v0.1.8
205 // Update notes (these will be set as task text!)
206 setExtensionUpdateNotes("Fehler im täglichen Reset beseitigt.");
209 case '0.1.9': // SQL queries for v0.1.9
210 // Update notes (these will be set as task text!)
211 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verknüpften Modules eingebunden.");
214 case '0.2.0': // SQL queries for v0.2.0
215 // Update notes (these will be set as task text!)
216 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als nächstes nach wer als letztes Online war umsortiert.");
219 case '0.2.1': // SQL queries for v0.2.1
220 // Update notes (these will be set as task text!)
221 setExtensionUpdateNotes("Fehler <strong>unknown column 'userid'</strong> beseitigt.");
224 case '0.2.2': // SQL queries for v0.2.2
225 addConfigAddSql('beg_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
227 // Update notes (these will be set as task text!)
228 setExtensionUpdateNotes("Eigene Mitglieder-Ids sind von der Bettel-Rallye nun ausschliessbar.");
231 case '0.2.3': // SQL queries for v0.2.3
232 // Update notes (these will be set as task text!)
233 setExtensionUpdateNotes("Abfrage des Account-Status eingebaut. Es können nur bestätigte Accounts betteln.");
236 case '0.2.4': // SQL queries for v0.2.4
237 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=1 WHERE `what`='beg' LIMIT 1");
238 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals', `sort`=3, `title`='Bettel-Rallye' WHERE `what`='beg2' LIMIT 1");
240 // Update notes (these will be set as task text!)
241 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
244 case '0.2.5': // SQL queries for v0.2.5
245 // Update notes (these will be set as task text!)
246 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
249 case '0.2.6': // SQL queries for v0.2.6
250 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_beg_ips` ADD `sid` VARCHAR(255) NOT NULL DEFAULT ''");
251 addConfigAddSql('beg_pay_mode', "ENUM('IMG','JS','BOTH','NONE') DEFAULT 'NONE' NOT NULL ;");
253 // Update notes (these will be set as task text!)
254 setExtensionUpdateNotes("IP-Lock mit Session-Id erweitert. Tracker-Script eingefügt, dass das Einbinden des Bettel-Links als Bild/Script/CSS verhindern soll.");
257 case '0.2.7': // SQL queries for v0.2.7
258 addConfigChangeSql('beg_ral_en_notify', 'beg_ral_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
259 addConfigChangeSql('beg_ral_di_notify', 'beg_ral_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
260 addConfigChangeSql('beg_new_mem_notify', 'beg_new_member_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
261 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_en_notify` `beg_ral_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
262 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_di_notify` `beg_ral_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
264 // Update notes (these will be set as task text!)
265 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
268 case '0.2.8': // SQL queries for v0.2.8
269 addConfigChangeSql('beg_ral_enable_notify', 'beg_rallye_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
270 addConfigChangeSql('beg_ral_disable_notify', 'beg_rallye_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
271 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_enable_notify` `beg_rallye_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
272 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_disable_notify` `beg_rallye_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
274 // Update notes (these will be set as task text!)
275 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
278 case '0.2.9': // SQL queries for v0.2.9
279 addDropTableSql('beg_referals');
280 addCreateTableSql('beg_referals', "
281 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
282 `userid` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
283 `remote_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
284 `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
285 `referal_url` TINYTEXT NOT NULL,
288 'Recorded Referal URLs');
291 addAdminMenuSql('user','list_beg_referal_urls','Bettel-Referals auflisten','Listet alle Bettellink-Aufrufe inklusive Referal-URL auf.','13');
293 // Update notes (these will be set as task text!)
294 setExtensionUpdateNotes("Loggen der Referal-URLs hinzugefügt.");
297 case '0.3.0': // SQL queries for v0.3.0
298 addConfigDropSql('beg_mode');
299 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`) VALUES ('beg','points','LOCKED','DIRECT')");
300 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`) VALUES ('monthly_beg','points','LOCKED','DIRECT')");
302 // This depends on ext-sql_patches
303 addExtensionDependency('sql_patches');
306 setExtensionUpdateNotes("Monatliche Bettelrallye und die erbettelten {?POINTS?} werden nun über die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
311 case 'modify': // When the extension got modified
314 case 'test': // For testing purposes
317 case 'init': // When extension is initialized
318 // Remove old entries
319 $OLD = getBegTimeout();
320 if (getBegUseridTimeout() > $OLD) {
321 $OLD = getBegUseridTimeout();
323 SQL_QUERY('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE (UNIX_TIMESTAMP() - `timeout`) >= ' . ($OLD + 60*60) . '', __FILE__, __LINE__);
325 // Check for beg rallye is active and send mails out
326 if ((isBegRallyeEnabled()) && (isBegNewMemberNotifyEnabled())) {
327 // Include file for sending out mails
328 addIncludeToPool('notify', 'inc/mails/beg_mails.php');
332 default: // Unknown extension mode
333 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));