AJAX installation is 'basicly finished' :) Plus I threw in a small christmas present...
[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 - 2012 by Mailer Developer Team                   *
20  * For more information visit: http://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.9');
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', '0.9.7', '0.9.8', '0.9.9'));
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                 addExtensionAddTableColumnSql('user_links', 'bonus_id', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
77                 addExtensionAddTableIndexSql('user_links', 'bonus_id', '(`bonus_id`)');
78                 addExtensionAddTableColumnSql('bonus', '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 points data
92                 unregisterExtensionPointsData('monthly_bonus');
93
94                 // Unregister filter
95                 unregisterFilter(__FILE__, __LINE__, 'member_login_check', 'ADD_LOGIN_BONUS', TRUE, isExtensionDryRun());
96                 unregisterFilter(__FILE__, __LINE__, 'generate_admin_mail_links', 'GENERATE_BONUS_MAIL_LINKS', TRUE, isExtensionDryRun());
97                 unregisterFilter(__FILE__, __LINE__, 'add_bonus_points_user_columns', 'ADD_BONUS_POINTS_USER_COLUMNS', TRUE, isExtensionDryRun());
98                 unregisterFilter(__FILE__, __LINE__, 'pre_user_registration', 'BONUS_USER_REGISTRATION_ADD_SQL_COLUMNS', TRUE, isExtensionDryRun());
99                 unregisterFilter(__FILE__, __LINE__, 'init', 'SEND_BONUS_NOTIFICATIONS', TRUE, isExtensionDryRun());
100                 break;
101
102         case 'activate': // Do stuff when admin activates this extension
103                 // SQL commands to run
104                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `what`='bonus' LIMIT 1");
105                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y',`locked`='N' WHERE `action`='bonus' LIMIT 1");
106                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N',`hidden`='N',`admin_only`='N',`mem_only`='N' WHERE `module`='show_bonus' LIMIT 1");
107                 break;
108
109         case 'deactivate': // Do stuff when admin deactivates this extension
110                 // SQL commands to run
111                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `what`='bonus' LIMIT 1");
112                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N',`locked`='Y' WHERE `action`='bonus' LIMIT 1");
113                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='show_bonus' LIMIT 1");
114                 break;
115
116         case 'update': // Update an extension
117                 switch (getCurrentExtensionVersion()) {
118                         case '0.1.6': // SQL queries for v0.1.6
119                                 // Update notes (these will be set as task text!)
120                                 setExtensionUpdateNotes("Paid-Links wurden verschoben in die Erweiterung <strong>sponsor</strong>.");
121                                 break;
122
123                         case '0.2.0': // SQL queries for v0.2.0
124                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `target_send`=`mails_sent` WHERE `target_send`=0 AND `mails_sent`>0 AND `receivers` != ''");
125
126                                 // Update notes (these will be set as task text!)
127                                 setExtensionUpdateNotes("Behebt ein Versand-Problem mit den Bonus-Mails. Es wurde die Spalte target_send nicht beim Einf&uuml;gen der Buchung gessetzt.");
128                                 break;
129
130                         case '0.2.1': // SQL queries for v0.2.1
131                                 // Add extension dependency to ex-tuser because of the ALTER command
132                                 addExtensionDependency('user');
133
134                                 addConfigAddSql('login_bonus', 'FLOAT(20,3) NOT NULL DEFAULT 10.000');
135                                 addConfigAddSql('turbo_bonus', 'FLOAT(20,3) NOT NULL DEFAULT 100.000');
136                                 addConfigAddSql('login_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT {?ONE_DAY?}');
137                                 addConfigAddSql('turbo_rates', "VARCHAR(255) NOT NULL DEFAULT '50;20;10'");
138                                 addConfigAddSql('bonus_ranks', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
139
140                                 // Use actual month for this update
141                                 addExtensionAddTableColumnSql('user_data', 'login_bonus', 'FLOAT(20,3) NOT NULL DEFAULT 0.000');
142                                 addExtensionAddTableColumnSql('user_data', 'turbo_bonus', 'FLOAT(20,3) NOT NULL DEFAULT 0.000');
143
144                                 // Update notes (these will be set as task text!)
145                                 setExtensionUpdateNotes("Login-Bonus und Turbo-Klick-Bonus intergriert.");
146                                 break;
147
148                         case '0.2.2': // SQL queries for v0.2.2
149                                 addDropTableSql('bonus_turbo');
150                                 addCreateTableSql('bonus_turbo', "
151 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
152 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
153 `mail_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
154 `bonus_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
155 `level` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
156 `points` FLOAT(20,3) NOT NULL DEFAULT 0.000,
157 `timemark` VARCHAR(32) NOT NULL DEFAULT 0,
158 PRIMARY KEY (`id`),
159 INDEX `mail_id` (`mail_id`),
160 INDEX `bonus_id` (`bonus_id`),
161 INDEX `userid` (`userid`)",
162                                         'Fastest click rallye table');
163
164                                 // Update notes (these will be set as task text!)
165                                 setExtensionUpdateNotes("Turbo-Bonus wird in Tabelle gez&auml;hlt f&uuml;r Anzeige, wer alles bereits geklickt hat und welchen Platz er gemacht hat.");
166                                 break;
167
168                         case '0.2.3': // SQL queries for v0.2.3
169                                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='bonus' LIMIT 1");
170                                 addMemberMenuSql('main', 'bonus', 'Aktiv-Rallye', 7);
171
172                                 // Update notes (these will be set as task text!)
173                                 setExtensionUpdateNotes("Aktiv-Rallye mit Klick-Verg&uuml;tung hinzugef&uuml;gt.");
174                                 break;
175
176                         case '0.2.4': // SQL queries for v0.2.4
177                                 // Update notes (these will be set as task text!)
178                                 setExtensionUpdateNotes("Wegen des Theme-Supportes hat sich die URL zur CSS-Datei ge&auml;ndert.");
179                                 break;
180
181                         case '0.2.5': // SQL queries for v0.2.5
182                                 addDropTableSql('bonus_urls');
183                                 addDropTableSql('bonus_customer');
184
185                                 // Update notes (these will be set as task text!)
186                                 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.");
187                                 break;
188
189                         case '0.2.6': // SQL queries for v0.2.6
190                                 // Update notes (these will be set as task text!)
191                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
192                                 break;
193
194                         case '0.2.7': // SQL queries for v0.2.7
195                                 // Update notes (these will be set as task text!)
196                                 setExtensionUpdateNotes("Turbo-Bonus klappt wieder (dies sind {?POINTS?} die an die schnellsten Klicker verg&uuml;tet werden!)");
197                                 break;
198
199                         case '0.2.8': // SQL queries for v0.2.8
200                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `timestamp`=0 WHERE `timestamp`='0000000000'");
201                                 addExtensionChangeTableColumnSql('bonus_turbo', 'points', 'points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
202                                 addExtensionChangeTableColumnSql('user_data', 'turbo_bonus', 'turbo_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
203                                 addExtensionChangeTableColumnSql('user_data', 'login_bonus', 'login_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
204
205                                 // For configuration, we need different entries
206                                 addExtensionAddTableColumnSql('user_data', 'turbo_bonus', 'turbo_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
207                                 addExtensionAddTableColumnSql('user_data', 'login_bonus', 'login_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
208
209                                 // Update notes (these will be set as task text!)
210                                 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
211                                 break;
212
213                         case '0.2.9': // SQL queries for v0.2.9
214                                 // Update notes (these will be set as task text!)
215                                 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
216                                 break;
217
218                         case '0.3.0': // SQL queries for v0.3.0
219                                 // Update notes (these will be set as task text!)
220                                 setExtensionUpdateNotes("Men&uuml;punkte im Gast-/Mitgliedsbereich k&ouml;nnen nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
221                                 break;
222
223                         case '0.3.1': // SQL queries for v0.3.1
224                                 // Update notes (these will be set as task text!)
225                                 setExtensionUpdateNotes("Sicherheitsupdate am Script <u>show_bonus.php</u> durchgef&uuml;hrt.");
226                                 break;
227
228                         case '0.3.2': // SQL queries for v0.3.2
229                                 // Update notes (these will be set as task text!)
230                                 setExtensionUpdateNotes("Design &quot;Solid-Business&quot; eingebaut.");
231                                 break;
232
233                         case '0.3.3': // SQL queries for v0.3.3
234                                 // Update notes (these will be set as task text!)
235                                 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
236                                 break;
237
238                         case '0.3.4': // SQL queries for v0.3.4
239                                 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);
240
241                                 // Update notes (these will be set as task text!)
242                                 setExtensionUpdateNotes("Link <u>Aktiv-Rallye-Teilnehmer</u> hinzugef&uuml;gt, inklusive manuelle Vorbereitung der Verg&uuml;tung.");
243                                 break;
244
245                         case '0.3.5': // SQL queries for v0.3.5
246                                 addConfigAddSql('bonus_mode', "ENUM('UID','JACKPOT','ADD') NOT NULL DEFAULT 'ADD'");
247                                 addConfigAddSql('bonus_userid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
248
249                                 // Update notes (these will be set as task text!)
250                                 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.");
251                                 break;
252
253                         case '0.3.6': // SQL queries for v0.3.6
254                                 // Update notes (these will be set as task text!)
255                                 setExtensionUpdateNotes("In der Admin-Liste werden nur aktive Mitglieder gelistet und zudem die sp&auml;teste Zeitmarke f&uuml;r die Auswertung angezeigt.");
256                                 break;
257
258                         case '0.3.7': // SQL queries for v0.3.7
259                                 // Update notes (these will be set as task text!)
260                                 setExtensionUpdateNotes("Mitglieder-Account auw&auml;hlbar, von dem die {?POINTS?} f&uuml;r den Aktiv- und Login-Bonus abgebucht werden.");
261                                 break;
262
263                         case '0.3.8': // SQL queries for v0.3.8
264                                 // Update notes (these will be set as task text!)
265                                 setExtensionUpdateNotes("Ausgabe des generierten HTML-Codes nach <u>inc/footer.php</u> verlagert.");
266                                 break;
267
268                         case '0.3.9': // SQL queries for v0.3.9
269                                 // Update notes (these will be set as task text!)
270                                 setExtensionUpdateNotes("Fehlende Variablen gefixt.");
271                                 break;
272
273                         case '0.4.0': // SQL queries for v0.4.0
274                                 addConfigAddSql('bonus_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
275                                 addConfigAddSql('bonus_lines', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
276
277                                 // Update notes (these will be set as task text!)
278                                 setExtensionUpdateNotes("Automatisches L&ouml;schen von Turbo-Bonus-Zeilen ({?_MYSQL_PREFIX?}_bonus_turbo) und begrenzte Anzahl von Eintr&auml;gen hinzugef&uuml;gt.");
279                                 break;
280
281                         case '0.4.1': // SQL queries for v0.4.1
282                                 // Update notes (these will be set as task text!)
283                                 setExtensionUpdateNotes("Verg&uuml;tung des Aktiv-Bonus repariert.");
284                                 break;
285
286                         case '0.4.2': // SQL queries for v0.4.2
287                                 // Update notes (these will be set as task text!)
288                                 setExtensionUpdateNotes("Admin-Bereich / Aktiv-Teilnehmer auflisten: Problem mit Konstante __AUTOPURGE_TIMEOUT und das Template <u>admin_list_bonus.tpl</u> korregiert.");
289                                 break;
290
291                         case '0.4.3': // SQL queries for v0.4.3
292                                 // Update notes (these will be set as task text!)
293                                 setExtensionUpdateNotes("Verbesserung des Versandes von  HTML-Bonus-Mails.");
294                                 break;
295
296                         case '0.4.4': // SQL queries for v0.4.4
297                                 addConfigAddSql('bonus_order', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 15.00000');
298                                 addConfigAddSql('bonus_ref', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 100.00000');
299                                 addConfigAddSql('bonus_stats', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 5.00000');
300                                 addConfigAddSql('bonus_active', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
301                                 addExtensionAddTableColumnSql('user_data', 'bonus_order', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
302                                 addExtensionAddTableColumnSql('user_data', 'bonus_ref', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
303                                 addExtensionAddTableColumnSql('user_data', 'bonus_stats', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
304
305                                 // Update notes (these will be set as task text!)
306                                 setExtensionUpdateNotes("Bonus-{?POINTS?} f&uuml;r: Mailbestellung, Referral-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.");
307                                 break;
308
309                         case '0.4.5': // SQL queries for v0.4.5
310                                 // Update notes (these will be set as task text!)
311                                 setExtensionUpdateNotes("Abzug vom Bonus-Account integriert.");
312                                 break;
313
314                         case '0.4.6': // SQL queries for v0.4.6
315                                 // Update notes (these will be set as task text!)
316                                 setExtensionUpdateNotes("Rank 2 bekommt nun auch seine {?POINTS?} gutgeschrieben.");
317                                 break;
318
319                         case '0.4.7': // SQL queries for v0.4.7
320                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `login_bonus`=0,`turbo_bonus`=0,`bonus_ref`=0,`bonus_order`=0,`bonus_stats`=0");
321
322                                 // Update notes (these will be set as task text!)
323                                 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.");
324                                 break;
325
326                         case '0.4.8': // SQL queries for v0.4.8
327                                 // Update notes (these will be set as task text!)
328                                 setExtensionUpdateNotes("In <u>inc/monthly_bonus.php</u> fehlte ein Punkt; Fehler besseitigt.");
329                                 break;
330
331                         case '0.4.9': // SQL queries for v0.4.9
332                                 // Update notes (these will be set as task text!)
333                                 setExtensionUpdateNotes("Login-Bonus wird mit angezeigt.");
334                                 break;
335
336                         case '0.5.0': // SQL queries for v0.5.0
337                                 // Update notes (these will be set as task text!)
338                                 setExtensionUpdateNotes("Problem mit <strong>is_hundred</strong> beim t&auml;glichen Reset beseitigt.");
339                                 break;
340
341                         case '0.5.1': // SQL queries for v0.5.1
342                                 // Update notes (these will be set as task text!)
343                                 setExtensionUpdateNotes("Problem mit <strong>bonus_stats / Zeile 31</strong> beim t&auml;glichen Reset beseitigt.");
344                                 break;
345
346                         case '0.5.2': // SQL queries for v0.5.2
347                                 // Update notes (these will be set as task text!)
348                                 setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
349                                 break;
350
351                         case '0.5.3': // SQL queries for v0.5.3
352                                 // Update notes (these will be set as task text!)
353                                 setExtensionUpdateNotes("Speichern der Aktiv-{?POINTS?} f&uuml;r Platz 2 bis <strong>x</strong> korregiert.");
354                                 break;
355
356                         case '0.5.4': // SQL queries for v0.5.4
357                                 // Update notes (these will be set as task text!)
358                                 setExtensionUpdateNotes("Variablenfehler in <strong>inc/monthly_bonus.php</strong> behoben.");
359                                 break;
360
361                         case '0.5.5': // SQL queries for v0.5.5
362                                 // Update notes (these will be set as task text!)
363                                 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.");
364                                 break;
365
366                         case '0.5.6': // SQL queries for v0.5.6
367                                 // Get current month
368                                 $curr = str_pad(getMonth(), 2, '0', STR_PAD_LEFT);
369                                 if ($curr == '00') $curr = '12';
370
371                                 // Generate timemark...
372                                 $mark = mktime(0, 0, 0, $curr, 1, getYear());
373
374                                 // Update accounts which are not active last months
375                                 addExtensionSql("UPDATE
376         `{?_MYSQL_PREFIX?}_user_data`
377 SET
378         `turbo_bonus`=0,
379         `login_bonus`=0,
380         `bonus_order`=0,
381         `bonus_stats`=0,
382         `bonus_ref`=0
383 WHERE
384         `last_online` < ".$mark."
385 ORDER BY
386         `userid` ASC");
387
388                                 // Update notes (these will be set as task text!)
389                                 setExtensionUpdateNotes("Ein weiterer Scriptfehler hat nur die Gewinner aus der Aktiv-Rallye genommen. Die anderen Mitglieder sind somit &quot;nach oben gerutsch&quot;.");
390                                 break;
391
392                         case '0.5.7': // SQL queries for v0.5.7
393                                 break;
394
395                         case '0.5.8': // SQL queries for v0.5.8
396                                 // Update notes (these will be set as task text!)
397                                 setExtensionUpdateNotes("Problem mit <strong>is_hundred</strong> beim t&auml;glichen Reset endlich beseitigt.");
398                                 break;
399
400                         case '0.5.9': // SQL queries for v0.5.9
401                                 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.");
402                                 break;
403
404                         case '0.6.0': // SQL queries for v0.6.0
405                                 setExtensionUpdateNotes("SQL-Fehlermeldung in <strong>inc/monthly_bonus.php</strong> beseitigt.");
406                                 break;
407
408                         case '0.6.1': // SQL queries for v0.6.1
409                                 setExtensionUpdateNotes("Versand von Bonus-Mails repariert.");
410                                 break;
411
412                         case '0.6.2': // SQL queries for v0.6.2
413                                 setExtensionUpdateNotes("L&ouml;schen von bereits gel&ouml;schten Mails wird nun abgelehnt.");
414                                 break;
415
416                         case '0.6.3': // SQL queries for v0.6.3
417                                 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
418                                 break;
419
420                         case '0.6.4': // SQL queries for v0.6.4
421                                 // Update notes (these will be set as task text!)
422                                 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.");
423                                 break;
424
425                         case '0.6.5': // SQL queries for v0.6.5
426                                 addExtensionAddTableColumnSql('user_stats', 'bonus_stats', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
427
428                                 // Update notes (these will be set as task text!)
429                                 setExtensionUpdateNotes("Fehler mit bonus_stats beseitigt.");
430                                 break;
431
432                         case '0.6.6': // SQL queries for v0.6.6
433                                 setExtensionUpdateNotes("Template-Fehler beseitigt im Admin-Bereich.");
434                                 break;
435
436                         case '0.6.7': // SQL queries for v0.6.7
437                                 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
438                                 break;
439
440                         case '0.6.8': // SQL queries for v0.6.8
441                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `data_type`='SEND' WHERE `data_type` != 'SEND' AND `data_type` != 'DELETED' AND `receivers`='' AND `target_send`=0");
442
443                                 // Update notes (these will be set as task text!)
444                                 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.");
445                                 break;
446
447                         case '0.6.9': // SQL queries for v0.6.9
448                                 addConfigAddSql('bonus_order_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
449                                 addConfigAddSql('bonus_ref_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
450                                 addConfigAddSql('bonus_stats_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
451                                 addConfigAddSql('bonus_login_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
452                                 addConfigAddSql('bonus_click_yn', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
453
454                                 // Update notes (these will be set as task text!)
455                                 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, Referral und Statistik-Bonus (100% Klickrate erreicht).");
456                                 break;
457
458                         case '0.7.0': // SQL queries for v0.7.0
459                                 setExtensionUpdateNotes("Zuschaltung von weiteren Bonis wird jetzt auch bei der Auflistung der mitmachenden Mitglieder im Mitgliedsbereich beachtet.");
460                                 break;
461
462                         case '0.7.1': // SQL queries for v0.7.1
463                                 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.");
464                                 break;
465
466                         case '0.7.2': // SQL queries for v0.7.2
467                                 setExtensionUpdateNotes("Die Verg&uuml;tung der erreichten 100%-Klickrate war noch wegen Programmierungen am Script auskommentiert. Sorry!");
468                                 break;
469
470                         case '0.7.3': // SQL queries for v0.7.3
471                                 setExtensionUpdateNotes("Gutgeschriebene Bonus-{?POINTS?} werden nach Deaktivierung der Aktiv-Rallye gel&ouml;scht.");
472                                 break;
473
474                         case '0.7.4': // SQL queries for v0.7.4
475                                 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen. (<strong>member_bonus.tpl</strong>)");
476                                 break;
477
478                         case '0.7.5': // SQL queries for v0.7.5
479                                 setExtensionUpdateNotes("Im Admin-Bereich Hinweis hinzugef&uuml;gt, wenn Aktiv-Rallye inaktiv ist. Bitte Script inc/monthly_bonus.php l&ouml;schen!");
480                                 break;
481
482                         case '0.7.6': // SQL queries for v0.7.6
483                                 setExtensionUpdateNotes("Auswahlmechanismus der Gewinner repariert. Trotz Hinzuschalten von weiteren zu ber&uuml;cksichtigen Boni wurden diese bei der Sortierung der Mitglieds-Ids nicht ber&uuml;cksichtig.");
484                                 break;
485
486                         case '0.7.7': // SQL queries for v0.7.7
487                                 addConfigAddSql('bonus_en_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
488                                 addConfigAddSql('bonus_di_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
489                                 addConfigAddSql('bonus_new_mem_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
490                                 addConfigAddSql('bonus_notify_points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
491                                 addConfigAddSql('bonus_notify_wait', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 30');
492                                 addExtensionAddTableColumnSql('user_data', 'bonus_ral_en_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
493                                 addExtensionAddTableColumnSql('user_data', 'bonus_ral_di_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
494                                 addExtensionAddTableColumnSql('user_data', 'bonus_ral_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
495
496                                 // Update notes (these will be set as task text!)
497                                 setExtensionUpdateNotes("Optionale automatische Benachrichtigung &uuml;ber aktivierte und/oder deaktivierte Aktiv-Rallye einstellbar.");
498                                 break;
499
500                         case '0.7.8': // SQL queries for v0.7.8
501                                 // Update notes (these will be set as task text!)
502                                 setExtensionUpdateNotes("Fehler im t&auml;glichen Reset beseitigt.");
503                                 break;
504
505                         case '0.7.9': // SQL queries for v0.7.9
506                                 setExtensionUpdateNotes("Dollarzeichen fehlte in <strong>inc/daily/daily_bonus.php</strong>, Zeile 39");
507                                 break;
508
509                         case '0.8.0': // SQL queries for v0.8.0
510                                 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verkn&uuml;pften Modules eingebunden.");
511                                 break;
512
513                         case '0.8.1': // SQL queries for v0.8.1
514                                 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als n&auml;chstes nach wer als letztes Online war umsortiert.");
515                                 break;
516
517                         case '0.8.2': // SQL queries for v0.8.2
518                                 addConfigAddSql('bonus_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
519                                 addExtensionAddTableColumnSql('bonus', 'is_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
520
521                                 // Update notes (these will be set as task text!)
522                                 setExtensionUpdateNotes("Eigene Mitglieds-Ids sind von der Aktiv-Rallye nun ausschliessbar. Benachrichtigungsmails sind von Aktiv-Rallye ausgeschlossen.");
523                                 break;
524
525                         case '0.8.3': // SQL queries for v0.8.3
526                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals',`sort`=2,`title`='Aktiv-Rallye' WHERE `what`='bonus' LIMIT 1");
527
528                                 // Update notes (these will be set as task text!)
529                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
530                                 break;
531
532                         case '0.8.4': // SQL queries for v0.8.4
533                                 setExtensionUpdateNotes("Ladeproblem bei nicht installierter Erweiterung <strong>cache</strong> gefixt.");
534                                 break;
535
536                         case '0.8.5': // SQL queries for v0.8.5
537                                 setExtensionUpdateNotes("CSS-Klassenname gefixt in Templates.");
538                                 break;
539
540                         case '0.8.6': // SQL queries for v0.8.6
541                                 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
542                                 break;
543
544                         case '0.8.7': // SQL queries for v0.8.7
545                                 addAdminMenuSql('email','list_notifications','Benachrichtigungen','Listet alle an die Mitglieder ausgesandten Benachrichtigungen auf.', 10);
546
547                                 // Update notes
548                                 setExtensionUpdateNotes("Benachrichtigungsmails f&uuml;r z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
549                                 break;
550
551                         case '0.8.8': // SQL queries for v0.8.8
552                                 addExtensionAddTableColumnSql('user_stats', 'bonus_stats_active', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
553
554                                 // Update notes
555                                 setExtensionUpdateNotes("Benachrichtigungsmails f&uuml;r z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
556                                 break;
557
558                         case '0.8.9': // SQL queries for v0.8.9
559                                 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);
560
561                                 // Update notes
562                                 setExtensionUpdateNotes("Benachrichtigungsmails f&uuml;r z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
563                                 break;
564
565                         case '0.9.0': // SQL queries for v0.9.0
566                                 // Register filter
567                                 registerFilter(__FILE__, __LINE__, 'member_login_check', 'ADD_LOGIN_BONUS', FALSE, TRUE, isExtensionDryRun());
568
569                                 // Update notes
570                                 setExtensionUpdateNotes("Filter hinzugef&uuml;gt der den Login-Bonus aktualisiert (bzw. soll) (internes TODO).");
571                                 break;
572
573                         case '0.9.1': // SQL queries for v0.9.1
574                                 addConfigChangeSql('bonus_en_notify', 'bonus_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
575                                 addConfigChangeSql('bonus_di_notify', 'bonus_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
576                                 addConfigChangeSql('bonus_new_mem_notify', 'bonus_new_member_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
577
578                                 // Update notes
579                                 setExtensionUpdateNotes("Umbenannt nach neuer Konvention (bitte Einstellungen kontrollieren).");
580                                 break;
581
582                         case '0.9.2': // SQL queries for v0.9.2
583                                 addExtensionChangeTableColumnSql('user_data', 'bonus_ral_en_notify', 'bonus_ralley_enable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
584                                 addExtensionChangeTableColumnSql('user_data', 'bonus_ral_di_notify', 'bonus_ralley_disable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
585                                 addExtensionChangeTableColumnSql('user_data', 'bonus_ral_notify', 'bonus_rallley_notify', 'INT(20)', 'UNSIGNED NOT NULL DEFAULT 0');
586
587                                 // Update notes
588                                 setExtensionUpdateNotes("Umbenannt nach neuer Konvention (bitte Einstellungen kontrollieren).");
589                                 break;
590
591                         case '0.9.3': // SQL queries for v0.9.3
592                                 addExtensionChangeTableColumnSql('user_data', 'bonus_ralley_enable_notify', 'bonus_rallye_enable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
593                                 addExtensionChangeTableColumnSql('user_data', 'bonus_ralley_disable_notify', 'bonus_rallye_disable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
594                                 addExtensionDropTableColumnSql('user_data', 'bonus_ralley_notify');
595
596                                 // Update notes
597                                 setExtensionUpdateNotes("Typos gefixt.");
598                                 break;
599
600                         case '0.9.4': // SQL queries for v0.9.4
601                                 addExtensionChangeTableColumnSql('user_links', 'bonus_id', 'bonus_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
602                                 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_links` SET `bonus_id`=NULL WHERE `bonus_id`=0');
603
604                                 // Update notes
605                                 setExtensionUpdateNotes("Konfliktierende SQL-Befehle aus ext-user verschoben.");
606                                 break;
607
608                         case '0.9.5': // SQL queries for v0.9.5
609                                 // Register filter
610                                 registerFilter(__FILE__, __LINE__, 'generate_admin_mail_links', 'GENERATE_BONUS_MAIL_LINKS', FALSE, TRUE, isExtensionDryRun());
611
612                                 // Update notes
613                                 setExtensionUpdateNotes("Filter zum Generieren von Admin-Links f&uuml;r Bonus-Mails hinzugef&uuml;gt.");
614                                 break;
615
616                         case '0.9.6': // SQL queries for v0.9.6
617                                 // Register points data
618                                 registerExtensionPointsData('monthly_bonus', 'points', 'LOCKED', 'DIRECT');
619
620                                 // Update notes
621                                 setExtensionUpdateNotes("Monatlicher Bonus wird nun &uuml;ber die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
622                                 break;
623
624                         case '0.9.7': // SQL queries for v0.9.7
625                                 addConfigChangeSql('bonus_order_yn', 'include_bonus_order', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
626                                 addConfigChangeSql('bonus_ref_yn'  , 'include_bonus_ref'  , "ENUM('Y','N') NOT NULL DEFAULT 'N'");
627                                 addConfigChangeSql('bonus_stats_yn', 'include_bonus_stats', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
628                                 addConfigChangeSql('bonus_login_yn', 'include_bonus_login', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
629                                 addConfigChangeSql('bonus_click_yn', 'include_bonus_click', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
630
631                                 // Register filter
632                                 registerFilter(__FILE__, __LINE__, 'add_bonus_points_user_columns', 'ADD_BONUS_POINTS_USER_COLUMNS', FALSE, TRUE, isExtensionDryRun());
633
634                                 // Update notes (these will be set as task text!)
635                                 setExtensionUpdateNotes("Konfigurationseintr&auml;ge umbenannt.");
636                                 break;
637
638                         case '0.9.8': // SQL queries for v0.9.8
639                                 // Register filter
640                                 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'BONUS_USER_REGISTRATION_ADD_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
641
642                                 // Add dependency to ext-register
643                                 addExtensionDependency('register');
644
645                                 // Update notes (these will be set as task text!)
646                                 setExtensionUpdateNotes("Filter zum Hinzuf&uuml;gen von SQL-Spalten bei der Mitgliederanmeldung.");
647                                 break;
648
649                         case '0.9.9': // SQL queries for v0.9.9
650                                 // Register filter
651                                 registerFilter(__FILE__, __LINE__, 'init', 'SEND_BONUS_NOTIFICATIONS', FALSE, TRUE, isExtensionDryRun());
652
653                                 // Update notes (these will be set as task text!)
654                                 setExtensionUpdateNotes("Filter zum Hinzuf&uuml;gen von SQL-Spalten bei der Mitgliederanmeldung.");
655                                 break;
656                 } // END - switch
657                 break;
658
659         case 'modify': // When the extension got modified
660                 break;
661
662         case 'test': // For testing purposes
663                 break;
664
665         case 'init': // Do stuff when extension is initialized
666                 break;
667
668         default: // Unknown extension mode
669                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
670                 break;
671 } // END - switch
672
673 // [EOF]
674 ?>