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 - 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')) {
44 setThisExtensionVersion('0.5.7');
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', '0.5.4', '0.5.5', '0.5.6', '0.5.7'));
49 switch (getExtensionMode()) {
50 case 'setup': // 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 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_order' LIMIT 1");
58 addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `action`='order'");
60 // Remove these filters
61 unregisterFilter(__FILE__, __LINE__, 'get_total_points', 'ORDER_POINTS', TRUE, isExtensionDryRun());
62 unregisterFilter(__FILE__, __LINE__, 'get_own_points', 'ORDER_POINTS', TRUE, isExtensionDryRun());
63 unregisterFilter(__FILE__, __LINE__, 'get_locked_points', 'LOCKED_ORDER_POINTS', TRUE, isExtensionDryRun());
64 unregisterFilter(__FILE__, __LINE__, 'get_all_point_columns', 'GET_ALL_ORDER_POINTS_COLUMN_NAMES', TRUE, isExtensionDryRun());
65 unregisterFilter(__FILE__, __LINE__, 'user_exclusion_sql', 'ORDER_ZIP_CODE_SQL', TRUE, isExtensionDryRun());
66 unregisterFilter(__FILE__, __LINE__, 'locked_points_columns_array', 'ORDER_POINTS_COLUMNS', TRUE, isExtensionDryRun());
69 case 'activate': // Do stuff when admin activates this extension
70 // SQL commands to run
71 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `action`='order'");
72 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `hidden`='N',`locked`='N',`admin_only`='N',`mem_only`='Y' WHERE `module`='order' LIMIT 1");
75 case 'deactivate': // Do stuff when admin deactivates this extension
76 // SQL commands to run
77 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `action`='order'");
78 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `hidden`='Y',`locked`='Y' WHERE `module`='order' LIMIT 1");
81 case 'update': // Update an extension
82 switch (getCurrentExtensionVersion()) {
83 case '0.1.0': // SQL queries for v0.1
84 addConfigAddSql('order_max_full', "ENUM('ORDER','MAX') NOT NULL DEFAULT 'MAX'");
85 addAdminMenuSql('setup','config_order','Mailbuchungsseite','Einstellungen am Mailbuchungsformular.',7);
87 // Update notes (these will be set as task text!)
88 setExtensionUpdateNotes("Maximale Mailbuchungen sind nun vom maximalen Empfang abhägig.");
91 case '0.1.1': // SQL queries for v0.1.1
92 addExtensionAddTableColumnSql('user_data', 'mail_orders', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
94 // Update notes (these will be set as task text!)
95 setExtensionUpdateNotes("Maximale Mailbuchung vervollständigt (Admin-Bereich und im Buchungsformular selber).");
98 case '0.1.3': // SQL queries for v0.1.3
99 // Update notes (these will be set as task text!)
100 setExtensionUpdateNotes("Maximale Mailbuchungen repariert (werden nun hochgezählt und bei täglichem Reset auf 0 gesetzt).");
103 case '0.1.4': // SQL queries for v0.1.4
104 // Update notes (these will be set as task text!)
105 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>.");
108 case '0.1.5': // SQL queries for v0.1.5
109 // Update notes (these will be set as task text!)
110 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
113 case '0.1.6': // SQL queries for v0.1.6
114 // Update notes (these will be set as task text!)
115 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
118 case '0.1.7': // SQL queries for v0.1.7
119 // Update notes (these will be set as task text!)
120 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
123 case '0.1.8': // SQL queries for v0.1.8
124 // Update notes (these will be set as task text!)
125 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
128 case '0.1.9': // SQL queries for v0.1.9
129 // Update notes (these will be set as task text!)
130 setExtensionUpdateNotes("Menüpunkte im Gast-/Mitgliedsbereich können nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
133 case '0.2.0': // SQL queries for v0.2.0
134 // Update notes (these will be set as task text!)
135 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
138 case '0.2.1': // SQL queries for v0.2.1
139 // Update notes (these will be set as task text!)
140 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.");
143 case '0.2.2': // SQL queries for v0.2.2
144 // Update notes (these will be set as task text!)
145 setExtensionUpdateNotes("Es wird nun überprüft ob auch genügend Empfänger eingegeben worden sind und ob auch genügend empfangsbereit sind.");
148 case '0.2.3': // SQL queries for v0.2.3
149 addConfigAddSql('order_min', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 10');
151 // Update notes (these will be set as task text!)
152 setExtensionUpdateNotes("Minimum an Empfänger pro Mailbuchung einstellbar. Standard: 10 Empfänger");
155 case '0.2.4': // SQL queries for v0.2.4
156 // Update notes (these will be set as task text!)
157 setExtensionUpdateNotes("Anzahl mindestens einszustellende Empfänger wird nun auch angezeigt.");
160 case '0.2.5': // SQL queries for v0.2.5
161 // Update notes (these will be set as task text!)
162 setExtensionUpdateNotes("Speicherung der Einstellungen klappt.");
165 case '0.2.6': // SQL queries for v0.2.6
166 // Update notes (these will be set as task text!)
167 setExtensionUpdateNotes("Fehler in Mailbuchung behoben: Es wurde beim Ermitteln der nötigen {?POINTS?} die maximale Anzahl von Usern in der Kategorie gewählt und
168 nicht die vom Mitglied eingegebene. Resultat: Das Script beschwerte sich, der User hätte nicht genügend {?POINTS?} auf dem Konto. Ein Rechenbeispiel:
170 <li>Das Mitglied wählt eine Kategorie XYZ mit maximal 15 Empfängern aus.</li>
171 <li>Es stellt die Mailart <u>"3 {?POINTS?} Kosten / Mail"</u> ein.</li>
172 <li>Es hat aber nur {?POINTS?} für 10 Empfänger und gibt 10 ein.</li>
173 <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
175 <li>Hatte es aber, wie hier im Beispiel 31 {?POINTS?}, konnte es nicht mehr buchen.</li>
176 <li>Jetzt ist der Fehler endlich weg! Machen Sie dies bitte Ihren Mitgliedern bekannt.</li>
180 case '0.2.7': // SQL queries for v0.2.7
181 // Update notes (these will be set as task text!)
182 setExtensionUpdateNotes("Fehler mit <u>__MIN_VALUE</u> behoben.");
185 case '0.2.8': // SQL queries for v0.2.8
186 // Update notes (these will be set as task text!)
187 setExtensionUpdateNotes("Konstantenproblem beseitigt.");
190 case '0.2.9': // SQL queries for v0.2.9
191 // Update notes (these will be set as task text!)
192 setExtensionUpdateNotes("Problem mit nicht funktionierenden Mailbuchungen beseitigt.");
195 case '0.3.0': // SQL queries for v0.3.0
196 // Update notes (these will be set as task text!)
197 setExtensionUpdateNotes("Basis-Modul <strong>order.php</strong> abgesichert, wenn Erweiterung nicht aktiviert ist.");
200 case '0.3.1': // SQL queries for v0.3.1
201 addConfigAddSql('order_select', "VARCHAR(255) NOT NULL DEFAULT 'userid'");
202 addConfigAddSql('order_mode', "ENUM('ASC','DESC') NOT NULL DEFAULT 'DESC'");
204 // Update notes (these will be set as task text!)
205 setExtensionUpdateNotes("Beworbene URL wird nun getestet.");
208 case '0.3.2': // SQL queries for v0.3.2
209 // Update notes (these will be set as task text!)
210 setExtensionUpdateNotes("Datumsformat festgelegt auf ausführlich.");
213 case '0.3.3': // SQL queries for v0.3.3
214 // Update notes (these will be set as task text!)
215 setExtensionUpdateNotes("Unter <strong>Einstellungen - Mailbuchungsseite</strong> war immer die Tabellenspalte <strong>Mitgliedsnummer</strong> ausgewählt.");
218 case '0.3.4': // SQL queries for v0.3.4
219 // Update notes (these will be set as task text!)
220 setExtensionUpdateNotes("Dateiamenskonflikt zwischen den Erweiterungen <strong>support</strong> und <strong>order</strong> behoben.");
223 case '0.3.5': // SQL queries for v0.3.5
224 // Update notes (these will be set as task text!)
225 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.");
228 case '0.3.6': // SQL queries for v0.3.6
229 // Update notes (these will be set as task text!)
230 setExtensionUpdateNotes("Im Modul order (<strong>inc/modules/order.php</strong>) wurde fehlerhafterweise die Erweiterung <strong>beg</strong> getestet.");
233 case '0.3.7': // SQL queries for v0.3.7
234 // Update notes (these will be set as task text!)
235 setExtensionUpdateNotes("SQL-Anweisungen mit SQL_QUERY_ESC() abgesichert.");
238 case '0.3.8': // SQL queries for v0.3.8
239 // Update notes (these will be set as task text!)
240 setExtensionUpdateNotes("Mailbuchungsseite korregiert.");
243 case '0.3.9': // SQL queries for v0.3.9
244 // Update notes (these will be set as task text!)
245 setExtensionUpdateNotes("Erneuten Fehler in Mailbuchungsseite behoben.");
248 case '0.4.0': // SQL queries for v0.4.0
249 // Update notes (these will be set as task text!)
250 setExtensionUpdateNotes("{?POINTS?}-Abzug klappt wieder. Danke an Andreman!");
253 case '0.4.1': // SQL queries for v0.4.1
254 // Update notes (these will be set as task text!)
255 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
258 case '0.4.2': // SQL queries for v0.4.2
259 // Update notes (these will be set as task text!)
260 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
263 case '0.4.3': // SQL queries for v0.4.3
264 // Update notes (these will be set as task text!)
265 setExtensionUpdateNotes("Neue Urlaubsschaltung mit integriert.");
268 case '0.4.4': // SQL queries for v0.4.4
269 // Update notes (these will be set as task text!)
270 setExtensionUpdateNotes("Ein <strong>WHERE `ext_active`='Y'</strong> tauchte bei einigen Betreibern auf und ist mit dieser Version beseitigt.");
273 case '0.4.5': // SQL queries for v0.4.5
274 // Update notes (these will be set as task text!)
275 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verknüpften Modules eingebunden.");
278 case '0.4.6': // SQL queries for v0.4.6
279 addMemberMenuSql('order', NULL, 'Mailbuchungen', 3);
280 addMemberMenuSql('order', 'order2', 'Framekiller-Mails', 2);
281 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='order',`title`='Klick-Mails',`sort`=1 WHERE `what`='order' LIMIT 1");
283 // Update notes (these will be set as task text!)
284 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
287 case '0.4.7': // SQL queries for v0.4.7
288 // Update notes (these will be set as task text!)
289 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
292 case '0.4.8': // SQL queries for v0.4.8
293 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailbuchung' WHERE `what`='config_order' LIMIT 1");
295 // Update notes (these will be set as task text!)
296 setExtensionUpdateNotes("Menüpunkt "Mailbuchungsseite" nach "Mailbuchung" umbenannt und weitere Einstellungen aus Sonstige Einstellungen verschoben.");
299 case '0.4.9': // SQL queries for v0.4.9
300 addConfigAddSql('repay_deleted_mails', "ENUM('REPAY','JACKPOT','SHRED') NOT NULL DEFAULT 'REPAY'");
302 // Update notes (these will be set as task text!)
303 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.");
306 case '0.5.0': // SQL queries for v0.5.0
307 // Update notes (these will be set as task text!)
308 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
311 case '0.5.1': // SQL queries for v0.5.1
312 // Update notes (these will be set as task text!)
313 setExtensionUpdateNotes("Nicht mehr gültiges Update.");
316 case '0.5.2': // SQL queries for v0.5.2
317 addConfigDropSql('test_text');
318 addConfigDropSql('test_subj');
319 addConfigAddSql('allow_url_in_text', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
320 addConfigAddSql('allow_url_in_subject', "ENUM('Y','N') NOT NULL DEFAULT 'N'");
322 // Update notes (these will be set as task text!)
323 setExtensionUpdateNotes("Inkonsistenz in Konfigurationsnamen korregiert.");
326 case '0.5.3': // SQL queries for v0.5.3
327 addExtensionAddTableColumnSql('user_points', 'order_points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
328 addExtensionAddTableColumnSql('user_points', 'locked_order_points', 'FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000');
330 // This update depends on ext-user
331 addExtensionDependency('user');
333 // Register filters for gathering points
334 registerFilter(__FILE__, __LINE__, 'get_total_points', 'ORDER_POINTS', FALSE, TRUE, isExtensionDryRun());
335 registerFilter(__FILE__, __LINE__, 'get_own_points', 'ORDER_POINTS', FALSE, TRUE, isExtensionDryRun());
337 // Update notes (these will be set as task text!)
338 setExtensionUpdateNotes("Weiteres Verwendungszwecke "Werbeguthaben" hinzugefügt (verschoben von ext-user) und neue Filter zum Zurückliefern des Werbeguthabens hinzugefügt.");
341 case '0.5.4': // SQL queries for v0.5.4
342 // Register filter for handling locked points
343 registerFilter(__FILE__, __LINE__, 'get_locked_points', 'LOCKED_ORDER_POINTS', FALSE, TRUE, isExtensionDryRun());
345 // Register filter for all column names
346 registerFilter(__FILE__, __LINE__, 'get_all_point_columns', 'GET_ALL_ORDER_POINTS_COLUMN_NAMES', FALSE, TRUE, isExtensionDryRun());
348 // Update notes (these will be set as task text!)
349 setExtensionUpdateNotes("Filter für gesperrtes Werbeguthaben hinzugefügt.");
352 case '0.5.5': // SQL queries for v0.5.5
354 registerFilter(__FILE__, __LINE__, 'user_exclusion_sql', 'ORDER_ZIP_CODE_SQL', FALSE, TRUE, isExtensionDryRun());
356 // Update notes (these will be set as task text!)
357 setExtensionUpdateNotes("Filter für gesperrtes Werbeguthaben hinzugefügt.");
360 case '0.5.6': // SQL queries for v0.5.6
362 registerFilter(__FILE__, __LINE__, 'locked_points_columns_array', 'ORDER_POINTS_COLUMNS', FALSE, TRUE, isExtensionDryRun());
364 // Update notes (these will be set as task text!)
365 setExtensionUpdateNotes("Filter für Spaltenname des gesperrten Werbeguthabens hinzugefügt.");
368 case '0.5.7': // SQL queries for v0.5.7
369 addDropTableSql('url_blacklist');
371 // Update notes (these will be set as task text!)
372 setExtensionUpdateNotes("Tabelle für URL-Sperrliste gelöscht (nach <strong>ext-blacklist</strong> verschoben).");
377 case 'modify': // When the extension got modified
380 case 'test': // For testing purposes
383 case 'init': // Do stuff when extension is initialized
386 case 'init': // Do stuff when extension is initialized
389 default: // Unknown extension mode
390 reportBug(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));