Removed comment introduced by Profi-Concept, this comment should fine (in a much...
[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, 2010 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.8');
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'));
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                 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 '',
65 KEY (`userid`),
66 PRIMARY KEY (`id`)
67 ) TYPE={?_TABLE_TYPE?}");
68                 break;
69
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'");
76                 break;
77
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");
83                 break;
84
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");
90                 break;
91
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 &quot;Solid-Business&quot; eingebaut.");
97                                 break;
98
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> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
102                                 break;
103
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'");
106
107                                 // Update notes (these will be set as task text!)
108                                 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standart: 0,1 {?POINTS?})");
109                                 break;
110
111                         case '0.0.4': // SQL queries for v0.0.4
112                                 // Update notes (these will be set as task text!)
113                                 setExtensionUpdateNotes("&Uuml;berlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert (&quot;Unbekannte Spalte <u>beg_points_ma</u>&quot;).");
114                                 break;
115
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&uuml; wurde die Beschreibung aus dem Gastmen&uuml; verwendet.");
119                                 break;
120
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");
123
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.");
126                                 break;
127
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");
130
131                                 // Update notes (these will be set as task text!)
132                                 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugef&uuml;gt.");
133                                 break;
134
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!");
138                                 break;
139
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.");
143                                 break;
144
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.");
148                                 break;
149
150                         case '0.1.2':
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");
157
158                                 $visible = 'N'; $locked = 'Y';
159                                 if (isExtensionActive('beg')) {
160                                         $visible = 'Y';
161                                         $locked = 'N';
162                                 } // END - if
163
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');
166
167                                 // Update notes (these will be set as task text!)
168                                 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.");
169                                 break;
170
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&ouml;scht.");
174                                 break;
175
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!");
179                                 break;
180
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&uuml;tung und auch die Bettel-Rallye k&ouml;nnen Sie hier einstellen.' WHERE `what`='config_beg' LIMIT 1");
183
184                                 // Update notes (these will be set as task text!)
185                                 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!");
186                                 break;
187
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.");
191                                 break;
192
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");
202
203                                 // Update notes (these will be set as task text!)
204                                 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.");
205                                 break;
206
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&auml;glichen Reset beseitigt.");
210                                 break;
211
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&uuml;pften Modules eingebunden.");
215                                 break;
216
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&auml;chstes nach wer als letztes Online war umsortiert.");
220                                 break;
221
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 &#39;userid&#39;</strong> beseitigt.");
225                                 break;
226
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'");
229
230                                 // Update notes (these will be set as task text!)
231                                 setExtensionUpdateNotes("Eigene Mitglieder-Ids sind von der Bettel-Rallye nun ausschliessbar.");
232                                 break;
233
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&ouml;nnen nur best&auml;tigte Accounts betteln.");
237                                 break;
238
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");
242
243                                 // Update notes (these will be set as task text!)
244                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
245                                 break;
246
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.");
250                                 break;
251
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 ;");
255
256                                 // Update notes (these will be set as task text!)
257                                 setExtensionUpdateNotes("IP-Lock mit Session-Id erweitert. Tracker-Script eingef&uuml;gt, dass das Einbinden des Bettel-Links als Bild/Script/CSS verhindern soll.");
258                                 break;
259
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");
266
267                                 // Update notes (these will be set as task text!)
268                                 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
269                                 break;
270
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");
276
277                                 // Update notes (these will be set as task text!)
278                                 setExtensionUpdateNotes("Umbenannt nach neuer Namenskonvention");
279                                 break;
280                 } // END - switch
281                 break;
282
283         case 'modify': // When the extension got modified
284                 break;
285
286         case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
287                 break;
288
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__);
294
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');
299                 } // END - if
300                 break;
301
302         default: // Unknown extension mode
303                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
304                 break;
305 } // END - switch
306
307 // [EOF]
308 ?>