e39673bc6fc78470a81a1d9b6d13d0d2f116062e
[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('1.0.0');
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', '1.0.0'));
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                 unregisterFilter(__FILE__, __LINE__, 'config_userid_exclusion_sql', 'EXLCUDE_BONUS_USERID', TRUE, isExtensionDryRun());
101                 break;
102
103         case 'activate': // Do stuff when admin activates this extension
104                 // SQL commands to run
105                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `what`='bonus' LIMIT 1");
106                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y',`locked`='N' WHERE `action`='bonus' LIMIT 1");
107                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N',`hidden`='N',`admin_only`='N',`mem_only`='N' WHERE `module`='show_bonus' LIMIT 1");
108                 break;
109
110         case 'deactivate': // Do stuff when admin deactivates this extension
111                 // SQL commands to run
112                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `what`='bonus' LIMIT 1");
113                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N',`locked`='Y' WHERE `action`='bonus' LIMIT 1");
114                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='Y' WHERE `module`='show_bonus' LIMIT 1");
115                 break;
116
117         case 'update': // Update an extension
118                 switch (getCurrentExtensionVersion()) {
119                         case '0.1.6': // SQL queries for v0.1.6
120                                 // Update notes (these will be set as task text!)
121                                 setExtensionUpdateNotes("Paid-Links wurden verschoben in die Erweiterung <strong>sponsor</strong>.");
122                                 break;
123
124                         case '0.2.0': // SQL queries for v0.2.0
125                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `target_send`=`mails_sent` WHERE `target_send`=0 AND `mails_sent`>0 AND `receivers` != ''");
126
127                                 // Update notes (these will be set as task text!)
128                                 setExtensionUpdateNotes("Behebt ein Versand-Problem mit den Bonus-Mails. Es wurde die Spalte target_send nicht beim Einf&uuml;gen der Buchung gessetzt.");
129                                 break;
130
131                         case '0.2.1': // SQL queries for v0.2.1
132                                 // Add extension dependency to ex-tuser because of the ALTER command
133                                 addExtensionDependency('user');
134
135                                 addConfigAddSql('login_bonus', 'FLOAT(20,3) NOT NULL DEFAULT 10.000');
136                                 addConfigAddSql('turbo_bonus', 'FLOAT(20,3) NOT NULL DEFAULT 100.000');
137                                 addConfigAddSql('login_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT {?ONE_DAY?}');
138                                 addConfigAddSql('turbo_rates', "VARCHAR(255) NOT NULL DEFAULT '50;20;10'");
139                                 addConfigAddSql('bonus_ranks', 'TINYINT(3) UNSIGNED NOT NULL DEFAULT 10');
140
141                                 // Use actual month for this update
142                                 addExtensionAddTableColumnSql('user_data', 'login_bonus', 'FLOAT(20,3) NOT NULL DEFAULT 0.000');
143                                 addExtensionAddTableColumnSql('user_data', 'turbo_bonus', 'FLOAT(20,3) NOT NULL DEFAULT 0.000');
144
145                                 // Update notes (these will be set as task text!)
146                                 setExtensionUpdateNotes("Login-Bonus und Turbo-Klick-Bonus intergriert.");
147                                 break;
148
149                         case '0.2.2': // SQL queries for v0.2.2
150                                 addDropTableSql('bonus_turbo');
151                                 addCreateTableSql('bonus_turbo', "
152 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
153 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
154 `mail_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
155 `bonus_id` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
156 `level` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
157 `points` FLOAT(20,3) NOT NULL DEFAULT 0.000,
158 `timemark` VARCHAR(32) NOT NULL DEFAULT 0,
159 PRIMARY KEY (`id`),
160 INDEX `mail_id` (`mail_id`),
161 INDEX `bonus_id` (`bonus_id`),
162 INDEX `userid` (`userid`)",
163                                         'Fastest click rallye table');
164
165                                 // Update notes (these will be set as task text!)
166                                 setExtensionUpdateNotes("Turbo-Bonus wird in Tabelle gez&auml;hlt f&uuml;r Anzeige, wer alles bereits geklickt hat und welchen Platz er gemacht hat.");
167                                 break;
168
169                         case '0.2.3': // SQL queries for v0.2.3
170                                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='bonus' LIMIT 1");
171                                 addMemberMenuSql('main', 'bonus', 'Aktiv-Rallye', 7);
172
173                                 // Update notes (these will be set as task text!)
174                                 setExtensionUpdateNotes("Aktiv-Rallye mit Klick-Verg&uuml;tung hinzugef&uuml;gt.");
175                                 break;
176
177                         case '0.2.4': // SQL queries for v0.2.4
178                                 // Update notes (these will be set as task text!)
179                                 setExtensionUpdateNotes("Wegen des Theme-Supportes hat sich die URL zur CSS-Datei ge&auml;ndert.");
180                                 break;
181
182                         case '0.2.5': // SQL queries for v0.2.5
183                                 addDropTableSql('bonus_urls');
184                                 addDropTableSql('bonus_customer');
185
186                                 // Update notes (these will be set as task text!)
187                                 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.");
188                                 break;
189
190                         case '0.2.6': // SQL queries for v0.2.6
191                                 // Update notes (these will be set as task text!)
192                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
193                                 break;
194
195                         case '0.2.7': // SQL queries for v0.2.7
196                                 // Update notes (these will be set as task text!)
197                                 setExtensionUpdateNotes("Turbo-Bonus klappt wieder (dies sind {?POINTS?} die an die schnellsten Klicker verg&uuml;tet werden!)");
198                                 break;
199
200                         case '0.2.8': // SQL queries for v0.2.8
201                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `timestamp`=0 WHERE `timestamp`='0000000000'");
202                                 addExtensionChangeTableColumnSql('bonus_turbo', 'points', 'points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
203                                 addExtensionChangeTableColumnSql('user_data', 'turbo_bonus', 'turbo_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
204                                 addExtensionChangeTableColumnSql('user_data', 'login_bonus', 'login_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
205
206                                 // For configuration, we need different entries
207                                 addExtensionAddTableColumnSql('user_data', 'turbo_bonus', 'turbo_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
208                                 addExtensionAddTableColumnSql('user_data', 'login_bonus', 'login_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
209
210                                 // Update notes (these will be set as task text!)
211                                 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
212                                 break;
213
214                         case '0.2.9': // SQL queries for v0.2.9
215                                 // Update notes (these will be set as task text!)
216                                 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
217                                 break;
218
219                         case '0.3.0': // SQL queries for v0.3.0
220                                 // Update notes (these will be set as task text!)
221                                 setExtensionUpdateNotes("Men&uuml;punkte im Gast-/Mitgliedsbereich k&ouml;nnen nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
222                                 break;
223
224                         case '0.3.1': // SQL queries for v0.3.1
225                                 // Update notes (these will be set as task text!)
226                                 setExtensionUpdateNotes("Sicherheitsupdate am Script <u>show_bonus.php</u> durchgef&uuml;hrt.");
227                                 break;
228
229                         case '0.3.2': // SQL queries for v0.3.2
230                                 // Update notes (these will be set as task text!)
231                                 setExtensionUpdateNotes("Design &quot;Solid-Business&quot; eingebaut.");
232                                 break;
233
234                         case '0.3.3': // SQL queries for v0.3.3
235                                 // Update notes (these will be set as task text!)
236                                 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
237                                 break;
238
239                         case '0.3.4': // SQL queries for v0.3.4
240                                 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);
241
242                                 // Update notes (these will be set as task text!)
243                                 setExtensionUpdateNotes("Link <u>Aktiv-Rallye-Teilnehmer</u> hinzugef&uuml;gt, inklusive manuelle Vorbereitung der Verg&uuml;tung.");
244                                 break;
245
246                         case '0.3.5': // SQL queries for v0.3.5
247                                 addConfigAddSql('bonus_mode', "ENUM('UID','JACKPOT','ADD') NOT NULL DEFAULT 'ADD'");
248                                 addConfigAddSql('bonus_userid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
249
250                                 // Update notes (these will be set as task text!)
251                                 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.");
252                                 break;
253
254                         case '0.3.6': // SQL queries for v0.3.6
255                                 // Update notes (these will be set as task text!)
256                                 setExtensionUpdateNotes("In der Admin-Liste werden nur aktive Mitglieder gelistet und zudem die sp&auml;teste Zeitmarke f&uuml;r die Auswertung angezeigt.");
257                                 break;
258
259                         case '0.3.7': // SQL queries for v0.3.7
260                                 // Update notes (these will be set as task text!)
261                                 setExtensionUpdateNotes("Mitglieder-Account auw&auml;hlbar, von dem die {?POINTS?} f&uuml;r den Aktiv- und Login-Bonus abgebucht werden.");
262                                 break;
263
264                         case '0.3.8': // SQL queries for v0.3.8
265                                 // Update notes (these will be set as task text!)
266                                 setExtensionUpdateNotes("Ausgabe des generierten HTML-Codes nach <u>inc/footer.php</u> verlagert.");
267                                 break;
268
269                         case '0.3.9': // SQL queries for v0.3.9
270                                 // Update notes (these will be set as task text!)
271                                 setExtensionUpdateNotes("Fehlende Variablen gefixt.");
272                                 break;
273
274                         case '0.4.0': // SQL queries for v0.4.0
275                                 addConfigAddSql('bonus_timeout', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
276                                 addConfigAddSql('bonus_lines', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
277
278                                 // Update notes (these will be set as task text!)
279                                 setExtensionUpdateNotes("Automatisches L&ouml;schen von Turbo-Bonus-Zeilen ({?_MYSQL_PREFIX?}_bonus_turbo) und begrenzte Anzahl von Eintr&auml;gen hinzugef&uuml;gt.");
280                                 break;
281
282                         case '0.4.1': // SQL queries for v0.4.1
283                                 // Update notes (these will be set as task text!)
284                                 setExtensionUpdateNotes("Verg&uuml;tung des Aktiv-Bonus repariert.");
285                                 break;
286
287                         case '0.4.2': // SQL queries for v0.4.2
288                                 // Update notes (these will be set as task text!)
289                                 setExtensionUpdateNotes("Admin-Bereich / Aktiv-Teilnehmer auflisten: Problem mit Konstante __AUTOPURGE_TIMEOUT und das Template <u>admin_list_bonus.tpl</u> korregiert.");
290                                 break;
291
292                         case '0.4.3': // SQL queries for v0.4.3
293                                 // Update notes (these will be set as task text!)
294                                 setExtensionUpdateNotes("Verbesserung des Versandes von  HTML-Bonus-Mails.");
295                                 break;
296
297                         case '0.4.4': // SQL queries for v0.4.4
298                                 addConfigAddSql('bonus_order', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 15.00000');
299                                 addConfigAddSql('bonus_ref', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 100.00000');
300                                 addConfigAddSql('bonus_stats', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 5.00000');
301                                 addConfigAddSql('bonus_active', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
302                                 addExtensionAddTableColumnSql('user_data', 'bonus_order', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
303                                 addExtensionAddTableColumnSql('user_data', 'bonus_ref', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
304                                 addExtensionAddTableColumnSql('user_data', 'bonus_stats', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
305
306                                 // Update notes (these will be set as task text!)
307                                 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.");
308                                 break;
309
310                         case '0.4.5': // SQL queries for v0.4.5
311                                 // Update notes (these will be set as task text!)
312                                 setExtensionUpdateNotes("Abzug vom Bonus-Account integriert.");
313                                 break;
314
315                         case '0.4.6': // SQL queries for v0.4.6
316                                 // Update notes (these will be set as task text!)
317                                 setExtensionUpdateNotes("Rank 2 bekommt nun auch seine {?POINTS?} gutgeschrieben.");
318                                 break;
319
320                         case '0.4.7': // SQL queries for v0.4.7
321                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `login_bonus`=0,`turbo_bonus`=0,`bonus_ref`=0,`bonus_order`=0,`bonus_stats`=0");
322
323                                 // Update notes (these will be set as task text!)
324                                 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.");
325                                 break;
326
327                         case '0.4.8': // SQL queries for v0.4.8
328                                 // Update notes (these will be set as task text!)
329                                 setExtensionUpdateNotes("In <u>inc/monthly_bonus.php</u> fehlte ein Punkt; Fehler besseitigt.");
330                                 break;
331
332                         case '0.4.9': // SQL queries for v0.4.9
333                                 // Update notes (these will be set as task text!)
334                                 setExtensionUpdateNotes("Login-Bonus wird mit angezeigt.");
335                                 break;
336
337                         case '0.5.0': // SQL queries for v0.5.0
338                                 // Update notes (these will be set as task text!)
339                                 setExtensionUpdateNotes("Problem mit <strong>is_hundred</strong> beim t&auml;glichen Reset beseitigt.");
340                                 break;
341
342                         case '0.5.1': // SQL queries for v0.5.1
343                                 // Update notes (these will be set as task text!)
344                                 setExtensionUpdateNotes("Problem mit <strong>bonus_stats / Zeile 31</strong> beim t&auml;glichen Reset beseitigt.");
345                                 break;
346
347                         case '0.5.2': // SQL queries for v0.5.2
348                                 // Update notes (these will be set as task text!)
349                                 setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
350                                 break;
351
352                         case '0.5.3': // SQL queries for v0.5.3
353                                 // Update notes (these will be set as task text!)
354                                 setExtensionUpdateNotes("Speichern der Aktiv-{?POINTS?} f&uuml;r Platz 2 bis <strong>x</strong> korregiert.");
355                                 break;
356
357                         case '0.5.4': // SQL queries for v0.5.4
358                                 // Update notes (these will be set as task text!)
359                                 setExtensionUpdateNotes("Variablenfehler in <strong>inc/monthly_bonus.php</strong> behoben.");
360                                 break;
361
362                         case '0.5.5': // SQL queries for v0.5.5
363                                 // Update notes (these will be set as task text!)
364                                 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.");
365                                 break;
366
367                         case '0.5.6': // SQL queries for v0.5.6
368                                 // Get current month
369                                 $curr = padLeftZero(getMonth());
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('user_data', 'bonus_ral_en_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
494                                 addExtensionAddTableColumnSql('user_data', 'bonus_ral_di_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
495                                 addExtensionAddTableColumnSql('user_data', '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', 'INT(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                                 // Update notes
622                                 setExtensionUpdateNotes("Monatlicher Bonus wird nun &uuml;ber die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
623                                 break;
624
625                         case '0.9.7': // SQL queries for v0.9.7
626                                 addConfigChangeSql('bonus_order_yn', 'include_bonus_order', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
627                                 addConfigChangeSql('bonus_ref_yn'  , 'include_bonus_ref'  , "ENUM('Y','N') NOT NULL DEFAULT 'N'");
628                                 addConfigChangeSql('bonus_stats_yn', 'include_bonus_stats', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
629                                 addConfigChangeSql('bonus_login_yn', 'include_bonus_login', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
630                                 addConfigChangeSql('bonus_click_yn', 'include_bonus_click', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
631
632                                 // Register filter
633                                 registerFilter(__FILE__, __LINE__, 'add_bonus_points_user_columns', 'ADD_BONUS_POINTS_USER_COLUMNS', FALSE, TRUE, isExtensionDryRun());
634
635                                 // Update notes (these will be set as task text!)
636                                 setExtensionUpdateNotes("Konfigurationseintr&auml;ge umbenannt.");
637                                 break;
638
639                         case '0.9.8': // SQL queries for v0.9.8
640                                 // Register filter
641                                 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'BONUS_USER_REGISTRATION_ADD_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
642
643                                 // Add dependency to ext-register
644                                 addExtensionDependency('register');
645
646                                 // Update notes (these will be set as task text!)
647                                 setExtensionUpdateNotes("Filter zum Hinzuf&uuml;gen von SQL-Spalten bei der Mitgliederanmeldung.");
648                                 break;
649
650                         case '0.9.9': // SQL queries for v0.9.9
651                                 // Register filter
652                                 registerFilter(__FILE__, __LINE__, 'init', 'SEND_BONUS_NOTIFICATIONS', FALSE, TRUE, isExtensionDryRun());
653
654                                 // Update notes (these will be set as task text!)
655                                 setExtensionUpdateNotes("Filter zum Hinzuf&uuml;gen von SQL-Spalten bei der Mitgliederanmeldung.");
656                                 break;
657
658                         case '1.0.0': // SQL queries for v1.0.0
659                                 addExtensionChangeTableColumnSql('bonus_turbo', 'mail_id' , 'mail_id', 'UNSIGNED NULL DEFAULT NULL');
660                                 addExtensionChangeTableColumnSql('bonus_turbo', 'bonus_id', 'mail_id', 'UNSIGNED NULL DEFAULT NULL');
661
662                                 // Register filter
663                                 registerFilter(__FILE__, __LINE__, 'config_userid_exclusion_sql', 'EXLCUDE_BONUS_USERID', FALSE, TRUE, isExtensionDryRun());
664
665                                 // Update notes (these will be set as task text!)
666                                 setExtensionUpdateNotes("Filter zum Ausschlie&szlig;en des konfigurierten Mitgliedaccounts.");
667                                 break;
668                 } // END - switch
669                 break;
670
671         case 'modify': // When the extension got modified
672                 break;
673
674         case 'test': // For testing purposes
675                 break;
676
677         case 'init': // Do stuff when extension is initialized
678                 break;
679
680         default: // Unknown extension mode
681                 reportBug(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
682                 break;
683 } // END - switch
684
685 // [EOF]
686 ?>