Fixes for compilation, more EL code:
[mailer.git] / inc / extensions / ext-bonus.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 04/04/2004 *
4  * ===================                          Last change: 06/13/2005 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-bonus.php                                    *
8  * -------------------------------------------------------------------- *
9  * Short description : Bonus pages                                      *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Bonus-Seiten                                     *
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 of this extension
44 setThisExtensionVersion('0.9.6');
45
46 // Version history array (add more with , '0.0.1' and so on)
47 setExtensionVersionHistory(array('0.0.0', '0.1.6', '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', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8', '0.6.9', '0.7.0', '0.7.1', '0.7.2', '0.7.3', '0.7.4', '0.7.5', '0.7.6', '0.7.7', '0.7.8', '0.7.9', '0.8.0', '0.8.1', '0.8.2', '0.8.3', '0.8.4', '0.8.5', '0.8.6', '0.8.7', '0.8.8', '0.8.9', '0.9.0', '0.9.1', '0.9.2', '0.9.3', '0.9.4', '0.9.5', '0.9.6'));
48
49 switch (getExtensionMode()) {
50         case 'register': // Do stuff when installation is running
51                 // Add dependency to 'user'
52                 addExtensionDependency('user');
53
54                 // SQL commands to run
55                 addAdminMenuSql('email', 'send_bonus', 'Bonusmail senden', 'Versenden Sie hier Bonus-Mails an alle Mitglieder oder nur an alle aus einer Kategorie. Es spielt keine Rolle, wie viele Mails bereits versendet worden, Sie k&ouml;nnen hier immer senden.', 5);
56                 addMemberMenuSql('main', 'bonus', 'Bonuspunkte', 7);
57                 addDropTableSql('bonus');
58                 addCreateTableSql('bonus', "
59 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
60 `cat_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
61 `subject` VARCHAR(255) NOT NULL DEFAULT '',
62 `text` LONGTEXT NOT NULL,
63 `receivers` LONGTEXT NOT NULL,
64 `points` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
65 `time` TINYINT(3) UNSIGNED NOT NULL DEFAULT 0,
66 `data_type` ENUM('NEW','QUEUE','SEND') NOT NULL DEFAULT 'NEW',
67 `timestamp` VARCHAR(10) NOT NULL DEFAULT 0,
68 `url` VARCHAR(255) NOT NULL DEFAULT '',
69 `target_send` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
70 `clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
71 `mails_sent` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
72 PRIMARY KEY (`id`),
73 INDEX (`cat_id`)",
74                         'Bonus mails');
75
76                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_links` ADD `bonus_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
77                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_links` ADD INDEX (`bonus_id`)");
78                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_bonus` ADD `html_msg` ENUM('Y','N') NOT NULL DEFAULT 'N'");
79                 break;
80
81         case 'remove': // Do stuff when removing extension
82                 // SQL commands to run
83                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN ('bonus','config_bonus','send_bonus','list_bonus','list_notifications')");
84                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='bonus' LIMIT 1");
85                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `action`='bonus'");
86                 addDropTableSql('bonus');
87                 addDropTableSql('bonus_urls');
88                 addDropTableSql('bonus_customer');
89                 addDropTableSql('bonus_turbo');
90
91                 // Unregister filter
92                 unregisterFilter(__FUNCTION__, __LINE__, 'member_login_check', 'ADD_LOGIN_BONUS', true, isExtensionDryRun());
93                 unregisterFilter(__FUNCTION__, __LINE__, 'generate_admin_mail_links', 'GENERATE_BONUS_MAIL_LINKS', true, isExtensionDryRun());
94                 break;
95
96         case 'activate': // Do stuff when admin activates this extension
97                 // SQL commands to run
98                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what`='bonus' LIMIT 1");
99                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y', `locked`='N' WHERE `action`='bonus' LIMIT 1");
100                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='N' WHERE `module`='show_bonus' LIMIT 1");
101                 break;
102
103         case 'deactivate': // Do stuff when admin deactivates this extension
104                 // SQL commands to run
105                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `what`='bonus' LIMIT 1");
106                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N', `locked`='Y' WHERE `action`='bonus' LIMIT 1");
107                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='show_bonus' LIMIT 1");
108                 break;
109
110         case 'update': // Update an extension
111                 switch (getCurrentExtensionVersion()) {
112                         case '0.1.6': // SQL queries for v0.1.6
113                                 // Update notes (these will be set as task text!)
114                                 setExtensionUpdateNotes("Paid-Links wurden verschoben in die Erweiterung <strong>sponsor</strong>.");
115                                 break;
116
117                         case '0.2.0': // SQL queries for v0.2.0
118                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `target_send`=`mails_sent` WHERE `target_send`=0 AND `mails_sent`>0 AND `receivers` != ''");
119
120                                 // Update notes (these will be set as task text!)
121                                 setExtensionUpdateNotes("Behebt ein Versand-Problem mit den Bonus-Mails. Es wurde die Spalte target_send nicht beim Einf&uuml;gen der Buchung gessetzt.");
122                                 break;
123
124                         case '0.2.1': // SQL queries for v0.2.1
125                                 // Add extension dependency to ex-tuser because of the ALTER command
126                                 addExtensionDependency('user');
127
128                                 addConfigAddSql('login_bonus', 'FLOAT(20,3) NOT NULL DEFAULT 10.000');
129                                 addConfigAddSql('turbo_bonus', 'FLOAT(20,3) NOT NULL DEFAULT 100.000');
130                                 addConfigAddSql('login_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT {?ONE_DAY?}');
131                                 addConfigAddSql('turbo_rates', "VARCHAR(255) NOT NULL DEFAULT '50;20;10'");
132                                 addConfigAddSql('bonus_ranks', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
133
134                                 // Use actual month for this update
135                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `login_bonus` FLOAT(20,3) NOT NULL DEFAULT 0.000");
136                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `turbo_bonus` FLOAT(20,3) NOT NULL DEFAULT 0.000");
137
138                                 // Update notes (these will be set as task text!)
139                                 setExtensionUpdateNotes("Login-Bonus und Turbo-Klick-Bonus intergriert.");
140                                 break;
141
142                         case '0.2.2': // SQL queries for v0.2.2
143                                 addDropTableSql('bonus_turbo');
144                                 addCreateTableSql('bonus_turbo', "
145 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
146 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
147 `mail_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
148 `bonus_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
149 `level` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
150 `points` FLOAT(20,3) NOT NULL DEFAULT 0.000,
151 `timemark` VARCHAR(32) NOT NULL DEFAULT 0,
152 PRIMARY KEY (`id`),
153 INDEX `mail_id` (`mail_id`),
154 INDEX `bonus_id` (`bonus_id`),
155 INDEX `userid` (`userid`)",
156                                         'Fastest click rallye table');
157
158                                 // Update notes (these will be set as task text!)
159                                 setExtensionUpdateNotes("Turbo-Bonus wird in Tabelle gez&auml;hlt f&uuml;r Anzeige, wer alles bereits geklickt hat und welchen Platz er gemacht hat.");
160                                 break;
161
162                         case '0.2.3': // SQL queries for v0.2.3
163                                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='bonus' LIMIT 1");
164                                 addMemberMenuSql('main', 'bonus', 'Aktiv-Rallye', 7);
165
166                                 // Update notes (these will be set as task text!)
167                                 setExtensionUpdateNotes("Aktiv-Rallye mit Klick-Verg&uuml;tung hinzugef&uuml;gt.");
168                                 break;
169
170                         case '0.2.4': // SQL queries for v0.2.4
171                                 // Update notes (these will be set as task text!)
172                                 setExtensionUpdateNotes("Wegen des Theme-Supportes hat sich die URL zur CSS-Datei ge&auml;ndert.");
173                                 break;
174
175                         case '0.2.5': // SQL queries for v0.2.5
176                                 addDropTableSql('bonus_urls');
177                                 addDropTableSql('bonus_customer');
178
179                                 // Update notes (these will be set as task text!)
180                                 setExtensionUpdateNotes("Tabellen <u>{?_MYSQL_PREFIX?}_bonus_urls</u> und <u>{?_MYSQL_PREFIX?}_bonus_customer</u> entfernt, da dies bald von der Erweiterung <u>sponsor</u> erledigt wird.");
181                                 break;
182
183                         case '0.2.6': // SQL queries for v0.2.6
184                                 // Update notes (these will be set as task text!)
185                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
186                                 break;
187
188                         case '0.2.7': // SQL queries for v0.2.7
189                                 // Update notes (these will be set as task text!)
190                                 setExtensionUpdateNotes("Turbo-Bonus klappt wieder (dies sind {?POINTS?} die an die schnellsten Klicker verg&uuml;tet werden!)");
191                                 break;
192
193                         case '0.2.8': // SQL queries for v0.2.8
194                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `timestamp`=0 WHERE `timestamp`='0000000000'");
195                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_bonus_turbo` CHANGE `points` `points` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
196                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `turbo_bonus` `turbo_bonus` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
197                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `login_bonus` `login_bonus` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
198
199                                 // For configuration, we need different entries
200                                 addConfigChangeSql('turbo_bonus', 'turbo_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
201                                 addConfigChangeSql('login_bonus', 'login_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
202
203                                 // Update notes (these will be set as task text!)
204                                 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
205                                 break;
206
207                         case '0.2.9': // SQL queries for v0.2.9
208                                 // Update notes (these will be set as task text!)
209                                 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
210                                 break;
211
212                         case '0.3.0': // SQL queries for v0.3.0
213                                 // Update notes (these will be set as task text!)
214                                 setExtensionUpdateNotes("Men&uuml;punkte im Gast-/Mitgliedsbereich k&ouml;nnen nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
215                                 break;
216
217                         case '0.3.1': // SQL queries for v0.3.1
218                                 // Update notes (these will be set as task text!)
219                                 setExtensionUpdateNotes("Sicherheitsupdate am Script <u>show_bonus.php</u> durchgef&uuml;hrt.");
220                                 break;
221
222                         case '0.3.2': // SQL queries for v0.3.2
223                                 // Update notes (these will be set as task text!)
224                                 setExtensionUpdateNotes("Design &quot;Solid-Business&quot; eingebaut.");
225                                 break;
226
227                         case '0.3.3': // SQL queries for v0.3.3
228                                 // Update notes (these will be set as task text!)
229                                 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
230                                 break;
231
232                         case '0.3.4': // SQL queries for v0.3.4
233                                 addAdminMenuSql('user', 'list_bonus', 'Aktiv-Rallye-Teilnehmer', 'Listet alle Mitglieder auf, die einen Aktiv-Bonus haben und zeigt die derzeit m&ouml;glichen Gewinner an.', 10);
234
235                                 // Update notes (these will be set as task text!)
236                                 setExtensionUpdateNotes("Link <u>Aktiv-Rallye-Teilnehmer</u> hinzugef&uuml;gt, inklusive manuelle Vorbereitung der Verg&uuml;tung.");
237                                 break;
238
239                         case '0.3.5': // SQL queries for v0.3.5
240                                 addConfigAddSql('bonus_mode', "ENUM('UID','JACKPOT','ADD') NOT NULL DEFAULT 'ADD'");
241                                 addConfigAddSql('bonus_userid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
242
243                                 // Update notes (these will be set as task text!)
244                                 setExtensionUpdateNotes("Der Login-Bonus Aktiv-Bonus (= Klick-Bonus) k&ouml;nnen nun zuerst von einem Mitgliederaccount (das sollte Ihres sein!), vom Jackpot abgezogen oder einfach dazuadiert werden.");
245                                 break;
246
247                         case '0.3.6': // SQL queries for v0.3.6
248                                 // Update notes (these will be set as task text!)
249                                 setExtensionUpdateNotes("In der Admin-Liste werden nur aktive Mitglieder gelistet und zudem die sp&auml;teste Zeitmarke f&uuml;r die Auswertung angezeigt.");
250                                 break;
251
252                         case '0.3.7': // SQL queries for v0.3.7
253                                 // Update notes (these will be set as task text!)
254                                 setExtensionUpdateNotes("Mitglieder-Account auw&auml;hlbar, von dem die {?POINTS?} f&uuml;r den Aktiv- und Login-Bonus abgebucht werden.");
255                                 break;
256
257                         case '0.3.8': // SQL queries for v0.3.8
258                                 // Update notes (these will be set as task text!)
259                                 setExtensionUpdateNotes("Ausgabe des generierten HTML-Codes nach <u>inc/footer.php</u> verlagert.");
260                                 break;
261
262                         case '0.3.9': // SQL queries for v0.3.9
263                                 // Update notes (these will be set as task text!)
264                                 setExtensionUpdateNotes("Fehlende Variablen gefixt.");
265                                 break;
266
267                         case '0.4.0': // SQL queries for v0.4.0
268                                 addConfigAddSql('bonus_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
269                                 addConfigAddSql('bonus_lines', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
270
271                                 // Update notes (these will be set as task text!)
272                                 setExtensionUpdateNotes("Automatisches L&ouml;schen von Turbo-Bonus-Zeilen ({?_MYSQL_PREFIX?}_bonus_turbo) und begrenzte Anzahl von Eintr&auml;gen hinzugef&uuml;gt.");
273                                 break;
274
275                         case '0.4.1': // SQL queries for v0.4.1
276                                 // Update notes (these will be set as task text!)
277                                 setExtensionUpdateNotes("Verg&uuml;tung des Aktiv-Bonus repariert.");
278                                 break;
279
280                         case '0.4.2': // SQL queries for v0.4.2
281                                 // Update notes (these will be set as task text!)
282                                 setExtensionUpdateNotes("Admin-Bereich / Aktiv-Teilnehmer auflisten: Problem mit Konstante __AUTOPURGE_TIMEOUT und das Template <u>admin_list_bonus.tpl</u> korregiert.");
283                                 break;
284
285                         case '0.4.3': // SQL queries for v0.4.3
286                                 // Update notes (these will be set as task text!)
287                                 setExtensionUpdateNotes("Verbesserung des Versandes von  HTML-Bonus-Mails.");
288                                 break;
289
290                         case '0.4.4': // SQL queries for v0.4.4
291                                 addConfigAddSql('bonus_order', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 15.00000');
292                                 addConfigAddSql('bonus_ref', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 100.00000');
293                                 addConfigAddSql('bonus_stats', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 5.00000');
294                                 addConfigAddSql('bonus_active', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
295                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `bonus_order` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
296                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `bonus_ref` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
297                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `bonus_stats` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
298
299                                 // Update notes (these will be set as task text!)
300                                 setExtensionUpdateNotes("Bonus-{?POINTS?} f&uuml;r: Mailbestellung, Referal-Werbung (bei Best. der EMail-Adresse) und wenn 100% Klickrate jeder Mailbuchung erreicht wurde.<br />Template <u>admin_config_bonus_pro.tpl</u> ist &uuml;berfl&uuml;ssig geworden. Bitte l&ouml;schen Sie dies!<br />Eingestellte Bonus-{?POINTS?} f&uuml;r Rank 2 war um eins verschoben.");
301                                 break;
302
303                         case '0.4.5': // SQL queries for v0.4.5
304                                 // Update notes (these will be set as task text!)
305                                 setExtensionUpdateNotes("Abzug vom Bonus-Account integriert.");
306                                 break;
307
308                         case '0.4.6': // SQL queries for v0.4.6
309                                 // Update notes (these will be set as task text!)
310                                 setExtensionUpdateNotes("Rank 2 bekommt nun auch seine {?POINTS?} gutgeschrieben.");
311                                 break;
312
313                         case '0.4.7': // SQL queries for v0.4.7
314                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `login_bonus`=0, `turbo_bonus`=0, `bonus_ref`=0, `bonus_order`=0, `bonus_stats`=0");
315
316                                 // Update notes (these will be set as task text!)
317                                 setExtensionUpdateNotes("Die Aktiv-Rallye wurde nicht auf 0 {?POINTS?} gesetzt. Dieser Fehler ist nun behoben. Allerdings ist mit diesem Update auch die Aktiv-Rallye zur&uuml;ckgesetzt worden.");
318                                 break;
319
320                         case '0.4.8': // SQL queries for v0.4.8
321                                 // Update notes (these will be set as task text!)
322                                 setExtensionUpdateNotes("In <u>inc/monthly_bonus.php</u> fehlte ein Punkt; Fehler besseitigt.");
323                                 break;
324
325                         case '0.4.9': // SQL queries for v0.4.9
326                                 // Update notes (these will be set as task text!)
327                                 setExtensionUpdateNotes("Login-Bonus wird mit angezeigt.");
328                                 break;
329
330                         case '0.5.0': // SQL queries for v0.5.0
331                                 // Update notes (these will be set as task text!)
332                                 setExtensionUpdateNotes("Problem mit <strong>is_hundred</strong> beim t&auml;glichen Reset beseitigt.");
333                                 break;
334
335                         case '0.5.1': // SQL queries for v0.5.1
336                                 // Update notes (these will be set as task text!)
337                                 setExtensionUpdateNotes("Problem mit <strong>bonus_stats / Zeile 31</strong> beim t&auml;glichen Reset beseitigt.");
338                                 break;
339
340                         case '0.5.2': // SQL queries for v0.5.2
341                                 // Update notes (these will be set as task text!)
342                                 setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
343                                 break;
344
345                         case '0.5.3': // SQL queries for v0.5.3
346                                 // Update notes (these will be set as task text!)
347                                 setExtensionUpdateNotes("Speichern der Aktiv-{?POINTS?} f&uuml;r Platz 2 bis <strong>x</strong> korregiert.");
348                                 break;
349
350                         case '0.5.4': // SQL queries for v0.5.4
351                                 // Update notes (these will be set as task text!)
352                                 setExtensionUpdateNotes("Variablenfehler in <strong>inc/monthly_bonus.php</strong> behoben.");
353                                 break;
354
355                         case '0.5.5': // SQL queries for v0.5.5
356                                 // Update notes (these will be set as task text!)
357                                 setExtensionUpdateNotes("Weitere Variablenfehler in <strong>inc/monthly_bonus.php</strong> haben daf&uuml;r gesorgt, dass die monatliche Aktiv-Rallye nicht ausgesch&uuml;ttet wurde. Mit diesem Update wurde die Aussch&uuml;ttung initialisiert. Ihre Mitglieder bekommen voraussichtlicht nichts doppelt verg&uuml;tet.");
358                                 break;
359
360                         case '0.5.6': // SQL queries for v0.5.6
361                                 // Get current month
362                                 $curr = getMonth();
363                                 if (strlen($curr) == 1) $curr = '0' . $curr;
364                                 if ($curr == '00') $curr = '12';
365
366                                 // Generate timemark...
367                                 $mark = mktime(0, 0, 0, $curr, 1, getYear());
368
369                                 // Update accounts which are not active last months
370                                 addExtensionSql("UPDATE
371         `{?_MYSQL_PREFIX?}_user_data`
372 SET
373         `turbo_bonus`=0,
374         `login_bonus`=0,
375         `bonus_order`=0,
376         `bonus_stats`=0,
377         `bonus_ref`=0
378 WHERE
379         `last_online` < ".$mark."
380 ORDER BY
381         `userid` ASC");
382
383                                 // Update notes (these will be set as task text!)
384                                 setExtensionUpdateNotes("Ein weiterer Scriptfehler hat nur die Gewinner aus der Aktiv-Rallye genommen. Die anderen Mitglieder sind somit &quot;nach oben gerutsch&quot;.");
385                                 break;
386
387                         case '0.5.7': // SQL queries for v0.5.7
388                                 break;
389
390                         case '0.5.8': // SQL queries for v0.5.8
391                                 // Update notes (these will be set as task text!)
392                                 setExtensionUpdateNotes("Problem mit <strong>is_hundred</strong> beim t&auml;glichen Reset endlich beseitigt.");
393                                 break;
394
395                         case '0.5.9': // SQL queries for v0.5.9
396                                 setExtensionUpdateNotes("Fehlermeldung <strong>/home/verzeichnis/html/inc/stats_bonus.php (42):You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' WHERE userid='59' LIMIT 1' at line 1</strong> beseitigt.");
397                                 break;
398
399                         case '0.6.0': // SQL queries for v0.6.0
400                                 setExtensionUpdateNotes("SQL-Fehlermeldung in <strong>inc/monthly_bonus.php</strong> beseitigt.");
401                                 break;
402
403                         case '0.6.1': // SQL queries for v0.6.1
404                                 setExtensionUpdateNotes("Versand von Bonus-Mails repariert.");
405                                 break;
406
407                         case '0.6.2': // SQL queries for v0.6.2
408                                 setExtensionUpdateNotes("L&ouml;schen von bereits gel&ouml;schten Mails wird nun abgelehnt.");
409                                 break;
410
411                         case '0.6.3': // SQL queries for v0.6.3
412                                 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
413                                 break;
414
415                         case '0.6.4': // SQL queries for v0.6.4
416                                 // Update notes (these will be set as task text!)
417                                 setExtensionUpdateNotes("Der Men&uuml;punkt &quot;Bonus-{?POINTS?}&quot; unter Einstellungen wird nach &quot;Aktiv-Rallye umbenannt. Und die Aktiv-Rallye konnte aufgrund eines Template-Fehlers nicht gespeichert werden.");
418                                 break;
419
420                         case '0.6.5': // SQL queries for v0.6.5
421                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_stats` ADD `bonus_stats` ENUM('Y','N') NOT NULL DEFAULT 'N'");
422
423                                 // Update notes (these will be set as task text!)
424                                 setExtensionUpdateNotes("Fehler mit bonus_stats beseitigt.");
425                                 break;
426
427                         case '0.6.6': // SQL queries for v0.6.6
428                                 setExtensionUpdateNotes("Template-Fehler beseitigt im Admin-Bereich.");
429                                 break;
430
431                         case '0.6.7': // SQL queries for v0.6.7
432                                 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
433                                 break;
434
435                         case '0.6.8': // SQL queries for v0.6.8
436                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `data_type`='SEND' WHERE `data_type` != 'SEND' AND `data_type` != 'DELETED' AND `receivers`='' AND `target_send`=0");
437
438                                 // Update notes (these will be set as task text!)
439                                 setExtensionUpdateNotes("Eingegebene Anzahl auszusendener Bonus-Mails wurde bei der Empf&auml;nderauswahl nicht ber&uuml;cksichtigt. Zudem wird jetzt das eingestellte Auswahlverfahren mitber&uuml;cksichtigt.");
440                                 break;
441
442                         case '0.6.9': // SQL queries for v0.6.9
443                                 addConfigAddSql('bonus_order_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
444                                 addConfigAddSql('bonus_ref_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
445                                 addConfigAddSql('bonus_stats_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
446                                 addConfigAddSql('bonus_login_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
447                                 addConfigAddSql('bonus_click_yn', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
448
449                                 // Update notes (these will be set as task text!)
450                                 setExtensionUpdateNotes("Es k&ouml;nnen nun auch die folgenden Verg&uuml;tungen bei der Auswertung der monatlichen Aktiv-Rallye mit ber&uuml;cksichtigt werden: Mailbest&auml;tigung (war vorher schon), Login-, Mailbuchung, Referal und Statistik-Bonus (100% Klickrate erreicht).");
451                                 break;
452
453                         case '0.7.0': // SQL queries for v0.7.0
454                                 setExtensionUpdateNotes("Zuschaltung von weiteren Bonis wird jetzt auch bei der Auflistung der mitmachenden Mitglieder im Mitgliedsbereich beachtet.");
455                                 break;
456
457                         case '0.7.1': // SQL queries for v0.7.1
458                                 setExtensionUpdateNotes("Im Adminbereich wird nun ebenfalls die Zuschaltung von weiteren Bonis ber&uuml;cksichtigt. Zudem wird der Gesamtbonus an alle Mitglieder errechnet und auch angezeigt.");
459                                 break;
460
461                         case '0.7.2': // SQL queries for v0.7.2
462                                 setExtensionUpdateNotes("Die Verg&uuml;tung der erreichten 100%-Klickrate war noch wegen Programmierungen am Script auskommentiert. Sorry!");
463                                 break;
464
465                         case '0.7.3': // SQL queries for v0.7.3
466                                 setExtensionUpdateNotes("Gutgeschriebene Bonus-{?POINTS?} werden nach Deaktivierung der Aktiv-Rallye gel&ouml;scht.");
467                                 break;
468
469                         case '0.7.4': // SQL queries for v0.7.4
470                                 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen. (<strong>member_bonus.tpl</strong>)");
471                                 break;
472
473                         case '0.7.5': // SQL queries for v0.7.5
474                                 setExtensionUpdateNotes("Im Admin-Bereich Hinweis hinzugef&uuml;gt, wenn Aktiv-Rallye inaktiv ist. Bitte Script inc/monthly_bonus.php l&ouml;schen!");
475                                 break;
476
477                         case '0.7.6': // SQL queries for v0.7.6
478                                 setExtensionUpdateNotes("Auswahlmechanismus der Gewinner repariert. Trotz Hinzuschalten von weiteren zu ber&uuml;cksichtigen Boni wurden diese bei der Sortierung der Mitglieder-Ids nicht ber&uuml;cksichtig.");
479                                 break;
480
481                         case '0.7.7': // SQL queries for v0.7.7
482                                 addConfigAddSql('bonus_en_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
483                                 addConfigAddSql('bonus_di_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
484                                 addConfigAddSql('bonus_new_mem_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
485                                 addConfigAddSql('bonus_notify_points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
486                                 addConfigAddSql('bonus_notify_wait', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 30');
487                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `bonus_ral_en_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
488                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `bonus_ral_di_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
489                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `bonus_ral_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
490
491                                 // Update notes (these will be set as task text!)
492                                 setExtensionUpdateNotes("Optionale automatische Benachrichtigung &uuml;ber aktivierte und/oder deaktivierte Aktiv-Rallye einstellbar.");
493                                 break;
494
495                         case '0.7.8': // SQL queries for v0.7.8
496                                 // Update notes (these will be set as task text!)
497                                 setExtensionUpdateNotes("Fehler im t&auml;glichen Reset beseitigt.");
498                                 break;
499
500                         case '0.7.9': // SQL queries for v0.7.9
501                                 setExtensionUpdateNotes("Dollarzeichen fehlte in <strong>inc/daily/daily_bonus.php</strong>, Zeile 39");
502                                 break;
503
504                         case '0.8.0': // SQL queries for v0.8.0
505                                 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verkn&uuml;pften Modules eingebunden.");
506                                 break;
507
508                         case '0.8.1': // SQL queries for v0.8.1
509                                 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als n&auml;chstes nach wer als letztes Online war umsortiert.");
510                                 break;
511
512                         case '0.8.2': // SQL queries for v0.8.2
513                                 addConfigAddSql('bonus_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
514                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_bonus` ADD `is_notify` ENUM('Y','N') NOT NULL DEFAULT 'N'");
515
516                                 // Update notes (these will be set as task text!)
517                                 setExtensionUpdateNotes("Eigene Mitglieder-Ids sind von der Aktiv-Rallye nun ausschliessbar. Benachrichtigungsmails sind von Aktiv-Rallye ausgeschlossen.");
518                                 break;
519
520                         case '0.8.3': // SQL queries for v0.8.3
521                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals', `sort`=2, `title`='Aktiv-Rallye' WHERE `what`='bonus' LIMIT 1");
522
523                                 // Update notes (these will be set as task text!)
524                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
525                                 break;
526
527                         case '0.8.4': // SQL queries for v0.8.4
528                                 setExtensionUpdateNotes("Ladeproblem bei nicht installierter Erweiterung <strong>cache</strong> gefixt.");
529                                 break;
530
531                         case '0.8.5': // SQL queries for v0.8.5
532                                 setExtensionUpdateNotes("CSS-Klassenname gefixt in Templates.");
533                                 break;
534
535                         case '0.8.6': // SQL queries for v0.8.6
536                                 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
537                                 break;
538
539                         case '0.8.7': // SQL queries for v0.8.7
540                                 addAdminMenuSql('email','list_notifications','Benachrichtigungen','Listet alle an die Mitglieder ausgesandten Benachrichtigungen auf.', 10);
541
542                                 // Update notes
543                                 setExtensionUpdateNotes("Benachrichtigungsmails f&uuml;r z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
544                                 break;
545
546                         case '0.8.8': // SQL queries for v0.8.8
547                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_stats` ADD `bonus_stats_active` ENUM('Y','N') NOT NULL DEFAULT 'N'");
548
549                                 // Update notes
550                                 setExtensionUpdateNotes("Benachrichtigungsmails f&uuml;r z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
551                                 break;
552
553                         case '0.8.9': // SQL queries for v0.8.9
554                                 addAdminMenuSql('setup','config_bonus','Aktiv-Rallye','Richten Sie eine komplette Aktiv-Rallye hier ein. Legen Sie Verg&uuml;tungen fest, die die Mitglieder f&uuml;r bestimmte Aktionen auf ihr Aktiv-Konto gutgeschrieben bekommen sollen.',8);
555
556                                 // Update notes
557                                 setExtensionUpdateNotes("Benachrichtigungsmails f&uuml;r z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
558                                 break;
559
560                         case '0.9.0': // SQL queries for v0.9.0
561                                 // Register filter
562                                 registerFilter('member_login_check', 'ADD_LOGIN_BONUS', false, true, isExtensionDryRun());
563
564                                 // Update notes
565                                 setExtensionUpdateNotes("Filter hinzugef&uuml;gt der den Login-Bonus aktualisiert (bzw. soll) (internes TODO).");
566                                 break;
567
568                         case '0.9.1': // SQL queries for v0.9.1
569                                 addConfigChangeSql('bonus_en_notify', 'bonus_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
570                                 addConfigChangeSql('bonus_di_notify', 'bonus_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
571                                 addConfigChangeSql('bonus_new_mem_notify', 'bonus_new_member_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
572
573                                 // Update notes
574                                 setExtensionUpdateNotes("Umbenannt nach neuer Konvention (bitte Einstellungen kontrollieren).");
575                                 break;
576
577                         case '0.9.2': // SQL queries for v0.9.2
578                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `bonus_ral_en_notify` `bonus_ralley_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
579                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `bonus_ral_di_notify` `bonus_ralley_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
580                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `bonus_ral_notify` `bonus_rallley_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
581
582                                 // Update notes
583                                 setExtensionUpdateNotes("Umbenannt nach neuer Konvention (bitte Einstellungen kontrollieren).");
584                                 break;
585
586                         case '0.9.3': // SQL queries for v0.9.3
587                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `bonus_ralley_enable_notify` `bonus_rallye_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
588                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` CHANGE `bonus_ralley_disable_notify` `bonus_rallye_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
589                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` DROP `bonus_ralley_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
590
591                                 // Update notes
592                                 setExtensionUpdateNotes("Typos gefixt.");
593                                 break;
594
595                         case '0.9.4': // SQL queries for v0.9.4
596                                 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_links` CHANGE `bonus_id` `bonus_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL');
597                                 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_links` SET `bonus_id`=NULL WHERE `bonus_id`=0');
598
599                                 // Update notes
600                                 setExtensionUpdateNotes("Konfliktierende SQL-Befehle aus ext-user verschoben.");
601                                 break;
602
603                         case '0.9.5': // SQL queries for v0.9.5
604                                 // Register filter
605                                 registerFilter('generate_admin_mail_links', 'GENERATE_BONUS_MAIL_LINKS', false, true, isExtensionDryRun());
606
607                                 // Update notes
608                                 setExtensionUpdateNotes("Filter zum Generieren von Admin-Links f&uuml;r Bonus-Mails hinzugef&uuml;gt.");
609                                 break;
610
611                         case '0.9.6': // SQL queries for v0.9.6
612                                 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`, `column_name`, `locked_mode`, `payment_method`) VALUES ('monthly_bonus','points','LOCKED','DIRECT')");
613
614                                 // This depends on ext-sql_patches
615                                 addExtensionDependency('sql_patches');
616
617                                 // Update notes
618                                 setExtensionUpdateNotes("Monatlicher Bonus wird nun &uuml;ber die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
619                                 break;
620                 } // END - switch
621                 break;
622
623         case 'modify': // When the extension got modified
624                 break;
625
626         case 'test': // For testing purposes
627                 break;
628
629         case 'init': // Do stuff when extension is initialized
630                 // Check for bonus rallye is active and send mails out
631                 if ((isBonusRallyeActive()) && (isBonusNewMemberNotifyEnabled())) {
632                         // Include file for sending out mails
633                         addIncludeToPool('notify', 'inc/mails/bonus_mails.php');
634                 } // END - if
635                 break;
636
637         default: // Unknown extension mode
638                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
639                 break;
640 } // END - switch
641
642 // [EOF]
643 ?>