Comments fixed, ext-network continued, fix for mod stats:
[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  * Needs to be in all Files and every File needs "svn propset           *
18  * svn:keywords Date Revision" (autoprobset!) at least!!!!!!            *
19  * -------------------------------------------------------------------- *
20  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
21  * For more information visit: http://www.mxchange.org                  *
22  *                                                                      *
23  * This program is free software; you can redistribute it and/or modify *
24  * it under the terms of the GNU General Public License as published by *
25  * the Free Software Foundation; either version 2 of the License, or    *
26  * (at your option) any later version.                                  *
27  *                                                                      *
28  * This program is distributed in the hope that it will be useful,      *
29  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
30  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
31  * GNU General Public License for more details.                         *
32  *                                                                      *
33  * You should have received a copy of the GNU General Public License    *
34  * along with this program; if not, write to the Free Software          *
35  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
36  * MA  02110-1301  USA                                                  *
37  ************************************************************************/
38
39 // Some security stuff...
40 if (!defined('__SECURITY')) {
41         die();
42 }
43
44 // Version number
45 setThisExtensionVersion('0.2.6');
46
47 // Version history array (add more with , '0.1.0' and so on)
48 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'));
49
50 switch (getExtensionMode()) {
51         case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
52                 // SQL commands to run
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('main','beg','{OPEN_CONFIG}POINTS{CLOSE_CONFIG} erbetteln!','N','Y',4);
55                 addMemberMenuSql('main','beg','Ihr Bettel-Link','N','Y',6);
56                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_timeout BIGINT(20) UNSIGNED NOT NULL DEFAULT '600'");
57                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_userid_timeout BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800");
58                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00100");
59                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD beg_clicks BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
60                 addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_beg_ips`");
61                 addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_beg_ips` (
62 id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
63 userid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
64 remote_ip VARCHAR(15) NOT NULL DEFAULT '0.0.0.0',
65 timeout VARCHAR(10) NOT NULL DEFAULT '',
66 KEY (userid),
67 PRIMARY KEY (id)
68 ) TYPE={?_TABLE_TYPE?}");
69                 break;
70
71         case 'remove': // Do stuff when removing extension
72                 // SQL commands to run
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                 addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_beg_ips`");
77                 break;
78
79         case 'activate': // Do stuff when admin activates this extension
80                 // SQL commands to run
81                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y', `locked`='N' WHERE `what`='beg' LIMIT 1");
82                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what`='beg' LIMIT 1");
83                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='N' WHERE `module`='beg' LIMIT 1");
84                 break;
85
86         case 'deactivate': // Do stuff when admin deactivates this extension
87                 // SQL commands to run
88                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N', `locked`='Y' WHERE `what`='beg' LIMIT 1");
89                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `what` IN('beg','beg2') LIMIT 2");
90                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='beg' LIMIT 1");
91                 break;
92
93         case 'update': // Update an extension
94                 switch (getCurrentExtensionVersion()) {
95                         case '0.0.1': // SQL queries for v0.0.1
96                                 // Update notes (these will be set as task text!)
97                                 setExtensionUpdateNotes("Design &quot;Solid-Business&quot; eingebaut.");
98                                 break;
99
100                         case '0.0.2': // SQL queries for v0.0.2
101                                 // Update notes (these will be set as task text!)
102                                 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
103                                 break;
104
105                         case '0.0.3': // SQL queries for v0.0.3
106                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_points_max FLOAT(20,5) UNSIGNED NOT NULL DEFAULT '0.10000'");
107
108                                 // Update notes (these will be set as task text!)
109                                 setExtensionUpdateNotes("Maximale Obergrenze an {?POINTS?} einstellbar (Standart: 0,1 {?POINTS?})");
110                                 break;
111
112                         case '0.0.4': // SQL queries for v0.0.4
113                                 // Update notes (these will be set as task text!)
114                                 setExtensionUpdateNotes("&Uuml;berlange Kommastellen bei Punktangaben aus Bettellink und Gastbereich entfernt und Admin-Templates repariert (&quot;Unbekannte Spalte <u>beg_points_ma</u>&quot;).");
115                                 break;
116
117                         case '0.0.5': // SQL queries for v0.0.5
118                                 // Update notes (these will be set as task text!)
119                                 setExtensionUpdateNotes("Im Mitgliedsmen&uuml; wurde die Beschreibung aus dem Gastmen&uuml; verwendet.");
120                                 break;
121
122                         case '0.0.6': // SQL queries for v0.0.6
123                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_userid BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
124
125                                 // Update notes (these will be set as task text!)
126                                 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.");
127                                 break;
128
129                         case '0.0.8': // SQL queries for v0.0.8
130                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_ip_timeout BIGINT(20) UNSIGNED NOT NULL DEFAULT 1800");
131
132                                 // Update notes (these will be set as task text!)
133                                 setExtensionUpdateNotes("Zeitsperre gegen die selbe IP-Nummer hinzugef&uuml;gt.");
134                                 break;
135
136                         case '0.0.9': // SQL queries for v0.0.9
137                                 // Update notes (these will be set as task text!)
138                                 setExtensionUpdateNotes("Bitte verschieben Sie die beg-Templates (Ordner: {?PATH?}/templates/".getLanguage()."/html/) in den neuen Order beg!");
139                                 break;
140
141                         case '0.1.0': // SQL queries for v0.2.1
142                                 // Update notes (these will be set as task text!)
143                                 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
144                                 break;
145
146                         case '0.1.1': // SQL queries for v0.1.1
147                                 // Update notes (these will be set as task text!)
148                                 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
149                                 break;
150
151                         case '0.1.2':
152                                 // SQL queries for v0.1.2
153                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_mode` ENUM('DIRECT','REF') NOT NULL DEFAULT 'REF'");
154                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_ranks` TINYINT(3) UNSIGNED NOT NULL DEFAULT 10");
155                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_active` ENUM('Y','N') NOT NULL DEFAULT 'N'");
156                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `beg_rallye` ENUM('Y','N') NOT NULL DEFAULT 'N'");
157                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `beg_points` FLOAT(21,5) UNSIGNED NOT NULL DEFAULT 0.00000");
158
159                                 $VIS = 'N'; $LOCKED = 'Y';
160                                 if (isExtensionActive('beg')) { $VIS = 'Y'; $LOCKED = 'N'; }
161
162                                 addMemberMenuSql('main','beg2','Bettel-Rallye',$VIS,$LOCKED,7);
163                                 addAdminMenuSql('user','list_beg','Bettel-Rallye','Listet alle Teilnehmer der monatlichen Bettel-Rallye auf.','12');
164
165                                 // Update notes (these will be set as task text!)
166                                 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.");
167                                 break;
168
169                         case '0.1.3': // SQL queries for v0.1.3
170                                 // Update notes (these will be set as task text!)
171                                 setExtensionUpdateNotes("Erbettelte {?POINTS?} werden nach Deaktivierung der Bettel-Rallye gel&ouml;scht.");
172                                 break;
173
174                         case '0.1.4': // SQL queries for v0.1.4
175                                 // Update notes (these will be set as task text!)
176                                 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen (<strong>member_list_beg.tpl</strong>); Template <strong>member_beg_404.tpl</strong> fehlte!");
177                                 break;
178
179                         case '0.1.5': // SQL queries for v0.1.5
180                                 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");
181
182                                 // Update notes (these will be set as task text!)
183                                 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!");
184                                 break;
185
186                         case '0.1.6': // SQL queries for v0.1.6
187                                 // Update notes (these will be set as task text!)
188                                 setExtensionUpdateNotes("Es wurden immer dem ersten bettelndem Mitglied die {?POINTS?} gutgeschrieben.");
189                                 break;
190
191                         case '0.1.7': // SQL queries for v0.1.7
192                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_ral_en_notify ENUM('Y','N') NOT NULL DEFAULT 'N'");
193                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_ral_di_notify ENUM('Y','N') NOT NULL DEFAULT 'N'");
194                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_new_mem_notify ENUM('Y','N') NOT NULL DEFAULT 'N'");
195                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_notify_bonus  FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
196                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_notify_wait BIGINT(20) UNSIGNED NOT NULL DEFAULT '30'");
197                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD beg_ral_notify BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
198                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD beg_ral_en_notify BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
199                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD beg_ral_di_notify BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
200
201                                 // Update notes (these will be set as task text!)
202                                 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.");
203                                 break;
204
205                         case '0.1.8': // SQL queries for v0.1.8
206                                 // Update notes (these will be set as task text!)
207                                 setExtensionUpdateNotes("Fehler im t&auml;glichen Reset beseitigt.");
208                                 break;
209
210                         case '0.1.9': // SQL queries for v0.1.9
211                                 // Update notes (these will be set as task text!)
212                                 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verkn&uuml;pften Modules eingebunden.");
213                                 break;
214
215                         case '0.2.0': // SQL queries for v0.2.0
216                                 // Update notes (these will be set as task text!)
217                                 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als n&auml;chstes nach wer als letztes Online war umsortiert.");
218                                 break;
219
220                         case '0.2.1': // SQL queries for v0.2.1
221                                 // Update notes (these will be set as task text!)
222                                 setExtensionUpdateNotes("Fehler <strong>unknown column &#39;userid&#39;</strong> beseitigt.");
223                                 break;
224
225                         case '0.2.2': // SQL queries for v0.2.2
226                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD beg_include_own ENUM('Y','N') NOT NULL DEFAULT 'N'");
227
228                                 // Update notes (these will be set as task text!)
229                                 setExtensionUpdateNotes("Eigene Mitglieder-Ids sind von der Bettel-Rallye nun ausschliessbar.");
230                                 break;
231
232                         case '0.2.3': // SQL queries for v0.2.3
233                                 // Update notes (these will be set as task text!)
234                                 setExtensionUpdateNotes("Abfrage des Account-Status eingebaut. Es k&ouml;nnen nur best&auml;tigte Accounts betteln.");
235                                 break;
236
237                         case '0.2.4': // SQL queries for v0.2.4
238                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='extras', `sort`=1 WHERE `what`='beg' LIMIT 1");
239                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals', `sort`=3, `title`='Bettel-Rallye' WHERE `what`='beg2' 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                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `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                 break;
259
260         case 'modify': // When the extension got modified
261                 break;
262
263         case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
264                 break;
265
266         case 'init': // When extension is initialized
267                 // Remove old entries
268                 $OLD = getConfig('beg_timeout');
269                 if (getConfig('beg_userid_timeout') > $OLD) $OLD = getConfig('beg_userid_timeout');
270                 $result_ext = SQL_QUERY("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_beg_ips` WHERE `timeout` < (UNIX_TIMESTAMP() -".($OLD + 60*60).")", __FILE__, __LINE__);
271
272                 // Check for beg rallye is active and send mails out
273                 if ((getConfig('beg_rallye') == 'Y') && (getConfig('beg_new_mem_notify') == 'Y')) {
274                         // Include file for sending out mails
275                         addIncludeToPool('notify', 'inc/mails/beg_mails.php');
276                 } // END - if
277                 break;
278
279         default: // Unknown extension mode
280                 DEBUG_LOG(__FILE__, __LINE__, sprintf("Unknown extension mode %s detected.", getExtensionMode()));
281                 break;
282 }
283
284 //
285 ?>