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