Some CSS classes purged, ol.listing added, extensions fixed:
[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.3.1');
45
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'));
48
49 switch (getExtensionMode()) {
50         case 'register': // Do stuff when installation is running
51                 // SQL commands to run
52                 // - Menu systems
53                 addAdminMenuSql('setup', 'config_beg', 'Bettel-Link', 'IP-Sperre, {OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Verg&uuml;tung usw. k&ouml;nnen Sie hier einstellen.', 10);
54                 addGuestMenuSql('members', 'beg', '{OPEN_CONFIG}POINTS{CLOSE_CONFIG} erbetteln!', 4);
55                 addMemberMenuSql('main', 'beg', 'Ihr Bettel-Link', 6);
56                 // - Configuration
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');
61
62                 // Table for IP locks
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 '',
70 PRIMARY KEY (`id`),
71 INDEX (`userid`)",
72                         'IP lock data for beg links');
73                 break;
74
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')");
82                 break;
83
84         case 'activate': // Do stuff when admin activates this extension
85                 // SQL commands to run
86                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y', `locked`='N' WHERE `what`='beg' LIMIT 1");
87                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what` IN ('beg','beg2') LIMIT 2");
88                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='N' WHERE `module`='beg' LIMIT 1");
89                 break;
90
91         case 'deactivate': // Do stuff when admin deactivates this extension
92                 // SQL commands to run
93                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N', `locked`='Y' WHERE `what`='beg' LIMIT 1");
94                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `what` IN('beg','beg2') LIMIT 2");
95                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
96                 break;
97
98         case 'update': // Update an extension
99                 switch (getCurrentExtensionVersion()) {
100                         case '0.0.1': // SQL queries for v0.0.1
101                                 // Update notes (these will be set as task text!)
102                                 setExtensionUpdateNotes("Design &quot;Solid-Business&quot; eingebaut.");
103                                 break;
104
105                         case '0.0.2': // SQL queries for v0.0.2
106                                 // Update notes (these will be set as task text!)
107                                 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
108                                 break;
109
110                         case '0.0.3': // SQL queries for v0.0.3
111                                 addConfigAddSql('beg_points_max', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.10000');
112
113                                 // Update notes (these will be set as task text!)
114                                 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standard: 0,1 {?POINTS?})");
115                                 break;
116
117                         case '0.0.4': // SQL queries for v0.0.4
118                                 // Update notes (these will be set as task text!)
119                                 setExtensionUpdateNotes("&Uuml;berlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert (&quot;Unbekannte Spalte <u>beg_points_ma</u>&quot;).");
120                                 break;
121
122                         case '0.0.5': // SQL queries for v0.0.5
123                                 // Update notes (these will be set as task text!)
124                                 setExtensionUpdateNotes("Im Mitgliedsmen&uuml; wurde die Beschreibung aus dem Gastmen&uuml; verwendet.");
125                                 break;
126
127                         case '0.0.6': // SQL queries for v0.0.6
128                                 addConfigAddSql('beg_userid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
129
130                                 // Update notes (these will be set as task text!)
131                                 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                                 break;
133
134                         case '0.0.8': // SQL queries for v0.0.8
135                                 addConfigAddSql('beg_ip_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800');
136
137                                 // Update notes (these will be set as task text!)
138                                 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugef&uuml;gt.");
139                                 break;
140
141                         case '0.0.9': // SQL queries for v0.0.9
142                                 // Update notes (these will be set as task text!)
143                                 setExtensionUpdateNotes("Bitte verschieben Sie die beg-Templates (Ordner: {?PATH?}/templates/".getLanguage()."/html/) in den neuen Order beg!");
144                                 break;
145
146                         case '0.1.0': // SQL queries for v0.2.1
147                                 // Update notes (these will be set as task text!)
148                                 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
149                                 break;
150
151                         case '0.1.1': // SQL queries for v0.1.1
152                                 // Update notes (these will be set as task text!)
153                                 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
154                                 break;
155
156                         case '0.1.2':
157                                 // SQL queries for v0.1.2
158                                 addConfigAddSql('beg_ranks', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
159                                 addConfigAddSql('beg_active', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
160                                 addConfigAddSql('beg_rallye', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
161                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_points` FLOAT(21,5) UNSIGNED NOT NULL DEFAULT 0.00000");
162
163                                 // Menu system
164                                 addAdminMenuSql('user', 'list_beg', 'Bettel-Rallye', 'Listet alle Teilnehmer der monatlichen Bettel-Rallye auf.', 12);
165
166                                 // Update notes (these will be set as task text!)
167                                 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.");
168                                 break;
169
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&ouml;scht.");
173                                 break;
174
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!");
178                                 break;
179
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&uuml;tung und auch die Bettel-Rallye k&ouml;nnen Sie hier einstellen.' WHERE `what`='config_beg' LIMIT 1");
182
183                                 // Update notes (these will be set as task text!)
184                                 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!");
185                                 break;
186
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.");
190                                 break;
191
192                         case '0.1.7': // SQL queries for v0.1.7
193                                 addConfigAddSql('beg_ral_en_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
194                                 addConfigAddSql('beg_ral_di_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
195                                 addConfigAddSql('beg_new_mem_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
196                                 addConfigAddSql('beg_notify_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
197                                 addConfigAddSql('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');
201
202                                 // Update notes (these will be set as task text!)
203                                 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.");
204                                 break;
205
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&auml;glichen Reset beseitigt.");
209                                 break;
210
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&uuml;pften Modules eingebunden.");
214                                 break;
215
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&auml;chstes nach wer als letztes Online war umsortiert.");
219                                 break;
220
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 &#39;userid&#39;</strong> beseitigt.");
224                                 break;
225
226                         case '0.2.2': // SQL queries for v0.2.2
227                                 addConfigAddSql('beg_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
228
229                                 // Update notes (these will be set as task text!)
230                                 setExtensionUpdateNotes("Eigene Mitglieder-Ids sind von der Bettel-Rallye nun ausschliessbar.");
231                                 break;
232
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&ouml;nnen nur best&auml;tigte Accounts betteln.");
236                                 break;
237
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
241                                 // Update notes (these will be set as task text!)
242                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
243                                 break;
244
245                         case '0.2.5': // SQL queries for v0.2.5
246                                 // Update notes (these will be set as task text!)
247                                 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
248                                 break;
249
250                         case '0.2.6': // SQL queries for v0.2.6
251                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_beg_ips` ADD `sid` VARCHAR(255) NOT NULL DEFAULT ''");
252                                 addConfigAddSql('beg_pay_mode', "ENUM('IMG','JS','BOTH','NONE') DEFAULT 'NONE' NOT NULL ;");
253
254                                 // Update notes (these will be set as task text!)
255                                 setExtensionUpdateNotes("IP-Lock mit Session-Id erweitert. Tracker-Script eingef&uuml;gt, dass das Einbinden des Bettel-Links als Bild/Script/CSS verhindern soll.");
256                                 break;
257
258                         case '0.2.7': // SQL queries for v0.2.7
259                                 addConfigChangeSql('beg_ral_en_notify', 'beg_ral_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
260                                 addConfigChangeSql('beg_ral_di_notify', 'beg_ral_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
261                                 addConfigChangeSql('beg_new_mem_notify', 'beg_new_member_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
262                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_en_notify` `beg_ral_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
263                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_di_notify` `beg_ral_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
264
265                                 // Update notes (these will be set as task text!)
266                                 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
267                                 break;
268
269                         case '0.2.8': // SQL queries for v0.2.8
270                                 addConfigChangeSql('beg_ral_enable_notify', 'beg_rallye_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
271                                 addConfigChangeSql('beg_ral_disable_notify', 'beg_rallye_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
272                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_enable_notify` `beg_rallye_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
273                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_disable_notify` `beg_rallye_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
274
275                                 // Update notes (these will be set as task text!)
276                                 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
277                                 break;
278
279                         case '0.2.9': // SQL queries for v0.2.9
280                                 addDropTableSql('beg_referals');
281                                 addCreateTableSql('beg_referals', "
282 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
283 `userid` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
284 `remote_ip` VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
285 `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
286 `referal_url` TINYTEXT NOT NULL,
287 PRIMARY KEY (`id`),
288 INDEX (`userid`)",
289                                         'Recorded Referal URLs');
290
291                                 // Add admin menu
292                                 addAdminMenuSql('user','list_beg_referal_urls','Bettel-Referals auflisten','Listet alle Bettellink-Aufrufe inklusive Referal-URL auf.','13');
293
294                                 // Update notes (these will be set as task text!)
295                                 setExtensionUpdateNotes("Loggen der Referal-URLs hinzugef&uuml;gt.");
296                                 break;
297
298                         case '0.3.0': // SQL queries for v0.3.0
299                                 addConfigDropSql('beg_mode');
300                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`) VALUES ('beg','points','LOCKED','DIRECT')");
301                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`) VALUES ('monthly_beg','points','LOCKED','DIRECT')");
302
303                                 // This depends on ext-sql_patches
304                                 addExtensionDependency('sql_patches');
305
306                                 // Update notes
307                                 setExtensionUpdateNotes("Monatliche Bettelrallye und die erbettelten {?POINTS?} werden nun &uuml;ber die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
308                                 break;
309
310                         case '0.3.1': // SQL queries for v0.3.1
311                                 // Add/move menu
312                                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='beg2'");
313                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `action`='members',`sort`=3 WHERE `what`='beg' LIMIT 1");
314                                 addMemberMenuSql('rals', 'beg2', 'Bettel-Rallye', 3);
315
316                                 // Update notes
317                                 setExtensionUpdateNotes("Bettel-Rallye re-hinzugef&uuml;gt.");
318                                 break;
319                 } // END - switch
320                 break;
321
322         case 'modify': // When the extension got modified
323                 break;
324
325         case 'test': // For testing purposes
326                 break;
327
328         case 'init': // When extension is initialized
329                 // Remove old entries
330                 $OLD = getBegTimeout();
331                 if (getBegUseridTimeout() > $OLD) {
332                         $OLD = getBegUseridTimeout();
333                 } // END - if
334                 SQL_QUERY('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE (UNIX_TIMESTAMP() - `timeout`) >= ' . ($OLD + 60*60) . '', __FILE__, __LINE__);
335
336                 // Check for beg rallye is active and send mails out
337                 if ((isBegRallyeEnabled()) && (isBegNewMemberNotifyEnabled())) {
338                         // Include file for sending out mails
339                         addIncludeToPool('notify', 'inc/mails/beg_mails.php');
340                 } // END - if
341                 break;
342
343         default: // Unknown extension mode
344                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
345                 break;
346 } // END - switch
347
348 // [EOF]
349 ?>