2 /************************************************************************
3 * Mailer v0.2.1-FINAL Start: 04/04/2004 *
4 * =================== Last change: 06/13/2005 *
6 * -------------------------------------------------------------------- *
7 * File : ext-bonus.php *
8 * -------------------------------------------------------------------- *
9 * Short description : Bonus pages *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Bonus-Seiten *
12 * -------------------------------------------------------------------- *
15 * $Tag:: 0.2.1-FINAL $ *
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 *
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. *
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. *
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, *
36 ************************************************************************/
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
43 // Version of this extension
44 setThisExtensionVersion('0.9.9');
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'));
49 switch (getExtensionMode()) {
50 case 'register': // Do stuff when installation is running
51 // Add dependency to 'user'
52 addExtensionDependency('user');
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ö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,
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'");
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');
91 // Unregister points data
92 unregisterExtensionPointsData('monthly_bonus');
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());
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");
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");
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>.");
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` != ''");
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ügen der Buchung gessetzt.");
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');
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');
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');
144 // Update notes (these will be set as task text!)
145 setExtensionUpdateNotes("Login-Bonus und Turbo-Klick-Bonus intergriert.");
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,
159 INDEX `mail_id` (`mail_id`),
160 INDEX `bonus_id` (`bonus_id`),
161 INDEX `userid` (`userid`)",
162 'Fastest click rallye table');
164 // Update notes (these will be set as task text!)
165 setExtensionUpdateNotes("Turbo-Bonus wird in Tabelle gezählt für Anzeige, wer alles bereits geklickt hat und welchen Platz er gemacht hat.");
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);
172 // Update notes (these will be set as task text!)
173 setExtensionUpdateNotes("Aktiv-Rallye mit Klick-Vergütung hinzugefügt.");
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ändert.");
181 case '0.2.5': // SQL queries for v0.2.5
182 addDropTableSql('bonus_urls');
183 addDropTableSql('bonus_customer');
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.");
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.");
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ütet werden!)");
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');
205 // For configuration, we need different entries
206 addExtensionAddTableColumnSql('user_data', 'turbo_bonus', 'turbo_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
207 addExtensionAddTableColumnSql('user_data', 'login_bonus', 'login_bonus', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
209 // Update notes (these will be set as task text!)
210 setExtensionUpdateNotes("5 Nachkommastellen implementiert");
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.");
218 case '0.3.0': // SQL queries for v0.3.0
219 // Update notes (these will be set as task text!)
220 setExtensionUpdateNotes("Menüpunkte im Gast-/Mitgliedsbereich können nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
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ührt.");
228 case '0.3.2': // SQL queries for v0.3.2
229 // Update notes (these will be set as task text!)
230 setExtensionUpdateNotes("Design "Solid-Business" eingebaut.");
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> überflüssige HTML-Tags entfernt.");
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öglichen Gewinner an.', 10);
241 // Update notes (these will be set as task text!)
242 setExtensionUpdateNotes("Link <u>Aktiv-Rallye-Teilnehmer</u> hinzugefügt, inklusive manuelle Vorbereitung der Vergütung.");
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');
249 // Update notes (these will be set as task text!)
250 setExtensionUpdateNotes("Der Login-Bonus Aktiv-Bonus (= Klick-Bonus) können nun zuerst von einem Mitgliederaccount (das sollte Ihres sein!), vom Jackpot abgezogen oder einfach dazuadiert werden.");
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äteste Zeitmarke für die Auswertung angezeigt.");
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ählbar, von dem die {?POINTS?} für den Aktiv- und Login-Bonus abgebucht werden.");
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.");
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.");
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');
277 // Update notes (these will be set as task text!)
278 setExtensionUpdateNotes("Automatisches Löschen von Turbo-Bonus-Zeilen ({?_MYSQL_PREFIX?}_bonus_turbo) und begrenzte Anzahl von Einträgen hinzugefügt.");
281 case '0.4.1': // SQL queries for v0.4.1
282 // Update notes (these will be set as task text!)
283 setExtensionUpdateNotes("Vergütung des Aktiv-Bonus repariert.");
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.");
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.");
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');
305 // Update notes (these will be set as task text!)
306 setExtensionUpdateNotes("Bonus-{?POINTS?} fü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 überflüssig geworden. Bitte löschen Sie dies!<br />Eingestellte Bonus-{?POINTS?} für Rank 2 war um eins verschoben.");
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.");
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.");
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");
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ückgesetzt worden.");
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.");
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.");
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äglichen Reset beseitigt.");
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äglichen Reset beseitigt.");
346 case '0.5.2': // SQL queries for v0.5.2
347 // Update notes (these will be set as task text!)
348 setExtensionUpdateNotes("Wörter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
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ür Platz 2 bis <strong>x</strong> korregiert.");
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.");
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ür gesorgt, dass die monatliche Aktiv-Rallye nicht ausgeschüttet wurde. Mit diesem Update wurde die Ausschüttung initialisiert. Ihre Mitglieder bekommen voraussichtlicht nichts doppelt vergütet.");
366 case '0.5.6': // SQL queries for v0.5.6
368 $curr = str_pad(getMonth(), 2, '0', STR_PAD_LEFT);
369 if ($curr == '00') $curr = '12';
371 // Generate timemark...
372 $mark = mktime(0, 0, 0, $curr, 1, getYear());
374 // Update accounts which are not active last months
375 addExtensionSql("UPDATE
376 `{?_MYSQL_PREFIX?}_user_data`
384 `last_online` < ".$mark."
388 // Update notes (these will be set as task text!)
389 setExtensionUpdateNotes("Ein weiterer Scriptfehler hat nur die Gewinner aus der Aktiv-Rallye genommen. Die anderen Mitglieder sind somit "nach oben gerutsch".");
392 case '0.5.7': // SQL queries for v0.5.7
395 case '0.5.8': // SQL queries for v0.5.8
396 // Update notes (these will be set as task text!)
397 setExtensionUpdateNotes("Problem mit <strong>is_hundred</strong> beim täglichen Reset endlich beseitigt.");
400 case '0.5.9': // SQL queries for v0.5.9
401 setExtensionUpdateNotes("Fehlermeldung <strong>/home/verzeichnis/html/inc/stats_bonus.php (42):You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' WHERE userid='59' LIMIT 1' at line 1</strong> beseitigt.");
404 case '0.6.0': // SQL queries for v0.6.0
405 setExtensionUpdateNotes("SQL-Fehlermeldung in <strong>inc/monthly_bonus.php</strong> beseitigt.");
408 case '0.6.1': // SQL queries for v0.6.1
409 setExtensionUpdateNotes("Versand von Bonus-Mails repariert.");
412 case '0.6.2': // SQL queries for v0.6.2
413 setExtensionUpdateNotes("Löschen von bereits gelöschten Mails wird nun abgelehnt.");
416 case '0.6.3': // SQL queries for v0.6.3
417 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
420 case '0.6.4': // SQL queries for v0.6.4
421 // Update notes (these will be set as task text!)
422 setExtensionUpdateNotes("Der Menüpunkt "Bonus-{?POINTS?}" unter Einstellungen wird nach "Aktiv-Rallye umbenannt. Und die Aktiv-Rallye konnte aufgrund eines Template-Fehlers nicht gespeichert werden.");
425 case '0.6.5': // SQL queries for v0.6.5
426 addExtensionAddTableColumnSql('user_stats', 'bonus_stats', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
428 // Update notes (these will be set as task text!)
429 setExtensionUpdateNotes("Fehler mit bonus_stats beseitigt.");
432 case '0.6.6': // SQL queries for v0.6.6
433 setExtensionUpdateNotes("Template-Fehler beseitigt im Admin-Bereich.");
436 case '0.6.7': // SQL queries for v0.6.7
437 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
440 case '0.6.8': // SQL queries for v0.6.8
441 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_bonus` SET `data_type`='SEND' WHERE `data_type` != 'SEND' AND `data_type` != 'DELETED' AND `receivers`='' AND `target_send`=0");
443 // Update notes (these will be set as task text!)
444 setExtensionUpdateNotes("Eingegebene Anzahl auszusendener Bonus-Mails wurde bei der Empfänderauswahl nicht berücksichtigt. Zudem wird jetzt das eingestellte Auswahlverfahren mitberücksichtigt.");
447 case '0.6.9': // SQL queries for v0.6.9
448 addConfigAddSql('bonus_order_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
449 addConfigAddSql('bonus_ref_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
450 addConfigAddSql('bonus_stats_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
451 addConfigAddSql('bonus_login_yn', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
452 addConfigAddSql('bonus_click_yn', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
454 // Update notes (these will be set as task text!)
455 setExtensionUpdateNotes("Es können nun auch die folgenden Vergütungen bei der Auswertung der monatlichen Aktiv-Rallye mit berücksichtigt werden: Mailbestätigung (war vorher schon), Login-, Mailbuchung, Referral und Statistik-Bonus (100% Klickrate erreicht).");
458 case '0.7.0': // SQL queries for v0.7.0
459 setExtensionUpdateNotes("Zuschaltung von weiteren Bonis wird jetzt auch bei der Auflistung der mitmachenden Mitglieder im Mitgliedsbereich beachtet.");
462 case '0.7.1': // SQL queries for v0.7.1
463 setExtensionUpdateNotes("Im Adminbereich wird nun ebenfalls die Zuschaltung von weiteren Bonis berücksichtigt. Zudem wird der Gesamtbonus an alle Mitglieder errechnet und auch angezeigt.");
466 case '0.7.2': // SQL queries for v0.7.2
467 setExtensionUpdateNotes("Die Vergütung der erreichten 100%-Klickrate war noch wegen Programmierungen am Script auskommentiert. Sorry!");
470 case '0.7.3': // SQL queries for v0.7.3
471 setExtensionUpdateNotes("Gutgeschriebene Bonus-{?POINTS?} werden nach Deaktivierung der Aktiv-Rallye gelöscht.");
474 case '0.7.4': // SQL queries for v0.7.4
475 setExtensionUpdateNotes("Rechtlichen Hinweis im Mitgliedsbereich vergessen. (<strong>member_bonus.tpl</strong>)");
478 case '0.7.5': // SQL queries for v0.7.5
479 setExtensionUpdateNotes("Im Admin-Bereich Hinweis hinzugefügt, wenn Aktiv-Rallye inaktiv ist. Bitte Script inc/monthly_bonus.php löschen!");
482 case '0.7.6': // SQL queries for v0.7.6
483 setExtensionUpdateNotes("Auswahlmechanismus der Gewinner repariert. Trotz Hinzuschalten von weiteren zu berücksichtigen Boni wurden diese bei der Sortierung der Mitglieds-Ids nicht berücksichtig.");
486 case '0.7.7': // SQL queries for v0.7.7
487 addConfigAddSql('bonus_en_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
488 addConfigAddSql('bonus_di_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
489 addConfigAddSql('bonus_new_mem_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
490 addConfigAddSql('bonus_notify_points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
491 addConfigAddSql('bonus_notify_wait', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 30');
492 addExtensionAddTableColumnSql('user_data', 'bonus_ral_en_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
493 addExtensionAddTableColumnSql('user_data', 'bonus_ral_di_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
494 addExtensionAddTableColumnSql('user_data', 'bonus_ral_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
496 // Update notes (these will be set as task text!)
497 setExtensionUpdateNotes("Optionale automatische Benachrichtigung über aktivierte und/oder deaktivierte Aktiv-Rallye einstellbar.");
500 case '0.7.8': // SQL queries for v0.7.8
501 // Update notes (these will be set as task text!)
502 setExtensionUpdateNotes("Fehler im täglichen Reset beseitigt.");
505 case '0.7.9': // SQL queries for v0.7.9
506 setExtensionUpdateNotes("Dollarzeichen fehlte in <strong>inc/daily/daily_bonus.php</strong>, Zeile 39");
509 case '0.8.0': // SQL queries for v0.8.0
510 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verknüpften Modules eingebunden.");
513 case '0.8.1': // SQL queries for v0.8.1
514 setExtensionUpdateNotes("Bei {?POINTS?}-Gleichstand wird als nächstes nach wer als letztes Online war umsortiert.");
517 case '0.8.2': // SQL queries for v0.8.2
518 addConfigAddSql('bonus_include_own', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
519 addExtensionAddTableColumnSql('bonus', 'is_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
521 // Update notes (these will be set as task text!)
522 setExtensionUpdateNotes("Eigene Mitglieds-Ids sind von der Aktiv-Rallye nun ausschliessbar. Benachrichtigungsmails sind von Aktiv-Rallye ausgeschlossen.");
525 case '0.8.3': // SQL queries for v0.8.3
526 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals',`sort`=2,`title`='Aktiv-Rallye' WHERE `what`='bonus' LIMIT 1");
528 // Update notes (these will be set as task text!)
529 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
532 case '0.8.4': // SQL queries for v0.8.4
533 setExtensionUpdateNotes("Ladeproblem bei nicht installierter Erweiterung <strong>cache</strong> gefixt.");
536 case '0.8.5': // SQL queries for v0.8.5
537 setExtensionUpdateNotes("CSS-Klassenname gefixt in Templates.");
540 case '0.8.6': // SQL queries for v0.8.6
541 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
544 case '0.8.7': // SQL queries for v0.8.7
545 addAdminMenuSql('email','list_notifications','Benachrichtigungen','Listet alle an die Mitglieder ausgesandten Benachrichtigungen auf.', 10);
548 setExtensionUpdateNotes("Benachrichtigungsmails für z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
551 case '0.8.8': // SQL queries for v0.8.8
552 addExtensionAddTableColumnSql('user_stats', 'bonus_stats_active', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
555 setExtensionUpdateNotes("Benachrichtigungsmails für z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
558 case '0.8.9': // SQL queries for v0.8.9
559 addAdminMenuSql('setup','config_bonus','Aktiv-Rallye','Richten Sie eine komplette Aktiv-Rallye hier ein. Legen Sie Vergütungen fest, die die Mitglieder für bestimmte Aktionen auf ihr Aktiv-Konto gutgeschrieben bekommen sollen.',8);
562 setExtensionUpdateNotes("Benachrichtigungsmails für z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
565 case '0.9.0': // SQL queries for v0.9.0
567 registerFilter(__FILE__, __LINE__, 'member_login_check', 'ADD_LOGIN_BONUS', FALSE, TRUE, isExtensionDryRun());
570 setExtensionUpdateNotes("Filter hinzugefügt der den Login-Bonus aktualisiert (bzw. soll) (internes TODO).");
573 case '0.9.1': // SQL queries for v0.9.1
574 addConfigChangeSql('bonus_en_notify', 'bonus_enable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
575 addConfigChangeSql('bonus_di_notify', 'bonus_disable_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
576 addConfigChangeSql('bonus_new_mem_notify', 'bonus_new_member_notify', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
579 setExtensionUpdateNotes("Umbenannt nach neuer Konvention (bitte Einstellungen kontrollieren).");
582 case '0.9.2': // SQL queries for v0.9.2
583 addExtensionChangeTableColumnSql('user_data', 'bonus_ral_en_notify', 'bonus_ralley_enable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
584 addExtensionChangeTableColumnSql('user_data', 'bonus_ral_di_notify', 'bonus_ralley_disable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
585 addExtensionChangeTableColumnSql('user_data', 'bonus_ral_notify', 'bonus_rallley_notify', 'INT(20)', 'UNSIGNED NOT NULL DEFAULT 0');
588 setExtensionUpdateNotes("Umbenannt nach neuer Konvention (bitte Einstellungen kontrollieren).");
591 case '0.9.3': // SQL queries for v0.9.3
592 addExtensionChangeTableColumnSql('user_data', 'bonus_ralley_enable_notify', 'bonus_rallye_enable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
593 addExtensionChangeTableColumnSql('user_data', 'bonus_ralley_disable_notify', 'bonus_rallye_disable_notify', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
594 addExtensionDropTableColumnSql('user_data', 'bonus_ralley_notify');
597 setExtensionUpdateNotes("Typos gefixt.");
600 case '0.9.4': // SQL queries for v0.9.4
601 addExtensionChangeTableColumnSql('user_links', 'bonus_id', 'bonus_id', 'BIGINT(20) UNSIGNED NULL DEFAULT NULL');
602 addExtensionSql('UPDATE `{?_MYSQL_PREFIX?}_user_links` SET `bonus_id`=NULL WHERE `bonus_id`=0');
605 setExtensionUpdateNotes("Konfliktierende SQL-Befehle aus ext-user verschoben.");
608 case '0.9.5': // SQL queries for v0.9.5
610 registerFilter(__FILE__, __LINE__, 'generate_admin_mail_links', 'GENERATE_BONUS_MAIL_LINKS', FALSE, TRUE, isExtensionDryRun());
613 setExtensionUpdateNotes("Filter zum Generieren von Admin-Links für Bonus-Mails hinzugefügt.");
616 case '0.9.6': // SQL queries for v0.9.6
617 // Register points data
618 registerExtensionPointsData('monthly_bonus', 'points', 'LOCKED', 'DIRECT');
621 setExtensionUpdateNotes("Monatlicher Bonus wird nun über die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
624 case '0.9.7': // SQL queries for v0.9.7
625 addConfigChangeSql('bonus_order_yn', 'include_bonus_order', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
626 addConfigChangeSql('bonus_ref_yn' , 'include_bonus_ref' , "ENUM('Y','N') NOT NULL DEFAULT 'N'");
627 addConfigChangeSql('bonus_stats_yn', 'include_bonus_stats', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
628 addConfigChangeSql('bonus_login_yn', 'include_bonus_login', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
629 addConfigChangeSql('bonus_click_yn', 'include_bonus_click', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
632 registerFilter(__FILE__, __LINE__, 'add_bonus_points_user_columns', 'ADD_BONUS_POINTS_USER_COLUMNS', FALSE, TRUE, isExtensionDryRun());
634 // Update notes (these will be set as task text!)
635 setExtensionUpdateNotes("Konfigurationseinträge umbenannt.");
638 case '0.9.8': // SQL queries for v0.9.8
640 registerFilter(__FILE__, __LINE__, 'pre_user_registration', 'BONUS_USER_REGISTRATION_ADD_SQL_COLUMNS', FALSE, TRUE, isExtensionDryRun());
642 // Add dependency to ext-register
643 addExtensionDependency('register');
645 // Update notes (these will be set as task text!)
646 setExtensionUpdateNotes("Filter zum Hinzufügen von SQL-Spalten bei der Mitgliederanmeldung.");
649 case '0.9.9': // SQL queries for v0.9.9
651 registerFilter(__FILE__, __LINE__, 'init', 'SEND_BONUS_NOTIFICATIONS', FALSE, TRUE, isExtensionDryRun());
653 // Update notes (these will be set as task text!)
654 setExtensionUpdateNotes("Filter zum Hinzufügen von SQL-Spalten bei der Mitgliederanmeldung.");
659 case 'modify': // When the extension got modified
662 case 'test': // For testing purposes
665 case 'init': // Do stuff when extension is initialized
668 default: // Unknown extension mode
669 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));