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, 2010 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.2.8');
46 // Version history array (add more with , '0.1.0' and so on)
47 setExtensionVersionHistory(array('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'));
49 switch (getExtensionMode()) {
50 case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
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!','N','Y',4);
54 addMemberMenuSql('main','beg','Ihr Bettel-Link','N','Y',6);
55 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_timeout` BIGINT(20) UNSIGNED NOT NULL DEFAULT '600'");
56 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_userid_timeout` BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800");
57 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `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");
59 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_beg_ips`');
60 addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_beg_ips` (
61 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
62 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
63 `remote_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
64 `timeout` VARCHAR(10) NOT NULL DEFAULT '',
67 ) TYPE={?_TABLE_TYPE?}");
70 case 'remove': // Do stuff when removing extension
71 // SQL commands to run
72 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_beg_ips`');
73 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_beg' OR `what`='list_beg'");
74 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='beg'");
75 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='beg' OR `what`='beg2'");
78 case 'activate': // Do stuff when admin activates this extension
79 // SQL commands to run
80 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y', `locked`='N' WHERE `what`='beg' LIMIT 1");
81 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what`='beg' LIMIT 1");
82 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='N' WHERE `module`='beg' LIMIT 1");
85 case 'deactivate': // Do stuff when admin deactivates this extension
86 // SQL commands to run
87 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N', `locked`='Y' WHERE `what`='beg' LIMIT 1");
88 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `what` IN('beg','beg2') LIMIT 2");
89 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
92 case 'update': // Update an extension
93 switch (getCurrentExtensionVersion()) {
94 case '0.0.1': // SQL queries for v0.0.1
95 // Update notes (these will be set as task text!)
96 setExtensionUpdateNotes("Design "Solid-Business" eingebaut.");
99 case '0.0.2': // SQL queries for v0.0.2
100 // Update notes (these will be set as task text!)
101 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
104 case '0.0.3': // SQL queries for v0.0.3
105 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_points_max FLOAT(20,5) UNSIGNED NOT NULL DEFAULT '0.10000'");
107 // Update notes (these will be set as task text!)
108 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standart: 0,1 {?POINTS?})");
111 case '0.0.4': // SQL queries for v0.0.4
112 // Update notes (these will be set as task text!)
113 setExtensionUpdateNotes("Überlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert ("Unbekannte Spalte <u>beg_points_ma</u>").");
116 case '0.0.5': // SQL queries for v0.0.5
117 // Update notes (these will be set as task text!)
118 setExtensionUpdateNotes("Im Mitgliedsmenü wurde die Beschreibung aus dem Gastmenü verwendet.");
121 case '0.0.6': // SQL queries for v0.0.6
122 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_userid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
124 // Update notes (these will be set as task text!)
125 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.");
128 case '0.0.8': // SQL queries for v0.0.8
129 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_ip_timeout BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800");
131 // Update notes (these will be set as task text!)
132 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugefügt.");
135 case '0.0.9': // SQL queries for v0.0.9
136 // Update notes (these will be set as task text!)
137 setExtensionUpdateNotes("Bitte verschieben Sie die beg-Templates (Ordner: {?PATH?}/templates/".getLanguage()."/html/) in den neuen Order beg!");
140 case '0.1.0': // SQL queries for v0.2.1
141 // Update notes (these will be set as task text!)
142 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
145 case '0.1.1': // SQL queries for v0.1.1
146 // Update notes (these will be set as task text!)
147 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
151 // SQL queries for v0.1.2
152 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_mode` ENUM('DIRECT','REF') NOT NULL DEFAULT 'REF'");
153 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_ranks` TINYINT(3) UNSIGNED NOT NULL DEFAULT 10");
154 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_active` ENUM('Y','N') NOT NULL DEFAULT 'N'");
155 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_rallye` ENUM('Y','N') NOT NULL DEFAULT 'N'");
156 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_points` FLOAT(21,5) UNSIGNED NOT NULL DEFAULT 0.00000");
158 $visible = 'N'; $locked = 'Y';
159 if (isExtensionActive('beg')) {
164 addMemberMenuSql('main','beg2','Bettel-Rallye', $visible, $locked, 7);
165 addAdminMenuSql('user','list_beg','Bettel-Rallye','Listet alle Teilnehmer der monatlichen Bettel-Rallye auf.','12');
167 // Update notes (these will be set as task text!)
168 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.");
171 case '0.1.3': // SQL queries for v0.1.3
172 // Update notes (these will be set as task text!)
173 setExtensionUpdateNotes("Erbettelte {?POINTS?} werden nach Deaktivierung der Bettel-Rallye gelöscht.");
176 case '0.1.4': // SQL queries for v0.1.4
177 // Update notes (these will be set as task text!)
178 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen (<strong>member_list_beg.tpl</strong>); Template <strong>member_beg_404.tpl</strong> fehlte!");
181 case '0.1.5': // SQL queries for v0.1.5
182 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");
184 // Update notes (these will be set as task text!)
185 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!");
188 case '0.1.6': // SQL queries for v0.1.6
189 // Update notes (these will be set as task text!)
190 setExtensionUpdateNotes("Es wurden immer dem ersten bettelndem Mitglied die {?POINTS?} gutgeschrieben.");
193 case '0.1.7': // SQL queries for v0.1.7
194 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_ral_en_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
195 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_ral_di_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
196 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_new_mem_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
197 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_notify_bonus` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
198 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_notify_wait` BIGINT(20) UNSIGNED NOT NULL DEFAULT '30'");
199 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
200 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_en_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
201 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_di_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
203 // Update notes (these will be set as task text!)
204 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.");
207 case '0.1.8': // SQL queries for v0.1.8
208 // Update notes (these will be set as task text!)
209 setExtensionUpdateNotes("Fehler im täglichen Reset beseitigt.");
212 case '0.1.9': // SQL queries for v0.1.9
213 // Update notes (these will be set as task text!)
214 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verknüpften Modules eingebunden.");
217 case '0.2.0': // SQL queries for v0.2.0
218 // Update notes (these will be set as task text!)
219 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als nächstes nach wer als letztes Online war umsortiert.");
222 case '0.2.1': // SQL queries for v0.2.1
223 // Update notes (these will be set as task text!)
224 setExtensionUpdateNotes("Fehler <strong>unknown column 'userid'</strong> beseitigt.");
227 case '0.2.2': // SQL queries for v0.2.2
228 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_include_own ENUM('Y','N') NOT NULL DEFAULT 'N'");
230 // Update notes (these will be set as task text!)
231 setExtensionUpdateNotes("Eigene Mitglieder-Ids sind von der Bettel-Rallye nun ausschliessbar.");
234 case '0.2.3': // SQL queries for v0.2.3
235 // Update notes (these will be set as task text!)
236 setExtensionUpdateNotes("Abfrage des Account-Status eingebaut. Es können nur bestätigte Accounts betteln.");
239 case '0.2.4': // SQL queries for v0.2.4
240 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=1 WHERE `what`='beg' LIMIT 1");
241 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals', `sort`=3, `title`='Bettel-Rallye' WHERE `what`='beg2' LIMIT 1");
243 // Update notes (these will be set as task text!)
244 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
247 case '0.2.5': // SQL queries for v0.2.5
248 // Update notes (these will be set as task text!)
249 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
252 case '0.2.6': // SQL queries for v0.2.6
253 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_beg_ips` ADD `sid` VARCHAR(255) NOT NULL DEFAULT ''");
254 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_pay_mode` ENUM('IMG','JS','BOTH','NONE') DEFAULT 'NONE' NOT NULL ;");
256 // Update notes (these will be set as task text!)
257 setExtensionUpdateNotes("IP-Lock mit Session-Id erweitert. Tracker-Script eingefügt, dass das Einbinden des Bettel-Links als Bild/Script/CSS verhindern soll.");
260 case '0.2.7': // SQL queries for v0.2.7
261 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` CHANGE `beg_ral_en_notify` `beg_ral_enable_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
262 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` CHANGE `beg_ral_di_notify` `beg_ral_disable_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
263 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` CHANGE `beg_new_mem_notify` `beg_new_member_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
264 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_en_notify` `beg_ral_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
265 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_di_notify` `beg_ral_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
267 // Update notes (these will be set as task text!)
268 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
271 case '0.2.8': // SQL queries for v0.2.8
272 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` CHANGE `beg_ral_enable_notify` `beg_rallye_enable_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
273 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` CHANGE `beg_ral_disable_notify` `beg_rallye_disable_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
274 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_enable_notify` `beg_rallye_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
275 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_disable_notify` `beg_rallye_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
277 // Update notes (these will be set as task text!)
278 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
283 case 'modify': // When the extension got modified
286 case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
289 case 'init': // When extension is initialized
290 // Remove old entries
291 $OLD = getConfig('beg_timeout');
292 if (getConfig('beg_userid_timeout') > $OLD) $OLD = getConfig('beg_userid_timeout');
293 $result_ext = SQL_QUERY('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE `timeout` < (UNIX_TIMESTAMP() - ' . ($OLD + 60*60) . ')', __FILE__, __LINE__);
295 // Check for beg rallye is active and send mails out
296 if ((isBegRallyeEnabled()) && (isBegNewMemberNotifyEnabled())) {
297 // Include file for sending out mails
298 addIncludeToPool('notify', 'inc/mails/beg_mails.php');
302 default: // Unknown extension mode
303 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));