Renamed many stuff (again), added points/user breakup:
[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                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_links` ADD INDEX (`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                                 addConfigChangeSql('user_data', 'turbo_bonus', 'turbo_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
207                                 addConfigChangeSql('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 = getMonth();
369                                 if (strlen($curr) == 1) $curr = '0' . $curr;
370                                 if ($curr == '00') $curr = '12';
371
372                                 // Generate timemark...
373                                 $mark = mktime(0, 0, 0, $curr, 1, getYear());
374
375                                 // Update accounts which are not active last months
376                                 addExtensionSql("UPDATE
377         `{?_MYSQL_PREFIX?}_user_data`
378 SET
379         `turbo_bonus`=0,
380         `login_bonus`=0,
381         `bonus_order`=0,
382         `bonus_stats`=0,
383         `bonus_ref`=0
384 WHERE
385         `last_online` < ".$mark."
386 ORDER BY
387         `userid` ASC");
388
389                                 // Update notes (these will be set as task text!)
390                                 setExtensionUpdateNotes("Ein weiterer Scriptfehler hat nur die Gewinner aus der Aktiv-Rallye genommen. Die anderen Mitglieder sind somit &quot;nach oben gerutsch&quot;.");
391                                 break;
392
393                         case '0.5.7': // SQL queries for v0.5.7
394                                 break;
395
396                         case '0.5.8': // SQL queries for v0.5.8
397                                 // Update notes (these will be set as task text!)
398                                 setExtensionUpdateNotes("Problem mit <strong>is_hundred</strong> beim t&auml;glichen Reset endlich beseitigt.");
399                                 break;
400
401                         case '0.5.9': // SQL queries for v0.5.9
402                                 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.");
403                                 break;
404
405                         case '0.6.0': // SQL queries for v0.6.0
406                                 setExtensionUpdateNotes("SQL-Fehlermeldung in <strong>inc/monthly_bonus.php</strong> beseitigt.");
407                                 break;
408
409                         case '0.6.1': // SQL queries for v0.6.1
410                                 setExtensionUpdateNotes("Versand von Bonus-Mails repariert.");
411                                 break;
412
413                         case '0.6.2': // SQL queries for v0.6.2
414                                 setExtensionUpdateNotes("L&ouml;schen von bereits gel&ouml;schten Mails wird nun abgelehnt.");
415                                 break;
416
417                         case '0.6.3': // SQL queries for v0.6.3
418                                 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
419                                 break;
420
421                         case '0.6.4': // SQL queries for v0.6.4
422                                 // Update notes (these will be set as task text!)
423                                 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.");
424                                 break;
425
426                         case '0.6.5': // SQL queries for v0.6.5
427                                 addExtensionAddTableColumnSql('user_stats', 'bonus_stats', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
428
429                                 // Update notes (these will be set as task text!)
430                                 setExtensionUpdateNotes("Fehler mit bonus_stats beseitigt.");
431                                 break;
432
433                         case '0.6.6': // SQL queries for v0.6.6
434                                 setExtensionUpdateNotes("Template-Fehler beseitigt im Admin-Bereich.");
435                                 break;
436
437                         case '0.6.7': // SQL queries for v0.6.7
438                                 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
439                                 break;
440
441                         case '0.6.8': // SQL queries for v0.6.8
442                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `data_type`='SEND' WHERE `data_type` != 'SEND' AND `data_type` != 'DELETED' AND `receivers`='' AND `target_send`=0");
443
444                                 // Update notes (these will be set as task text!)
445                                 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.");
446                                 break;
447
448                         case '0.6.9': // SQL queries for v0.6.9
449                                 addConfigAddSql('bonus_order_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
450                                 addConfigAddSql('bonus_ref_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
451                                 addConfigAddSql('bonus_stats_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
452                                 addConfigAddSql('bonus_login_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
453                                 addConfigAddSql('bonus_click_yn', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
454
455                                 // Update notes (these will be set as task text!)
456                                 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).");
457                                 break;
458
459                         case '0.7.0': // SQL queries for v0.7.0
460                                 setExtensionUpdateNotes("Zuschaltung von weiteren Bonis wird jetzt auch bei der Auflistung der mitmachenden Mitglieder im Mitgliedsbereich beachtet.");
461                                 break;
462
463                         case '0.7.1': // SQL queries for v0.7.1
464                                 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.");
465                                 break;
466
467                         case '0.7.2': // SQL queries for v0.7.2
468                                 setExtensionUpdateNotes("Die Verg&uuml;tung der erreichten 100%-Klickrate war noch wegen Programmierungen am Script auskommentiert. Sorry!");
469                                 break;
470
471                         case '0.7.3': // SQL queries for v0.7.3
472                                 setExtensionUpdateNotes("Gutgeschriebene Bonus-{?POINTS?} werden nach Deaktivierung der Aktiv-Rallye gel&ouml;scht.");
473                                 break;
474
475                         case '0.7.4': // SQL queries for v0.7.4
476                                 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen. (<strong>member_bonus.tpl</strong>)");
477                                 break;
478
479                         case '0.7.5': // SQL queries for v0.7.5
480                                 setExtensionUpdateNotes("Im Admin-Bereich Hinweis hinzugef&uuml;gt, wenn Aktiv-Rallye inaktiv ist. Bitte Script inc/monthly_bonus.php l&ouml;schen!");
481                                 break;
482
483                         case '0.7.6': // SQL queries for v0.7.6
484                                 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.");
485                                 break;
486
487                         case '0.7.7': // SQL queries for v0.7.7
488                                 addConfigAddSql('bonus_en_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
489                                 addConfigAddSql('bonus_di_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
490                                 addConfigAddSql('bonus_new_mem_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
491                                 addConfigAddSql('bonus_notify_points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
492                                 addConfigAddSql('bonus_notify_wait', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 30');
493                                 addExtensionAddTableColumnSql('online', 'bonus_ral_en_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
494                                 addExtensionAddTableColumnSql('online', 'bonus_ral_di_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
495                                 addExtensionAddTableColumnSql('online', 'bonus_ral_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
496
497                                 // Update notes (these will be set as task text!)
498                                 setExtensionUpdateNotes("Optionale automatische Benachrichtigung &uuml;ber aktivierte und/oder deaktivierte Aktiv-Rallye einstellbar.");
499                                 break;
500
501                         case '0.7.8': // SQL queries for v0.7.8
502                                 // Update notes (these will be set as task text!)
503                                 setExtensionUpdateNotes("Fehler im t&auml;glichen Reset beseitigt.");
504                                 break;
505
506                         case '0.7.9': // SQL queries for v0.7.9
507                                 setExtensionUpdateNotes("Dollarzeichen fehlte in <strong>inc/daily/daily_bonus.php</strong>, Zeile 39");
508                                 break;
509
510                         case '0.8.0': // SQL queries for v0.8.0
511                                 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verkn&uuml;pften Modules eingebunden.");
512                                 break;
513
514                         case '0.8.1': // SQL queries for v0.8.1
515                                 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als n&auml;chstes nach wer als letztes Online war umsortiert.");
516                                 break;
517
518                         case '0.8.2': // SQL queries for v0.8.2
519                                 addConfigAddSql('bonus_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
520                                 addExtensionAddTableColumnSql('bonus', 'is_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
521
522                                 // Update notes (these will be set as task text!)
523                                 setExtensionUpdateNotes("Eigene Mitglieds-Ids sind von der Aktiv-Rallye nun ausschliessbar. Benachrichtigungsmails sind von Aktiv-Rallye ausgeschlossen.");
524                                 break;
525
526                         case '0.8.3': // SQL queries for v0.8.3
527                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals',`sort`=2,`title`='Aktiv-Rallye' WHERE `what`='bonus' LIMIT 1");
528
529                                 // Update notes (these will be set as task text!)
530                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
531                                 break;
532
533                         case '0.8.4': // SQL queries for v0.8.4
534                                 setExtensionUpdateNotes("Ladeproblem bei nicht installierter Erweiterung <strong>cache</strong> gefixt.");
535                                 break;
536
537                         case '0.8.5': // SQL queries for v0.8.5
538                                 setExtensionUpdateNotes("CSS-Klassenname gefixt in Templates.");
539                                 break;
540
541                         case '0.8.6': // SQL queries for v0.8.6
542                                 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
543                                 break;
544
545                         case '0.8.7': // SQL queries for v0.8.7
546                                 addAdminMenuSql('email','list_notifications','Benachrichtigungen','Listet alle an die Mitglieder ausgesandten Benachrichtigungen auf.', 10);
547
548                                 // Update notes
549                                 setExtensionUpdateNotes("Benachrichtigungsmails f&uuml;r z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
550                                 break;
551
552                         case '0.8.8': // SQL queries for v0.8.8
553                                 addExtensionAddTableColumnSql('user_stats', 'bonus_stats_active', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
554
555                                 // Update notes
556                                 setExtensionUpdateNotes("Benachrichtigungsmails f&uuml;r z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
557                                 break;
558
559                         case '0.8.9': // SQL queries for v0.8.9
560                                 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);
561
562                                 // Update notes
563                                 setExtensionUpdateNotes("Benachrichtigungsmails f&uuml;r z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
564                                 break;
565
566                         case '0.9.0': // SQL queries for v0.9.0
567                                 // Register filter
568                                 registerFilter(__FILE__, __LINE__, 'member_login_check', 'ADD_LOGIN_BONUS', FALSE, TRUE, isExtensionDryRun());
569
570                                 // Update notes
571                                 setExtensionUpdateNotes("Filter hinzugef&uuml;gt der den Login-Bonus aktualisiert (bzw. soll) (internes TODO).");
572                                 break;
573
574                         case '0.9.1': // SQL queries for v0.9.1
575                                 addConfigChangeSql('bonus_en_notify', 'bonus_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
576                                 addConfigChangeSql('bonus_di_notify', 'bonus_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
577                                 addConfigChangeSql('bonus_new_mem_notify', 'bonus_new_member_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
578
579                                 // Update notes
580                                 setExtensionUpdateNotes("Umbenannt nach neuer Konvention (bitte Einstellungen kontrollieren).");
581                                 break;
582
583                         case '0.9.2': // SQL queries for v0.9.2
584                                 addExtensionChangeTableColumnSql('user_data', 'bonus_ral_en_notify` `bonus_ralley_enable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
585                                 addExtensionChangeTableColumnSql('user_data', 'bonus_ral_di_notify` `bonus_ralley_disable_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
586                                 addExtensionChangeTableColumnSql('user_data', 'bonus_ral_notify` `bonus_rallley_notify` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
587
588                                 // Update notes
589                                 setExtensionUpdateNotes("Umbenannt nach neuer Konvention (bitte Einstellungen kontrollieren).");
590                                 break;
591
592                         case '0.9.3': // SQL queries for v0.9.3
593                                 addExtensionChangeTableColumnSql('user_data', 'bonus_ralley_enable_notify', 'bonus_rallye_enable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
594                                 addExtensionChangeTableColumnSql('user_data', 'bonus_ralley_disable_notify', 'bonus_rallye_disable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
595                                 addExtensionDropTableColumnSql('user_data', 'bonus_ralley_notify');
596
597                                 // Update notes
598                                 setExtensionUpdateNotes("Typos gefixt.");
599                                 break;
600
601                         case '0.9.4': // SQL queries for v0.9.4
602                                 addExtensionChangeTableColumnSql('user_links', 'bonus_id', 'bonus_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
603                                 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_links` SET `bonus_id`=NULL WHERE `bonus_id`=0');
604
605                                 // Update notes
606                                 setExtensionUpdateNotes("Konfliktierende SQL-Befehle aus ext-user verschoben.");
607                                 break;
608
609                         case '0.9.5': // SQL queries for v0.9.5
610                                 // Register filter
611                                 registerFilter(__FILE__, __LINE__, 'generate_admin_mail_links', 'GENERATE_BONUS_MAIL_LINKS', FALSE, TRUE, isExtensionDryRun());
612
613                                 // Update notes
614                                 setExtensionUpdateNotes("Filter zum Generieren von Admin-Links f&uuml;r Bonus-Mails hinzugef&uuml;gt.");
615                                 break;
616
617                         case '0.9.6': // SQL queries for v0.9.6
618                                 // Register points data
619                                 registerExtensionPointsData('monthly_bonus', 'points', 'LOCKED', 'DIRECT');
620
621                                 // This depends on ext-sql_patches
622                                 addExtensionDependency('sql_patches');
623
624                                 // Update notes
625                                 setExtensionUpdateNotes("Monatlicher Bonus wird nun &uuml;ber die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
626                                 break;
627
628                         case '0.9.7': // SQL queries for v0.9.7
629                                 addConfigChangeSql('bonus_order_yn', 'include_bonus_order', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
630                                 addConfigChangeSql('bonus_ref_yn'  , 'include_bonus_ref'  , "ENUM('Y','N') NOT NULL DEFAULT 'N'");
631                                 addConfigChangeSql('bonus_stats_yn', 'include_bonus_stats', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
632                                 addConfigChangeSql('bonus_login_yn', 'include_bonus_login', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
633                                 addConfigChangeSql('bonus_click_yn', 'include_bonus_click', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
634
635                                 // Register filter
636                                 registerFilter(__FILE__, __LINE__, 'add_bonus_points_user_columns', 'ADD_BONUS_POINTS_USER_COLUMNS', FALSE, TRUE, isExtensionDryRun());
637
638                                 // Update notes (these will be set as task text!)
639                                 setExtensionUpdateNotes("Konfigurationseintr&auml;ge umbenannt.");
640                                 break;
641
642                         case '0.9.8': // SQL queries for v0.9.8
643                                 // Register filter
644                                 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'BONUS_USER_REGISTRATION_ADD_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
645
646                                 // Add dependency to ext-register
647                                 addExtensionDependency('register');
648
649                                 // Update notes (these will be set as task text!)
650                                 setExtensionUpdateNotes("Filter zum Hinzuf&uuml;gen von SQL-Spalten bei der Mitgliederanmeldung.");
651                                 break;
652
653                         case '0.9.9': // SQL queries for v0.9.9
654                                 // Register filter
655                                 registerFilter(__FILE__, __LINE__, 'init', 'SEND_BONUS_NOTIFICATIONS', FALSE, TRUE, isExtensionDryRun());
656
657                                 // Update notes (these will be set as task text!)
658                                 setExtensionUpdateNotes("Filter zum Hinzuf&uuml;gen von SQL-Spalten bei der Mitgliederanmeldung.");
659                                 break;
660                 } // END - switch
661                 break;
662
663         case 'modify': // When the extension got modified
664                 break;
665
666         case 'test': // For testing purposes
667                 break;
668
669         case 'init': // Do stuff when extension is initialized
670                 break;
671
672         default: // Unknown extension mode
673                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
674                 break;
675 } // END - switch
676
677 // [EOF]
678 ?>