3cf182bb34eb5b14e81f8a9036927df253c7127c
[mailer.git] / inc / extensions / ext-beg.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 09/25/2004 *
4  * ===================                          Last change: 09/25/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-beg.php                                      *
8  * -------------------------------------------------------------------- *
9  * Short description : Begging link                                     *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Bettel-Link                                      *
12  * -------------------------------------------------------------------- *
13  * $Revision::                                                        $ *
14  * $Date::                                                            $ *
15  * $Tag:: 0.2.1-FINAL                                                 $ *
16  * $Author::                                                          $ *
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                  *
21  *                                                                      *
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.                                  *
26  *                                                                      *
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.                         *
31  *                                                                      *
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,               *
35  * MA  02110-1301  USA                                                  *
36  ************************************************************************/
37
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
40         die();
41 } // END - if
42
43 // Version number
44 setThisExtensionVersion('0.2.9');
45
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', '0.2.9'));
48
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&uuml;tung usw. k&ouml;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                 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');
59
60                 // Table for IP locks
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 '',
68 KEY (`userid`),
69 PRIMARY KEY (`id`)
70 ) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = 'IP lock data for beg links'");
71                 break;
72
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')");
80                 break;
81
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");
87                 break;
88
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");
94                 break;
95
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 &quot;Solid-Business&quot; eingebaut.");
101                                 break;
102
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> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
106                                 break;
107
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');
110
111                                 // Update notes (these will be set as task text!)
112                                 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standard: 0,1 {?POINTS?})");
113                                 break;
114
115                         case '0.0.4': // SQL queries for v0.0.4
116                                 // Update notes (these will be set as task text!)
117                                 setExtensionUpdateNotes("&Uuml;berlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert (&quot;Unbekannte Spalte <u>beg_points_ma</u>&quot;).");
118                                 break;
119
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&uuml; wurde die Beschreibung aus dem Gastmen&uuml; verwendet.");
123                                 break;
124
125                         case '0.0.6': // SQL queries for v0.0.6
126                                 addConfigAddSql('beg_userid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
127
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.");
130                                 break;
131
132                         case '0.0.8': // SQL queries for v0.0.8
133                                 addConfigAddSql('beg_ip_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800');
134
135                                 // Update notes (these will be set as task text!)
136                                 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugef&uuml;gt.");
137                                 break;
138
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!");
142                                 break;
143
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.");
147                                 break;
148
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.");
152                                 break;
153
154                         case '0.1.2':
155                                 // SQL queries for v0.1.2
156                                 addConfigAddSql('beg_mode', "ENUM('DIRECT','REF') NOT NULL DEFAULT 'REF'");
157                                 addConfigAddSql('beg_ranks', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
158                                 addConfigAddSql('beg_active', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
159                                 addConfigAddSql('beg_rallye', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
160                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_points` FLOAT(21,5) UNSIGNED NOT NULL DEFAULT 0.00000");
161
162                                 $visible = 'N'; $locked = 'Y';
163                                 if (isExtensionActive('beg')) {
164                                         $visible = 'Y';
165                                         $locked = 'N';
166                                 } // END - if
167
168                                 addMemberMenuSql('main','beg2','Bettel-Rallye', $visible, $locked, 7);
169                                 addAdminMenuSql('user','list_beg','Bettel-Rallye','Listet alle Teilnehmer der monatlichen Bettel-Rallye auf.','12');
170
171                                 // Update notes (these will be set as task text!)
172                                 setExtensionUpdateNotes("Optionale Bettel-Rallye m&ouml;glich. Und die erbettelten {?POINTS?} k&ouml;nnen entweder nur dem bettelndem Mitglied direkt oder auch seinem Werber gutgeschrieben werden k&ouml;nnen.");
173                                 break;
174
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&ouml;scht.");
178                                 break;
179
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!");
183                                 break;
184
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&uuml;tung und auch die Bettel-Rallye k&ouml;nnen Sie hier einstellen.' WHERE `what`='config_beg' LIMIT 1");
187
188                                 // Update notes (these will be set as task text!)
189                                 setExtensionUpdateNotes("Fehlendes Template im Admin-Bereich hinzugef&uuml;gt. Im Admin-Bereich Hinweis hinzugef&uuml;gt, wenn Bettel-Rallye inaktiv ist. Bitte Script inc/monthly_beg.php l&ouml;schen!");
190                                 break;
191
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.");
195                                 break;
196
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');
206
207                                 // Update notes (these will be set as task text!)
208                                 setExtensionUpdateNotes("Die Mitglieder k&ouml;nnen nun optional automatisch &uuml;ber eine aktivierte und/oder deaktivierte Bettel-Rallye informiert werden. Beide Benachrichtigungen k&ouml;nnen Sie unter <strong>Einstellungen --&gt; 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.");
209                                 break;
210
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&auml;glichen Reset beseitigt.");
214                                 break;
215
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&uuml;pften Modules eingebunden.");
219                                 break;
220
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&auml;chstes nach wer als letztes Online war umsortiert.");
224                                 break;
225
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 &#39;userid&#39;</strong> beseitigt.");
229                                 break;
230
231                         case '0.2.2': // SQL queries for v0.2.2
232                                 addConfigAddSql('beg_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
233
234                                 // Update notes (these will be set as task text!)
235                                 setExtensionUpdateNotes("Eigene Mitglieder-Ids sind von der Bettel-Rallye nun ausschliessbar.");
236                                 break;
237
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&ouml;nnen nur best&auml;tigte Accounts betteln.");
241                                 break;
242
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");
245                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals', `sort`=3, `title`='Bettel-Rallye' WHERE `what`='beg2' LIMIT 1");
246
247                                 // Update notes (these will be set as task text!)
248                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
249                                 break;
250
251                         case '0.2.5': // SQL queries for v0.2.5
252                                 // Update notes (these will be set as task text!)
253                                 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
254                                 break;
255
256                         case '0.2.6': // SQL queries for v0.2.6
257                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_beg_ips` ADD `sid` VARCHAR(255) NOT NULL DEFAULT ''");
258                                 addConfigAddSql('beg_pay_mode', "ENUM('IMG','JS','BOTH','NONE') DEFAULT 'NONE' NOT NULL ;");
259
260                                 // Update notes (these will be set as task text!)
261                                 setExtensionUpdateNotes("IP-Lock mit Session-Id erweitert. Tracker-Script eingef&uuml;gt, dass das Einbinden des Bettel-Links als Bild/Script/CSS verhindern soll.");
262                                 break;
263
264                         case '0.2.7': // SQL queries for v0.2.7
265                                 addConfigChangeSql('beg_ral_en_notify', 'beg_ral_enable_notify`', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
266                                 addConfigChangeSql('beg_ral_di_notify', 'beg_ral_disable_notify`', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
267                                 addConfigChangeSql('beg_new_mem_notify', 'beg_new_member_notify`', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
268                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_en_notify` `beg_ral_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
269                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_di_notify` `beg_ral_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
270
271                                 // Update notes (these will be set as task text!)
272                                 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
273                                 break;
274
275                         case '0.2.8': // SQL queries for v0.2.8
276                                 addConfigChangeSql('beg_ral_enable_notify', 'beg_rallye_enable_notify`', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
277                                 addConfigChangeSql('beg_ral_disable_notify', 'beg_rallye_disable_notify`', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
278                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_enable_notify` `beg_rallye_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
279                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_disable_notify` `beg_rallye_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
280
281                                 // Update notes (these will be set as task text!)
282                                 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
283                                 break;
284
285                         case '0.2.9': // SQL queries for v0.2.9
286                                 addDropTableSql('beg_referals');
287                                 addCreateTableSql('beg_referals', "(
288 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
289 `userid` BIGINT(20) UNSIGNED NULL DEFAULT NULL ,
290 `remote_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
291 `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
292 `referal_url` TINYTEXT NOT NULL ,
293 INDEX (`userid`)
294 ) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = 'Recorded Referal URLs'");
295
296                                 // Add admin menu
297                                 addAdminMenuSql('user','list_beg_referal_urls','Bettel-Referals auflisten','Listet alle Bettellink-Aufrufe inklusive Referal-URL auf.','13');
298
299                                 // Update notes (these will be set as task text!)
300                                 setExtensionUpdateNotes("Loggen der Referal-URLs hinzugef&uuml;gt.");
301                                 break;
302                 } // END - switch
303                 break;
304
305         case 'modify': // When the extension got modified
306                 break;
307
308         case 'test': // For testing purposes
309                 break;
310
311         case 'init': // When extension is initialized
312                 // Remove old entries
313                 $OLD = getBegTimeout();
314                 if (getBegUseridTimeout() > $OLD) $OLD = getBegUseridTimeout();
315                 SQL_QUERY('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE `timeout` < (UNIX_TIMESTAMP() - ' . ($OLD + 60*60) . ')', __FILE__, __LINE__);
316
317                 // Check for beg rallye is active and send mails out
318                 if ((isBegRallyeEnabled()) && (isBegNewMemberNotifyEnabled())) {
319                         // Include file for sending out mails
320                         addIncludeToPool('notify', 'inc/mails/beg_mails.php');
321                 } // END - if
322                 break;
323
324         default: // Unknown extension mode
325                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
326                 break;
327 } // END - switch
328
329 // [EOF]
330 ?>