2 /************************************************************************
3 * Mailer v0.2.1-FINAL Start: 04/29/2004 *
4 * =================== Last change: 11/14/2004 *
6 * -------------------------------------------------------------------- *
7 * File : ext-order.php *
8 * -------------------------------------------------------------------- *
9 * Short description : Swapped out order system for PRO version *
10 * -------------------------------------------------------------------- *
11 * Kurzbeschreibung : Ausgelagertes Buchungssytem fuer PRO-Version *
12 * -------------------------------------------------------------------- *
15 * $Tag:: 0.2.1-FINAL $ *
17 * -------------------------------------------------------------------- *
18 * Copyright (c) 2003 - 2009 by Roland Haeder *
19 * Copyright (c) 2009 - 2011 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')) {
44 setThisExtensionVersion('0.5.3');
46 // Version history array (add more with , '0.0.1' and so on)
47 setExtensionVersionHistory(array('0.0.0', '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', '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'));
49 switch (getExtensionMode()) {
50 case 'register': // Do stuff when installation is running
51 // SQL commands to run
52 addMemberMenuSql('order', 'order', 'Mailbuchung', 1);
55 case 'remove': // Do stuff when removing extension
56 // SQL commands to run
57 addDropTableSql('url_blacklist');
58 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_order' LIMIT 1");
59 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `action`='order'");
61 // Remove these filters
62 unregisterFilter(__FUNCTION__, __LINE__, 'get_total_points', 'ORDER_POINTS', true, isExtensionDryRun());
63 unregisterFilter(__FUNCTION__, __LINE__, 'get_own_points', 'ORDER_POINTS', true, isExtensionDryRun());
66 case 'activate': // Do stuff when admin activates this extension
67 // SQL commands to run
68 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `action`='order'");
69 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `hidden`='N',`locked`='N',`admin_only`='N',`mem_only`='Y' WHERE `module`='order' LIMIT 1");
72 case 'deactivate': // Do stuff when admin deactivates this extension
73 // SQL commands to run
74 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `action`='order'");
75 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `hidden`='Y',`locked`='Y' WHERE `module`='order' LIMIT 1");
78 case 'update': // Update an extension
79 switch (getCurrentExtensionVersion()) {
80 case '0.1.0': // SQL queries for v0.1
81 addConfigAddSql('order_max_full', "ENUM('ORDER','MAX') NOT NULL DEFAULT 'MAX'");
82 addAdminMenuSql('setup','config_order','Mailbuchungsseite','Einstellungen am Mailbuchungsformular.',7);
84 // Update notes (these will be set as task text!)
85 setExtensionUpdateNotes("Maximale Mailbuchungen sind nun vom maximalen Empfang abhägig.");
88 case '0.1.1': // SQL queries for v0.1.1
89 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `mail_orders` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
91 // Update notes (these will be set as task text!)
92 setExtensionUpdateNotes("Maximale Mailbuchung vervollständigt (Admin-Bereich und im Buchungsformular selber).");
95 case '0.1.3': // SQL queries for v0.1.3
96 // Update notes (these will be set as task text!)
97 setExtensionUpdateNotes("Maximale Mailbuchungen repariert (werden nun hochgezählt und bei täglichem Reset auf 0 gesetzt).");
100 case '0.1.4': // SQL queries for v0.1.4
101 // Update notes (these will be set as task text!)
102 setExtensionUpdateNotes("Dummy-Datenfeld wird wieder gelöscht, um Probleme zu vermeiden. Fehlende Spalte <span class=\"bad\">mail_order</span> korregiert auf <span class=\"bad\">mail_orders</span>.");
105 case '0.1.5': // SQL queries for v0.1.5
106 // Update notes (these will be set as task text!)
107 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
110 case '0.1.6': // SQL queries for v0.1.6
111 // Update notes (these will be set as task text!)
112 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
115 case '0.1.7': // SQL queries for v0.1.7
116 // Update notes (these will be set as task text!)
117 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
120 case '0.1.8': // SQL queries for v0.1.8
121 // Update notes (these will be set as task text!)
122 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
125 case '0.1.9': // SQL queries for v0.1.9
126 // Update notes (these will be set as task text!)
127 setExtensionUpdateNotes("Menüpunkte im Gast-/Mitgliedsbereich können nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
130 case '0.2.0': // SQL queries for v0.2.0
131 // Update notes (these will be set as task text!)
132 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
135 case '0.2.1': // SQL queries for v0.2.1
136 // Update notes (these will be set as task text!)
137 setExtensionUpdateNotes("Templates <u>member_frameset-back.tpl</u> und <u>member_frameset-send.tpl</u> nach <u>member_order_back.tpl</u> und <u>member_order_send.tpl</u> umbenannt.");
140 case '0.2.2': // SQL queries for v0.2.2
141 // Update notes (these will be set as task text!)
142 setExtensionUpdateNotes("Es wird nun überprüft ob auch genügend Empfänger eingegeben worden sind und ob auch genügend empfangsbereit sind.");
145 case '0.2.3': // SQL queries for v0.2.3
146 addConfigAddSql('order_min', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
148 // Update notes (these will be set as task text!)
149 setExtensionUpdateNotes("Minimum an Empfänger pro Mailbuchung einstellbar. Standard: 10 Empfänger");
152 case '0.2.4': // SQL queries for v0.2.4
153 // Update notes (these will be set as task text!)
154 setExtensionUpdateNotes("Anzahl mindestens einszustellende Empfänger wird nun auch angezeigt.");
157 case '0.2.5': // SQL queries for v0.2.5
158 // Update notes (these will be set as task text!)
159 setExtensionUpdateNotes("Speicherung der Einstellungen klappt.");
162 case '0.2.6': // SQL queries for v0.2.6
163 // Update notes (these will be set as task text!)
164 setExtensionUpdateNotes("Fehler in Mailbuchung behoben: Es wurde beim Ermitteln der nötigen {?POINTS?} die maximale Anzahl von Usern in der Kategorie gewählt und
165 nicht die vom Mitglied eingegebene. Resultat: Das Script beschwerte sich, der User hätte nicht genügend {?POINTS?} auf dem Konto. Ein Rechenbeispiel:
167 <li>Das Mitglied wählt eine Kategorie XYZ mit maximal 15 Empfängern aus.</li>
168 <li>Es stellt die Mailart <u>"3 {?POINTS?} Kosten / Mail"</u> ein.</li>
169 <li>Es hat aber nur {?POINTS?} für 10 Empfänger und gibt 10 ein.</li>
170 <li>Das Script hatte bis zu dieser Version 3 {?POINTS?} * <u>15</u> = 45 {?POINTS?} gerechnet, hat das Mitglied mehr oder gleich 45 {?POINTS?}, fiehl dieser Fehler nicht
172 <li>Hatte es aber, wie hier im Beispiel 31 {?POINTS?}, konnte es nicht mehr buchen.</li>
173 <li>Jetzt ist der Fehler endlich weg! Machen Sie dies bitte Ihren Mitgliedern bekannt.</li>
177 case '0.2.7': // SQL queries for v0.2.7
178 // Update notes (these will be set as task text!)
179 setExtensionUpdateNotes("Fehler mit <u>__MIN_VALUE</u> behoben.");
182 case '0.2.8': // SQL queries for v0.2.8
183 // Update notes (these will be set as task text!)
184 setExtensionUpdateNotes("Konstantenproblem beseitigt.");
187 case '0.2.9': // SQL queries for v0.2.9
188 // Update notes (these will be set as task text!)
189 setExtensionUpdateNotes("Problem mit nicht funktionierenden Mailbuchungen beseitigt.");
192 case '0.3.0': // SQL queries for v0.3.0
193 // Update notes (these will be set as task text!)
194 setExtensionUpdateNotes("Basis-Modul <strong>order.php</strong> abgesichert, wenn Erweiterung nicht aktiviert ist.");
197 case '0.3.1': // SQL queries for v0.3.1
198 addConfigAddSql('order_select', "VARCHAR(255) NOT NULL DEFAULT 'userid'");
199 addConfigAddSql('order_mode', "ENUM('ASC','DESC') NOT NULL DEFAULT 'DESC'");
201 // Update notes (these will be set as task text!)
202 setExtensionUpdateNotes("Beworbene URL wird nun getestet.");
205 case '0.3.2': // SQL queries for v0.3.2
206 // Update notes (these will be set as task text!)
207 setExtensionUpdateNotes("Datumsformat festgelegt auf ausführlich.");
210 case '0.3.3': // SQL queries for v0.3.3
211 // Update notes (these will be set as task text!)
212 setExtensionUpdateNotes("Unter <strong>Einstellungen - Mailbuchungsseite</strong> war immer die Tabellenspalte <strong>Mitgliedsnummer</strong> ausgewählt.");
215 case '0.3.4': // SQL queries for v0.3.4
216 // Update notes (these will be set as task text!)
217 setExtensionUpdateNotes("Dateiamenskonflikt zwischen den Erweiterungen <strong>support</strong> und <strong>order</strong> behoben.");
220 case '0.3.5': // SQL queries for v0.3.5
221 // Update notes (these will be set as task text!)
222 setExtensionUpdateNotes("Das Mitglied konnte geziehlt die Anzahl Mailbuchungen durch Abspeichern seines Profiles beeinflussen. Der Fehler war eine falsche Tabellenspalte. Dies war <strong>max_mails</strong>, die durch das Mitglieder veränderbar ist und zur Festellung der Maximalen Mailbuchungen herangezogen wurde.");
225 case '0.3.6': // SQL queries for v0.3.6
226 // Update notes (these will be set as task text!)
227 setExtensionUpdateNotes("Im Modul order (<strong>inc/modules/order.php</strong>) wurde fehlerhafterweise die Erweiterung <strong>beg</strong> getestet.");
230 case '0.3.7': // SQL queries for v0.3.7
231 // Update notes (these will be set as task text!)
232 setExtensionUpdateNotes("SQL-Anweisungen mit SQL_QUERY_ESC() abgesichert.");
235 case '0.3.8': // SQL queries for v0.3.8
236 // Update notes (these will be set as task text!)
237 setExtensionUpdateNotes("Mailbuchungsseite korregiert.");
240 case '0.3.9': // SQL queries for v0.3.9
241 // Update notes (these will be set as task text!)
242 setExtensionUpdateNotes("Erneuten Fehler in Mailbuchungsseite behoben.");
245 case '0.4.0': // SQL queries for v0.4.0
246 // Update notes (these will be set as task text!)
247 setExtensionUpdateNotes("{?POINTS?}-Abzug klappt wieder. Danke an Andreman!");
250 case '0.4.1': // SQL queries for v0.4.1
251 // Update notes (these will be set as task text!)
252 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
255 case '0.4.2': // SQL queries for v0.4.2
256 // Update notes (these will be set as task text!)
257 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
260 case '0.4.3': // SQL queries for v0.4.3
261 // Update notes (these will be set as task text!)
262 setExtensionUpdateNotes("Neue Urlaubsschaltung mit integriert.");
265 case '0.4.4': // SQL queries for v0.4.4
266 // Update notes (these will be set as task text!)
267 setExtensionUpdateNotes("Ein <strong>WHERE `ext_active`='Y'</strong> tauchte bei einigen Betreibern auf und ist mit dieser Version beseitigt.");
270 case '0.4.5': // SQL queries for v0.4.5
271 // Update notes (these will be set as task text!)
272 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verknüpften Modules eingebunden.");
275 case '0.4.6': // SQL queries for v0.4.6
276 addMemberMenuSql('order', NULL, 'Mailbuchungen', 3);
277 addMemberMenuSql('order', 'order2', 'Framekiller-Mails', 2);
278 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='order',`title`='Klick-Mails',`sort`=1 WHERE `what`='order' LIMIT 1");
280 // Update notes (these will be set as task text!)
281 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
284 case '0.4.7': // SQL queries for v0.4.7
285 // Update notes (these will be set as task text!)
286 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
289 case '0.4.8': // SQL queries for v0.4.8
290 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailbuchung' WHERE `what`='config_order' LIMIT 1");
292 // Update notes (these will be set as task text!)
293 setExtensionUpdateNotes("Menüpunkt "Mailbuchungsseite" nach "Mailbuchung" umbenannt und weitere Einstellungen aus Sonstige Einstellungen verschoben.");
296 case '0.4.9': // SQL queries for v0.4.9
297 addConfigAddSql('repay_deleted_mails', "ENUM('REPAY','JACKPOT','SHRED') NOT NULL DEFAULT 'REPAY'");
299 // Update notes (these will be set as task text!)
300 setExtensionUpdateNotes("Bei Löschung von Mailbuchungen kann nun scripteweit entschieden werden (Einstellungen also), ob die verbliebenen {?POINTS?} wieder gutgeschrieben werden sollen oder in den Jackpot landen.");
303 case '0.5.0': // SQL queries for v0.5.0
304 addDropTableSql('url_blacklist');
305 addCreateTableSql('url_blacklist', "
306 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
307 `url` VARCHAR(255) NOT NULL DEFAULT '',
308 `pool_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
309 `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
314 // Update notes (these will be set as task text!)
315 setExtensionUpdateNotes("Tabelle für URL-Sperrliste angelegt.");
318 case '0.5.1': // SQL queries for v0.5.1
319 // Update notes (these will be set as task text!)
320 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
323 case '0.5.2': // SQL queries for v0.5.2
324 addConfigDropSql('test_text');
325 addConfigDropSql('test_subj');
326 addConfigAddSql('allow_url_in_text', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
327 addConfigAddSql('allow_url_in_subject', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
329 // Update notes (these will be set as task text!)
330 setExtensionUpdateNotes("Inkonsistenz in Konfigurationsnamen korregiert.");
333 case '0.5.3': // SQL queries for v0.5.3
334 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_points` ADD `order_points` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
335 addExtensionSql('ALTER TABLE `{?_MYSQL_PREFIX?}_user_points` ADD `locked_order_points` FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
337 // This update depends on ext-user
338 addExtensionDependency('user');
340 // Register filters for gathering points
341 registerFilter(__FUNCTION__, __LINE__, 'get_total_points', 'ORDER_POINTS', true, isExtensionDryRun());
342 registerFilter(__FUNCTION__, __LINE__, 'get_own_points', 'ORDER_POINTS', true, isExtensionDryRun());
344 // Update notes (these will be set as task text!)
345 setExtensionUpdateNotes("Weiteres {?POINTS?}-Guthabenkonto "Werbeguthaben" hinzugefügt (verschoben von ext-user) und neue Filter zum Zurückliefern des Werbeguthabens hinzugefügt.");
350 case 'modify': // When the extension got modified
353 case 'test': // For testing purposes
356 case 'init': // Do stuff when extension is initialized
357 // Do daily reset only when installed and extension version is at least 0.1.1
358 // @TODO This should be moved out to inc/daily/
359 if ((isResetModeEnabled()) && (isInstalled()) && (isAdminRegistered()) && (isExtensionInstalledAndNewer('order', '0.1.1'))) {
360 // Reset mail order values
361 $result_ext = SQL_QUERY('UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `mail_orders`=0 WHERE `mail_orders` > 0', __FILE__, __LINE__);
365 case 'init': // Do stuff when extension is initialized
368 default: // Unknown extension mode
369 logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));