]> git.mxchange.org Git - mailer.git/blob - inc/extensions/ext-rallye.php
967cdeb52a8e789dafcf209855b2a26115c58f69
[mailer.git] / inc / extensions / ext-rallye.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 06/19/2004 *
4  * ===================                          Last change: 12/26/2004 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : ext-rallye.php                                   *
8  * -------------------------------------------------------------------- *
9  * Short description : Referral rallye                                  *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Referral Rallyes starten                         *
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 number
44 setThisExtensionVersion('0.3.7');
45
46 // Version history array (add more with , '0.0.1' and so on)
47 setExtensionVersionHistory(array('0.0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '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'));
48
49 switch (getExtensionMode()) {
50         case 'register': // Do stuff when installation is running
51                 // SQL commands to run
52                 addDropTableSql('rallye_data');
53                 addCreateTableSql('rallye_data', "
54 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
55 `admin_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
56 `title` VARCHAR(255) NOT NULL DEFAULT '',
57 `descr` LONGTEXT NOT NULL,
58 `template` VARCHAR(255) NOT NULL DEFAULT '',
59 `start_time` VARCHAR(10) NOT NULL DEFAULT 0,
60 `end_time` VARCHAR(10) NOT NULL DEFAULT 0,
61 `auto_add_new_user` ENUM('Y','N') NOT NULL DEFAULT 'Y',
62 `is_active` ENUM('Y','N') NOT NULL DEFAULT 'N',
63 `send_notify` ENUM('Y','N') NOT NULL DEFAULT 'Y',
64 `notified` ENUM('Y','N') NOT NULL DEFAULT 'N',
65 PRIMARY KEY (`id`),
66 INDEX (`admin_id`)",
67                         'Main rallye data');
68
69                 addDropTableSql('rallye_prices');
70                 addCreateTableSql('rallye_prices', "
71 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
72 `rallye_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
73 `price_level` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
74 `points` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
75 `info` LONGTEXT NOT NULL,
76 PRIMARY KEY (`id`),
77 INDEX (`rallye_id`)",
78                         'Prices data for a rallye');
79
80                 addDropTableSql('rallye_users');
81                 addCreateTableSql('rallye_users', "
82 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
83 `rallye_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
84 `userid` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
85 `refs` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
86 PRIMARY KEY (`id`),
87 INDEX (`rallye_id`),
88 INDEX (`userid`)",
89                         'Rallye->user connection table');
90
91                 // Admin menu
92                 addAdminMenuSql('rallye', NULL, 'Rallye-Management','Richten Sie neue Ref-Rallyes ein, die zeitgesteuert anfangen und aufh&ouml;hren. Dabei wird alles weitere automatisch geregelt.',9);
93                 addAdminMenuSql('rallye','add_rallye','Neue Rallye hinzuf&uuml;gen','Neue Ref-Rallye hinzuf&uuml;gen.',1);
94                 // @TODO Fix config_rallye_prices to list_rallye_prices
95                 addAdminMenuSql('rallye','config_rallye_prices','Preise einrichten','Richten Sie Preise zu den Rallyes ein.',2);
96                 addAdminMenuSql('rallye','list_rallyes','Rallyes verwalten','Alle bestehenden Ref-Rallyes auflisten, bearbeiten, stoppen, l&ouml;schen usw.',3);
97
98                 // Guest menu
99                 addGuestMenuSql('main', 'rallyes', 'Ref-Rallyes', 9);
100
101                 // Member menu
102                 addMemberMenuSql('main', 'rallyes', 'Ref-Rallyes', 9);
103                 break;
104
105         case 'remove': // Do stuff when removing extension
106                 // Drop tables
107                 addDropTableSql('rallye_data');
108                 addDropTableSql('rallye_prices');
109                 addDropTableSql('rallye_users');
110
111                 // Remove menus
112                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='rallye'");
113                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='rallyes' LIMIT 1");
114                 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='rallyes' LIMIT 1");
115
116                 // Remove points_data entry
117                 unregisterExtensionPointsData('rallye_winner');
118
119                 // Unregister filter
120                 unregisterFilter(__FILE__, __LINE__, 'extra_autopurge', 'RALLYE_EXTRA_AUTOPURGE', true, isExtensionDryRun());
121                 unregisterFilter(__FILE__, __LINE__, 'init', 'RALLYE_NOTIFY_USERS', true, isExtensionDryRun());
122                 unregisterFilter(__FILE__, __LINE__, 'add_rallye_notify_sqls', 'ADD_RALLYE_SQL_COLUMNS', true, isExtensionDryRun());
123                 break;
124
125         case 'activate': // Do stuff when admin activates this extension
126                 // SQL commands to run
127                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y',`locked`='N' WHERE `what`='rallyes' LIMIT 1");
128                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `what`='rallyes' LIMIT 1");
129                 break;
130
131         case 'deactivate': // Do stuff when admin deactivates this extension
132                 // SQL commands to run
133                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N',`locked`='Y' WHERE `what`='rallyes' LIMIT 1");
134                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `what`='rallyes' LIMIT 1");
135                 break;
136
137         case 'update': // Update an extension
138                 switch (getCurrentExtensionVersion()) {
139                         case '0.0.1': // SQL queries for v0.0.1
140                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_rallye_data` ADD `expired` ENUM('Y','N') NOT NULL DEFAULT 'N'");
141
142                                 // Update notes (these will be set as task text!)
143                                 setExtensionUpdateNotes("Ablaufen der Rallyes intergriert.");
144                                 break;
145
146                         case '0.0.2': // SQL queries for v0.0.2
147                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_rallye_users` ADD `curr_points` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000");
148
149                                 // Update notes (these will be set as task text!)
150                                 setExtensionUpdateNotes("Aktueller {?POINTS?}-Stand wird beachtet.");
151                                 break;
152
153                         case '0.0.6': // SQL queries for v0.0.6
154                                 // Update notes (these will be set as task text!)
155                                 setExtensionUpdateNotes("Fehler <span class=\"notice\">Unknown column 'd.useid' in 'on clause'</span> behoben.");
156                                 break;
157
158                         case '0.0.7': // SQL queries for v0.0.7
159                                 // Update notes (these will be set as task text!)
160                                 setExtensionUpdateNotes("Fehlende Abfrage im Mitlieder-Modul, on Erweiterung auch aktiviert ist.");
161                                 break;
162
163                         case '0.0.8': // SQL queries for v0.0.8
164                                 // Update notes (these will be set as task text!)
165                                 setExtensionUpdateNotes("Fehler <u>Template nicht gefunden</u> behoben und Admin-Formulare ausgelagert");
166                                 break;
167
168                         case '0.0.9': // SQL queries for v0.0.9
169                                 // Update notes (these will be set as task text!)
170                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist. Und der vorherige Fehler <u>Template nicht gefunden</u> ist endlich beseitigt.");
171                                 break;
172
173                         case '0.1.0': // SQL queries for v0.2.1
174                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_rallye_users` CHANGE `curr_points` `curr_points` FLOAT(23,5) UNSIGNED NOT NULL DEFAULT 0.00000");
175
176                                 // Update notes (these will be set as task text!)
177                                 setExtensionUpdateNotes("5 Nachkommastellen implementiert.");
178                                 break;
179
180                         case '0.1.1': // SQL queries for v0.1.1
181                                 // Update notes (these will be set as task text!)
182                                 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
183                                 break;
184
185                         case '0.1.2': // SQL queries for v0.1.2
186                                 // Update notes (these will be set as task text!)
187                                 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
188                                 break;
189
190                         case '0.1.3': // SQL queries for v0.1.3
191                                 // Update notes (these will be set as task text!)
192                                 setExtensionUpdateNotes("Anzeigefehler im Gast-/Mitgliedsbereich behoben.");
193                                 break;
194
195                         case '0.1.4': // SQL queries for v0.1.4
196                                 // Update notes (these will be set as task text!)
197                                 setExtensionUpdateNotes("Admin-Mails korregiert.");
198                                 break;
199
200                         case '0.1.5': // SQL queries for v0.1.5
201                                 // Update notes (these will be set as task text!)
202                                 setExtensionUpdateNotes("Men&uuml;punkte im Gast-/Mitgliedsbereich k&ouml;nnen nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
203                                 break;
204
205                         case '0.1.6': // SQL queries for v0.1.6
206                                 // Update notes (these will be set as task text!)
207                                 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> &uuml;berfl&uuml;ssige HTML-Tags entfernt.");
208                                 break;
209
210                         case '0.1.7': // SQL queries for v0.1.7
211                                 // Update notes (these will be set as task text!)
212                                 setExtensionUpdateNotes("Aktivierte bzw. abgelaufene Rallyes werden nur ausserhalb des CSS-Modus geladen (wenn also nicht css.php aufgerufen wurde)");
213                                 break;
214
215                         case '0.1.8': // SQL queries for v0.1.8
216                                 // Update notes (these will be set as task text!)
217                                 setExtensionUpdateNotes("Weitere Templates vom Admin-Bereich ausgelagert und Referral-Anazahl in der Mail zur Rallye-Ank&uuml;ndigung repariert.");
218                                 break;
219
220                         case '0.1.9': // SQL queries for v0.1.9
221                                 // Update notes (these will be set as task text!)
222                                 setExtensionUpdateNotes("Funktion <u>generateUserProfileLink()</u> mit Verlinkung auf Referral-Liste implementiert.");
223                                 break;
224
225                         case '0.2.0': // SQL queries for v0.2.0
226                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_rallye_data` ADD `min_users` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
227                                 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_rallye_data` ADD `min_prices` BIGINT(20) UNSIGNED NOT NULL DEFAULT 3");
228
229                                 // Update notes (these will be set as task text!)
230                                 setExtensionUpdateNotes("Ablaufen der Rallyes intergriert. Bauen Sie in Ihr Template <strong>templates/de/emails/member/member_rallye_notify.tpl</strong> folgende zwei Zeilen ein:<br />
231 <ul>
232   <li>&#36;DATA&#91;min_users&#93;</li>
233   <li>&#36;DATA&#91;min_prices&#93;</li>
234 </ul>
235 Zudem sollten Sie mindestens folgende Templates (in <strong>templates/".getLanguage()."/html/guest/</strong> !) aktualisieren:<br />
236 <ul>
237   <li><strong>guest_rallye_footer.tpl</strong></li>
238   <li><strong>guest_rallye_header.tpl</strong></li>
239 </ul>");
240                                 break;
241
242                         case '0.2.1': // SQL queries for v0.2.1
243                                 // Update notes (these will be set as task text!)
244                                 setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
245                                 break;
246
247                         case '0.2.2': // SQL queries for v0.2.2
248                                 // Update notes (these will be set as task text!)
249                                 setExtensionUpdateNotes("Links wegen <strong>what=admins_contct</strong> ge&auml;ndert.");
250                                 break;
251
252                         case '0.2.3': // SQL queries for v0.2.3
253                                 // Update notes (these will be set as task text!)
254                                 setExtensionUpdateNotes("HTML-Code ausgelagert in Templates und SQL-Anweisungen abgesichert.");
255                                 break;
256
257                         case '0.2.4': // SQL queries for v0.2.4
258                                 // Update notes (these will be set as task text!)
259                                 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
260                                 break;
261
262                         case '0.2.5': // SQL queries for v0.2.5
263                                 // Update notes (these will be set as task text!)
264                                 setExtensionUpdateNotes("Men&uuml;punkt &quot;Rallyes verwalten&quot; repariert.");
265                                 break;
266
267                         case '0.2.6': // SQL queries for v0.2.6
268                                 // Update notes (these will be set as task text!)
269                                 setExtensionUpdateNotes("Automatisches Starten von Referral-Rallyes repariert.");
270                                 break;
271
272                         case '0.2.7': // SQL queries for v0.2.7
273                                 // Update notes (these will be set as task text!)
274                                 setExtensionUpdateNotes("Fatalen Fehler beseitigt.");
275                                 break;
276
277                         case '0.2.8': // SQL queries for v0.2.8
278                                 // Update notes (these will be set as task text!)
279
280                                 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
281                                 break;
282
283                         case '0.2.9': // SQL queries for v0.2.9
284                                 // Update notes (these will be set as task text!)
285                                 setExtensionUpdateNotes("Sicherheitsupdate f&uuml;r die Include-Befehle.");
286                                 break;
287
288                         case '0.3.0': // SQL queries for v0.3.0
289                                 // Update notes (these will be set as task text!)
290                                 setExtensionUpdateNotes("if-Anweisungen auf Funktion <strong>empty()</strong> umgestellt.");
291                                 break;
292
293                         case '0.3.1': // SQL queries for v0.3.1
294                                 // Update notes (these will be set as task text!)
295                                 setExtensionUpdateNotes("Erweiterung f&uuml;r automatisch generierte Admin-Kontaktlinks ge&auml;ndert.");
296                                 break;
297
298                         case '0.3.2': // SQL queries for v0.3.2
299                                 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals',`title`='Referral-Rallye',`sort`=1 WHERE `what`='rallyes' LIMIT 1");
300
301                                 // Update notes (these will be set as task text!)
302                                 setExtensionUpdateNotes("Mitgliedsmen&uuml; komplett umgebaut.");
303                                 break;
304
305                         case '0.3.3': // SQL queries for v0.3.3
306                                 // Update notes (these will be set as task text!)
307                                 setExtensionUpdateNotes("Rallyes werden nun nur dann automatisch beseitigt, wenn die Erweiterung <strong>autopurge</strong> installiert und aktiviert ist.");
308                                 break;
309
310                         case '0.3.4': // SQL queries for v0.3.4
311                                 // Update notes (these will be set as task text!)
312                                 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
313                                 break;
314
315                         case '0.3.5': // SQL queries for 0.3.5
316                                 // This update depends on ext-sql_patches
317                                 addExtensionDependency('sql_patches');
318
319                                 // Register filter
320                                 registerFilter(__FILE__, __LINE__, 'extra_autopurge', 'RALLYE_EXTRA_AUTOPURGE', false, true, isExtensionDryRun());
321
322                                 // Update notes (these will be set as task text!)
323                                 setExtensionUpdateNotes("Filter hinzugef&uuml;gt und ist von <strong>sql_patches</strong> abh&auml;ngig.");
324                                 break;
325
326                         case '0.3.6': // SQL queries for v0.3.6
327                                 // Register points data
328                                 registerExtensionPointsData('rallye_winner', 'points', 'LOCKED', 'DIRECT');
329
330                                 // This depends on ext-sql_patches
331                                 addExtensionDependency('sql_patches');
332
333                                 // Update notes
334                                 setExtensionUpdateNotes("Gewinn aus der Referral-Rallye wird nun &uuml;ber die Tabelle <strong>{OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data</strong> verwaltet.");
335                                 break;
336
337                         case '0.3.7': // SQL queries for v0.3.7
338                                 // Register filter
339                                 registerFilter(__FILE__, __LINE__, 'init', 'RALLYE_NOTIFY_USERS', false, true, isExtensionDryRun());
340                                 registerFilter(__FILE__, __LINE__, 'add_rallye_notify_sqls', 'ADD_RALLYE_SQL_COLUMNS', false, true, isExtensionDryRun());
341
342                                 // Update notes
343                                 setExtensionUpdateNotes("Weitere Filter hinzugef&uuml;gt.");
344                                 break;
345                 } // END - switch
346                 break;
347
348         case 'modify': // When the extension got modified
349                 break;
350
351         case 'test': // For testing purposes
352                 break;
353
354         case 'init': // Do stuff when extension is initialized
355                 break;
356
357         default: // Unknown extension mode
358                 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
359                 break;
360 } // END - switch
361
362 // [EOF]
363 ?>