Wrapper functions introduced for configuration, loaders refactured:
[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                 addDropTableSql('beg_ips');
60                 addCreateTableSql('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 '',
65 `sid` VARCHAR(255) NOT NULL DEFAULT '',
66 KEY (`userid`),
67 PRIMARY KEY (`id`)
68 ) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = 'IP lock data for beg links'");
69                 break;
70
71         case 'remove': // Do stuff when removing extension
72                 // SQL commands to run
73                 addDropTableSql('beg_ips');
74                 addDropTableSql('beg_referals');
75                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN ('config_beg','list_beg','list_beg_referal_urls')");
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` IN ('beg','beg2')");
78                 break;
79
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` IN ('beg','beg2') LIMIT 2");
84                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='N' WHERE `module`='beg' LIMIT 1");
85                 break;
86
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");
92                 break;
93
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 &quot;Solid-Business&quot; eingebaut.");
99                                 break;
100
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> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
104                                 break;
105
106                         case '0.0.3': // SQL queries for v0.0.3
107                                 addConfigAddSql('beg_points_max', "FLOAT(20,5) UNSIGNED NOT NULL DEFAULT '0.10000'");
108
109                                 // Update notes (these will be set as task text!)
110                                 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standard: 0,1 {?POINTS?})");
111                                 break;
112
113                         case '0.0.4': // SQL queries for v0.0.4
114                                 // Update notes (these will be set as task text!)
115                                 setExtensionUpdateNotes("&Uuml;berlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert (&quot;Unbekannte Spalte <u>beg_points_ma</u>&quot;).");
116                                 break;
117
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&uuml; wurde die Beschreibung aus dem Gastmen&uuml; verwendet.");
121                                 break;
122
123                         case '0.0.6': // SQL queries for v0.0.6
124                                 addConfigAddSql('beg_userid', "BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
125
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.");
128                                 break;
129
130                         case '0.0.8': // SQL queries for v0.0.8
131                                 addConfigAddSql('beg_ip_timeout', "BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800");
132
133                                 // Update notes (these will be set as task text!)
134                                 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugef&uuml;gt.");
135                                 break;
136
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!");
140                                 break;
141
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.");
145                                 break;
146
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.");
150                                 break;
151
152                         case '0.1.2':
153                                 // SQL queries for v0.1.2
154                                 addConfigAddSql('beg_mode', "ENUM('DIRECT','REF') NOT NULL DEFAULT 'REF'");
155                                 addConfigAddSql('beg_ranks', "TINYINT(3) UNSIGNED NOT NULL DEFAULT 10");
156                                 addConfigAddSql('beg_active', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
157                                 addConfigAddSql('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");
159
160                                 $visible = 'N'; $locked = 'Y';
161                                 if (isExtensionActive('beg')) {
162                                         $visible = 'Y';
163                                         $locked = 'N';
164                                 } // END - if
165
166                                 addMemberMenuSql('main','beg2','Bettel-Rallye', $visible, $locked, 7);
167                                 addAdminMenuSql('user','list_beg','Bettel-Rallye','Listet alle Teilnehmer der monatlichen Bettel-Rallye auf.','12');
168
169                                 // Update notes (these will be set as task text!)
170                                 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.");
171                                 break;
172
173                         case '0.1.3': // SQL queries for v0.1.3
174                                 // Update notes (these will be set as task text!)
175                                 setExtensionUpdateNotes("Erbettelte {?POINTS?} werden nach Deaktivierung der Bettel-Rallye gel&ouml;scht.");
176                                 break;
177
178                         case '0.1.4': // SQL queries for v0.1.4
179                                 // Update notes (these will be set as task text!)
180                                 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen (<strong>member_list_beg.tpl</strong>); Template <strong>member_beg_404.tpl</strong> fehlte!");
181                                 break;
182
183                         case '0.1.5': // SQL queries for v0.1.5
184                                 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");
185
186                                 // Update notes (these will be set as task text!)
187                                 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!");
188                                 break;
189
190                         case '0.1.6': // SQL queries for v0.1.6
191                                 // Update notes (these will be set as task text!)
192                                 setExtensionUpdateNotes("Es wurden immer dem ersten bettelndem Mitglied die {?POINTS?} gutgeschrieben.");
193                                 break;
194
195                         case '0.1.7': // SQL queries for v0.1.7
196                                 addConfigAddSql('beg_ral_en_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
197                                 addConfigAddSql('beg_ral_di_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
198                                 addConfigAddSql('beg_new_mem_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
199                                 addConfigAddSql('beg_notify_bonus', "FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
200                                 addConfigAddSql('beg_notify_wait', "BIGINT(20) UNSIGNED NOT NULL DEFAULT '30'");
201                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
202                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_en_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
203                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_ral_di_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
204
205                                 // Update notes (these will be set as task text!)
206                                 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.");
207                                 break;
208
209                         case '0.1.8': // SQL queries for v0.1.8
210                                 // Update notes (these will be set as task text!)
211                                 setExtensionUpdateNotes("Fehler im t&auml;glichen Reset beseitigt.");
212                                 break;
213
214                         case '0.1.9': // SQL queries for v0.1.9
215                                 // Update notes (these will be set as task text!)
216                                 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verkn&uuml;pften Modules eingebunden.");
217                                 break;
218
219                         case '0.2.0': // SQL queries for v0.2.0
220                                 // Update notes (these will be set as task text!)
221                                 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als n&auml;chstes nach wer als letztes Online war umsortiert.");
222                                 break;
223
224                         case '0.2.1': // SQL queries for v0.2.1
225                                 // Update notes (these will be set as task text!)
226                                 setExtensionUpdateNotes("Fehler <strong>unknown column &#39;userid&#39;</strong> beseitigt.");
227                                 break;
228
229                         case '0.2.2': // SQL queries for v0.2.2
230                                 addConfigAddSql('beg_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
231
232                                 // Update notes (these will be set as task text!)
233                                 setExtensionUpdateNotes("Eigene Mitglieder-Ids sind von der Bettel-Rallye nun ausschliessbar.");
234                                 break;
235
236                         case '0.2.3': // SQL queries for v0.2.3
237                                 // Update notes (these will be set as task text!)
238                                 setExtensionUpdateNotes("Abfrage des Account-Status eingebaut. Es k&ouml;nnen nur best&auml;tigte Accounts betteln.");
239                                 break;
240
241                         case '0.2.4': // SQL queries for v0.2.4
242                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=1 WHERE `what`='beg' LIMIT 1");
243                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals', `sort`=3, `title`='Bettel-Rallye' WHERE `what`='beg2' LIMIT 1");
244
245                                 // Update notes (these will be set as task text!)
246                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
247                                 break;
248
249                         case '0.2.5': // SQL queries for v0.2.5
250                                 // Update notes (these will be set as task text!)
251                                 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
252                                 break;
253
254                         case '0.2.6': // SQL queries for v0.2.6
255                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_beg_ips` ADD `sid` VARCHAR(255) NOT NULL DEFAULT ''");
256                                 addConfigAddSql('beg_pay_mode', "ENUM('IMG','JS','BOTH','NONE') DEFAULT 'NONE' NOT NULL ;");
257
258                                 // Update notes (these will be set as task text!)
259                                 setExtensionUpdateNotes("IP-Lock mit Session-Id erweitert. Tracker-Script eingef&uuml;gt, dass das Einbinden des Bettel-Links als Bild/Script/CSS verhindern soll.");
260                                 break;
261
262                         case '0.2.7': // SQL queries for v0.2.7
263                                 addConfigChangeSql('beg_ral_en_notify', 'beg_ral_enable_notify`', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
264                                 addConfigChangeSql('beg_ral_di_notify', 'beg_ral_disable_notify`', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
265                                 addConfigChangeSql('beg_new_mem_notify', 'beg_new_member_notify`', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
266                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_en_notify` `beg_ral_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
267                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_di_notify` `beg_ral_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
268
269                                 // Update notes (these will be set as task text!)
270                                 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
271                                 break;
272
273                         case '0.2.8': // SQL queries for v0.2.8
274                                 addConfigChangeSql('beg_ral_enable_notify', 'beg_rallye_enable_notify`', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
275                                 addConfigChangeSql('beg_ral_disable_notify', 'beg_rallye_disable_notify`', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
276                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_enable_notify` `beg_rallye_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
277                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `beg_ral_disable_notify` `beg_rallye_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
278
279                                 // Update notes (these will be set as task text!)
280                                 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
281                                 break;
282
283                         case '0.2.9': // SQL queries for v0.2.9
284                                 addDropTableSql('beg_referals');
285                                 addCreateTableSql('beg_referals', "(
286 `id` BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
287 `userid` BIGINT( 20 ) UNSIGNED NULL DEFAULT NULL ,
288 `remote_ip` VARCHAR( 15 ) NOT NULL DEFAULT '0.0.0.0',
289 `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
290 `referal_url` TINYTEXT NOT NULL ,
291 INDEX ( `userid` )
292 ) ENGINE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = 'Recorded Referal URLs'");
293
294                                 // Add admin menu
295                                 addAdminMenuSql('user','list_beg_referal_urls','Bettel-Referals auflisten','Listet alle Bettellink-Aufrufe inklusive Referal-URL auf.','13');
296
297                                 // Update notes (these will be set as task text!)
298                                 setExtensionUpdateNotes("Loggen der Referal-URLs hinzugef&uuml;gt.");
299                                 break;
300                 } // END - switch
301                 break;
302
303         case 'modify': // When the extension got modified
304                 break;
305
306         case 'test': // For testing purposes
307                 break;
308
309         case 'init': // When extension is initialized
310                 // Remove old entries
311                 $OLD = getBegTimeout();
312                 if (getBegUseridTimeout() > $OLD) $OLD = getBegUseridTimeout();
313                 SQL_QUERY('DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE `timeout` < (UNIX_TIMESTAMP() - ' . ($OLD + 60*60) . ')', __FILE__, __LINE__);
314
315                 // Check for beg rallye is active and send mails out
316                 if ((isBegRallyeEnabled()) && (isBegNewMemberNotifyEnabled())) {
317                         // Include file for sending out mails
318                         addIncludeToPool('notify', 'inc/mails/beg_mails.php');
319                 } // END - if
320                 break;
321
322         default: // Unknown extension mode
323                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
324                 break;
325 } // END - switch
326
327 // [EOF]
328 ?>