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 * Needs to be in all Files and every File needs "svn propset *
18 * svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
19 * -------------------------------------------------------------------- *
20 * Copyright (c) 2003 - 2009 by Roland Haeder *
21 * Copyright (c) 2009, 2010 by Mailer Developer Team *
22 * For more information visit: http://www.mxchange.org *
24 * This program is free software; you can redistribute it and/or modify *
25 * it under the terms of the GNU General Public License as published by *
26 * the Free Software Foundation; either version 2 of the License, or *
27 * (at your option) any later version. *
29 * This program is distributed in the hope that it will be useful, *
30 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
31 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
32 * GNU General Public License for more details. *
34 * You should have received a copy of the GNU General Public License *
35 * along with this program; if not, write to the Free Software *
36 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
38 ************************************************************************/
40 // Some security stuff...
41 if (!defined('__SECURITY')) {
46 setThisExtensionVersion('0.2.6');
48 // Version history array (add more with , '0.1.0' and so on)
49 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'));
51 switch (getExtensionMode()) {
52 case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
53 // SQL commands to run
54 addAdminMenuSql('setup','config_beg','Bettel-Link','IP-Sperre, {OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Vergütung usw. können Sie hier einstellen.', 10);
55 addGuestMenuSql('main','beg','{OPEN_CONFIG}POINTS{CLOSE_CONFIG} erbetteln!','N','Y',4);
56 addMemberMenuSql('main','beg','Ihr Bettel-Link','N','Y',6);
57 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_timeout BIGINT(20) UNSIGNED NOT NULL DEFAULT '600'");
58 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_userid_timeout BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800");
59 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD 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");
61 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_beg_ips`');
62 addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_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 '',
69 ) TYPE={?_TABLE_TYPE?}");
72 case 'remove': // Do stuff when removing extension
73 // SQL commands to run
74 addExtensionSql('DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_beg_ips`');
75 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_beg' OR `what`='list_beg'");
76 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='beg'");
77 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='beg' OR `what`='beg2'");
80 case 'activate': // Do stuff when admin activates this extension
81 // SQL commands to run
82 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y', `locked`='N' WHERE `what`='beg' LIMIT 1");
83 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what`='beg' LIMIT 1");
84 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='N' WHERE `module`='beg' LIMIT 1");
87 case 'deactivate': // Do stuff when admin deactivates this extension
88 // SQL commands to run
89 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N', `locked`='Y' WHERE `what`='beg' LIMIT 1");
90 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `what` IN('beg','beg2') LIMIT 2");
91 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
94 case 'update': // Update an extension
95 switch (getCurrentExtensionVersion()) {
96 case '0.0.1': // SQL queries for v0.0.1
97 // Update notes (these will be set as task text!)
98 setExtensionUpdateNotes("Design "Solid-Business" eingebaut.");
101 case '0.0.2': // SQL queries for v0.0.2
102 // Update notes (these will be set as task text!)
103 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
106 case '0.0.3': // SQL queries for v0.0.3
107 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_points_max FLOAT(20,5) UNSIGNED NOT NULL DEFAULT '0.10000'");
109 // Update notes (these will be set as task text!)
110 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standart: 0,1 {?POINTS?})");
113 case '0.0.4': // SQL queries for v0.0.4
114 // Update notes (these will be set as task text!)
115 setExtensionUpdateNotes("Überlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert ("Unbekannte Spalte <u>beg_points_ma</u>").");
118 case '0.0.5': // SQL queries for v0.0.5
119 // Update notes (these will be set as task text!)
120 setExtensionUpdateNotes("Im Mitgliedsmenü wurde die Beschreibung aus dem Gastmenü verwendet.");
123 case '0.0.6': // SQL queries for v0.0.6
124 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_userid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
126 // Update notes (these will be set as task text!)
127 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.");
130 case '0.0.8': // SQL queries for v0.0.8
131 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_ip_timeout BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800");
133 // Update notes (these will be set as task text!)
134 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugefügt.");
137 case '0.0.9': // SQL queries for v0.0.9
138 // Update notes (these will be set as task text!)
139 setExtensionUpdateNotes("Bitte verschieben Sie die beg-Templates (Ordner: {?PATH?}/templates/".getLanguage()."/html/) in den neuen Order beg!");
142 case '0.1.0': // SQL queries for v0.2.1
143 // Update notes (these will be set as task text!)
144 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
147 case '0.1.1': // SQL queries for v0.1.1
148 // Update notes (these will be set as task text!)
149 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
153 // SQL queries for v0.1.2
154 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_mode` ENUM('DIRECT','REF') NOT NULL DEFAULT 'REF'");
155 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_ranks` TINYINT(3) UNSIGNED NOT NULL DEFAULT 10");
156 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_active` ENUM('Y','N') NOT NULL DEFAULT 'N'");
157 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_rallye` ENUM('Y','N') NOT NULL DEFAULT 'N'");
158 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_points` FLOAT(21,5) UNSIGNED NOT NULL DEFAULT 0.00000");
160 $VIS = 'N'; $LOCKED = 'Y';
161 if (isExtensionActive('beg')) { $VIS = 'Y'; $LOCKED = 'N'; }
163 addMemberMenuSql('main','beg2','Bettel-Rallye',$VIS,$LOCKED,7);
164 addAdminMenuSql('user','list_beg','Bettel-Rallye','Listet alle Teilnehmer der monatlichen Bettel-Rallye auf.','12');
166 // Update notes (these will be set as task text!)
167 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.");
170 case '0.1.3': // SQL queries for v0.1.3
171 // Update notes (these will be set as task text!)
172 setExtensionUpdateNotes("Erbettelte {?POINTS?} werden nach Deaktivierung der Bettel-Rallye gelöscht.");
175 case '0.1.4': // SQL queries for v0.1.4
176 // Update notes (these will be set as task text!)
177 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen (<strong>member_list_beg.tpl</strong>); Template <strong>member_beg_404.tpl</strong> fehlte!");
180 case '0.1.5': // SQL queries for v0.1.5
181 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");
183 // Update notes (these will be set as task text!)
184 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!");
187 case '0.1.6': // SQL queries for v0.1.6
188 // Update notes (these will be set as task text!)
189 setExtensionUpdateNotes("Es wurden immer dem ersten bettelndem Mitglied die {?POINTS?} gutgeschrieben.");
192 case '0.1.7': // SQL queries for v0.1.7
193 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_ral_en_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
194 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_ral_di_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
195 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_new_mem_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
196 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_notify_bonus` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
197 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_notify_wait` BIGINT(20) UNSIGNED NOT NULL DEFAULT '30'");
198 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
199 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_en_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
200 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_di_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
202 // Update notes (these will be set as task text!)
203 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.");
206 case '0.1.8': // SQL queries for v0.1.8
207 // Update notes (these will be set as task text!)
208 setExtensionUpdateNotes("Fehler im täglichen Reset beseitigt.");
211 case '0.1.9': // SQL queries for v0.1.9
212 // Update notes (these will be set as task text!)
213 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verknüpften Modules eingebunden.");
216 case '0.2.0': // SQL queries for v0.2.0
217 // Update notes (these will be set as task text!)
218 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als nächstes nach wer als letztes Online war umsortiert.");
221 case '0.2.1': // SQL queries for v0.2.1
222 // Update notes (these will be set as task text!)
223 setExtensionUpdateNotes("Fehler <strong>unknown column 'userid'</strong> beseitigt.");
226 case '0.2.2': // SQL queries for v0.2.2
227 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_include_own ENUM('Y','N') NOT NULL DEFAULT 'N'");
229 // Update notes (these will be set as task text!)
230 setExtensionUpdateNotes("Eigene Mitglieder-Ids sind von der Bettel-Rallye nun ausschliessbar.");
233 case '0.2.3': // SQL queries for v0.2.3
234 // Update notes (these will be set as task text!)
235 setExtensionUpdateNotes("Abfrage des Account-Status eingebaut. Es können nur bestätigte Accounts betteln.");
238 case '0.2.4': // SQL queries for v0.2.4
239 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=1 WHERE `what`='beg' LIMIT 1");
240 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals', `sort`=3, `title`='Bettel-Rallye' WHERE `what`='beg2' LIMIT 1");
242 // Update notes (these will be set as task text!)
243 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
246 case '0.2.5': // SQL queries for v0.2.5
247 // Update notes (these will be set as task text!)
248 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
251 case '0.2.6': // SQL queries for v0.2.6
252 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_beg_ips` ADD sid VARCHAR(255) NOT NULL DEFAULT ''");
253 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_pay_mode` ENUM('IMG','JS','BOTH','NONE') DEFAULT 'NONE' NOT NULL ;");
255 // Update notes (these will be set as task text!)
256 setExtensionUpdateNotes("IP-Lock mit Session-Id erweitert. Tracker-Script eingefügt, dass das Einbinden des Bettel-Links als Bild/Script/CSS verhindern soll.");
261 case 'modify': // When the extension got modified
264 case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
267 case 'init': // When extension is initialized
268 // Remove old entries
269 $OLD = getConfig('beg_timeout');
270 if (getConfig('beg_userid_timeout') > $OLD) $OLD = getConfig('beg_userid_timeout');
271 $result_ext = SQL_QUERY("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE `timeout` < (UNIX_TIMESTAMP() -".($OLD + 60*60).")", __FILE__, __LINE__);
273 // Check for beg rallye is active and send mails out
274 if ((getConfig('beg_rallye') == 'Y') && (getConfig('beg_new_mem_notify') == 'Y')) {
275 // Include file for sending out mails
276 addIncludeToPool('notify', 'inc/mails/beg_mails.php');
280 default: // Unknown extension mode
281 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));