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://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.2');
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'));
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 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `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_referals');
79 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN ('config_beg','list_beg','list_beg_referal_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')");
84 addExtensionSql("DELETE LOW_PRIRITY FROM `{?_MYSQL_PREFIX?}_mod_reg` WHERE `module`='beg' LIMIT 1");
87 case 'activate': // Do stuff when admin activates this extension
88 // SQL commands to run
89 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y', `locked`='N' WHERE `what`='beg' LIMIT 1");
90 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what` IN ('beg','beg2') LIMIT 2");
91 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='N' WHERE `module`='beg' LIMIT 1");
92 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='N' WHERE `module`='beg' LIMIT 1");
95 case 'deactivate': // Do stuff when admin deactivates this extension
96 // SQL commands to run
97 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N', `locked`='Y' WHERE `what`='beg' LIMIT 1");
98 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `what` IN('beg','beg2') LIMIT 2");
99 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
100 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
103 case 'update': // Update an extension
104 switch (getCurrentExtensionVersion()) {
105 case '0.0.1': // SQL queries for v0.0.1
106 // Update notes (these will be set as task text!)
107 setExtensionUpdateNotes("Design "Solid-Business" eingebaut.");
110 case '0.0.2': // SQL queries for v0.0.2
111 // Update notes (these will be set as task text!)
112 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
115 case '0.0.3': // SQL queries for v0.0.3
116 addConfigAddSql('beg_points_max', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.10000');
118 // Update notes (these will be set as task text!)
119 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standard: 0,1 {?POINTS?})");
122 case '0.0.4': // SQL queries for v0.0.4
123 // Update notes (these will be set as task text!)
124 setExtensionUpdateNotes("Überlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert ("Unbekannte Spalte <u>beg_points_ma</u>").");
127 case '0.0.5': // SQL queries for v0.0.5
128 // Update notes (these will be set as task text!)
129 setExtensionUpdateNotes("Im Mitgliedsmenü wurde die Beschreibung aus dem Gastmenü verwendet.");
132 case '0.0.6': // SQL queries for v0.0.6
133 addConfigAddSql('beg_userid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
135 // Update notes (these will be set as task text!)
136 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.");
139 case '0.0.8': // SQL queries for v0.0.8
140 addConfigAddSql('beg_ip_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800');
142 // Update notes (these will be set as task text!)
143 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugefügt.");
146 case '0.0.9': // SQL queries for v0.0.9
147 // Update notes (these will be set as task text!)
148 setExtensionUpdateNotes("Bitte verschieben Sie die beg-Templates (Ordner: {?PATH?}/templates/".getLanguage()."/html/) in den neuen Order beg!");
151 case '0.1.0': // SQL queries for v0.2.1
152 // Update notes (these will be set as task text!)
153 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
156 case '0.1.1': // SQL queries for v0.1.1
157 // Update notes (these will be set as task text!)
158 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
162 // SQL queries for v0.1.2
163 addConfigAddSql('beg_ranks', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
164 addConfigAddSql('beg_active', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
165 addConfigAddSql('beg_rallye', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
166 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_points` FLOAT(21,5) UNSIGNED NOT NULL DEFAULT 0.00000");
169 addAdminMenuSql('user', 'list_beg', 'Bettel-Rallye', 'Listet alle Teilnehmer der monatlichen Bettel-Rallye auf.', 12);
171 // Update notes (these will be set as task text!)
172 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.");
175 case '0.1.3': // SQL queries for v0.1.3
176 // Update notes (these will be set as task text!)
177 setExtensionUpdateNotes("Erbettelte {?POINTS?} werden nach Deaktivierung der Bettel-Rallye gelöscht.");
180 case '0.1.4': // SQL queries for v0.1.4
181 // Update notes (these will be set as task text!)
182 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen (<strong>member_list_beg.tpl</strong>); Template <strong>member_beg_404.tpl</strong> fehlte!");
185 case '0.1.5': // SQL queries for v0.1.5
186 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");
188 // Update notes (these will be set as task text!)
189 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!");
192 case '0.1.6': // SQL queries for v0.1.6
193 // Update notes (these will be set as task text!)
194 setExtensionUpdateNotes("Es wurden immer dem ersten bettelndem Mitglied die {?POINTS?} gutgeschrieben.");
197 case '0.1.7': // SQL queries for v0.1.7
198 addConfigAddSql('beg_ral_en_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
199 addConfigAddSql('beg_ral_di_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
200 addConfigAddSql('beg_new_mem_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
201 addConfigAddSql('beg_notify_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
202 addConfigAddSql('beg_notify_wait', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 30');
203 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
204 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_en_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
205 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_di_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
207 // Update notes (these will be set as task text!)
208 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.");
211 case '0.1.8': // SQL queries for v0.1.8
212 // Update notes (these will be set as task text!)
213 setExtensionUpdateNotes("Fehler im täglichen Reset beseitigt.");
216 case '0.1.9': // SQL queries for v0.1.9
217 // Update notes (these will be set as task text!)
218 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verknüpften Modules eingebunden.");
221 case '0.2.0': // SQL queries for v0.2.0
222 // Update notes (these will be set as task text!)
223 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als nächstes nach wer als letztes Online war umsortiert.");
226 case '0.2.1': // SQL queries for v0.2.1
227 // Update notes (these will be set as task text!)
228 setExtensionUpdateNotes("Fehler <strong>unknown column 'userid'</strong> beseitigt.");
231 case '0.2.2': // SQL queries for v0.2.2
232 addConfigAddSql('beg_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
234 // Update notes (these will be set as task text!)
235 setExtensionUpdateNotes("Eigene Mitglied-Ids sind von der Bettel-Rallye nun ausschliessbar.");
238 case '0.2.3': // SQL queries for v0.2.3
239 // Update notes (these will be set as task text!)
240 setExtensionUpdateNotes("Abfrage des Account-Status eingebaut. Es können nur bestätigte Accounts betteln.");
243 case '0.2.4': // SQL queries for v0.2.4
244 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=1 WHERE `what`='beg' LIMIT 1");
246 // Update notes (these will be set as task text!)
247 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
250 case '0.2.5': // SQL queries for v0.2.5
251 // Update notes (these will be set as task text!)
252 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
255 case '0.2.6': // SQL queries for v0.2.6
256 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_beg_ips` ADD `sid` VARCHAR(255) NOT NULL DEFAULT ''");
257 addConfigAddSql('beg_pay_mode', "ENUM('IMG','JS','BOTH','NONE') DEFAULT 'NONE' NOT NULL ;");
259 // Update notes (these will be set as task text!)
260 setExtensionUpdateNotes("IP-Lock mit Session-Id erweitert. Tracker-Script eingefügt, dass das Einbinden des Bettel-Links als Bild/Script/CSS verhindern soll.");
263 case '0.2.7': // SQL queries for v0.2.7
264 addConfigChangeSql('beg_ral_en_notify', 'beg_ral_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
265 addConfigChangeSql('beg_ral_di_notify', 'beg_ral_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
266 addConfigChangeSql('beg_new_mem_notify', 'beg_new_member_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
267 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_en_notify` `beg_ral_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
268 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_di_notify` `beg_ral_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
270 // Update notes (these will be set as task text!)
271 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
274 case '0.2.8': // SQL queries for v0.2.8
275 addConfigChangeSql('beg_ral_enable_notify', 'beg_rallye_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
276 addConfigChangeSql('beg_ral_disable_notify', 'beg_rallye_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
277 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_enable_notify` `beg_rallye_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
278 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_disable_notify` `beg_rallye_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.9': // SQL queries for v0.2.9
285 addDropTableSql('beg_referals');
286 addCreateTableSql('beg_referals', "
287 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
288 `userid` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
289 `remote_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
290 `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
291 `referal_url` TINYTEXT NOT NULL,
294 'Recorded Referal URLs');
297 addAdminMenuSql('user','list_beg_referal_urls','Bettel-Referals auflisten','Listet alle Bettellink-Aufrufe inklusive Referal-URL auf.','13');
299 // Update notes (these will be set as task text!)
300 setExtensionUpdateNotes("Loggen der Referal-URLs hinzugefügt.");
303 case '0.3.0': // SQL queries for v0.3.0
304 addConfigDropSql('beg_mode');
305 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('beg','points','LOCKED','DIRECT')");
306 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('monthly_beg','points','LOCKED','DIRECT')");
308 // This depends on ext-sql_patches
309 addExtensionDependency('sql_patches');
312 setExtensionUpdateNotes("Monatliche Bettelrallye und die erbettelten {?POINTS?} werden nun über die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
315 case '0.3.1': // SQL queries for v0.3.1
317 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='beg2'");
318 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `action`='members',`sort`=3 WHERE `what`='beg' LIMIT 1");
319 addMemberMenuSql('rals', 'beg2', 'Bettel-Rallye', 3);
322 setExtensionUpdateNotes("Bettel-Rallye re-hinzugefügt.");
325 case '0.3.2': // SQL queries for v0.3.2
327 addModuleSql('beg', 'Y', 'Y', 'N', 'N');
330 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `title`='Betteln bei {OPEN_CONFIG}MAIN_TITLE{CLOSE_CONFIG}' WHERE `module`='beg' AND `title`='' LIMIT 1");
333 setExtensionUpdateNotes("Modul registriert und bei leerem Titel mit einem Standarttitel versehen.");
338 case 'modify': // When the extension got modified
341 case 'test': // For testing purposes
344 case 'init': // When extension is initialized
345 // Remove old entries
346 $OLD = getBegTimeout();
347 if (getBegUseridTimeout() > $OLD) {
348 $OLD = getBegUseridTimeout();
350 SQL_QUERY('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE (UNIX_TIMESTAMP() - `timeout`) >= ' . ($OLD + 60*60) . '', __FILE__, __LINE__);
352 // Check for beg rallye is active and send mails out
353 if ((isBegRallyeEnabled()) && (isBegNewMemberNotifyEnabled())) {
354 // Include file for sending out mails
355 addIncludeToPool('notify', 'inc/mails/beg_mails.php');
359 default: // Unknown extension mode
360 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));