2 /************************************************************************
3 * MXChange v0.2.1 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 * Needs to be in all Files and every File needs "svn propset *
18 * svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
19 * -------------------------------------------------------------------- *
20 * Copyright (c) 2003 - 2009 by Roland Haeder *
21 * For more information visit: http://www.mxchange.org *
23 * This program is free software; you can redistribute it and/or modify *
24 * it under the terms of the GNU General Public License as published by *
25 * the Free Software Foundation; either version 2 of the License, or *
26 * (at your option) any later version. *
28 * This program is distributed in the hope that it will be useful, *
29 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
30 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
31 * GNU General Public License for more details. *
33 * You should have received a copy of the GNU General Public License *
34 * along with this program; if not, write to the Free Software *
35 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
37 ************************************************************************/
39 // Some security stuff...
40 if (!defined('__SECURITY')) {
45 setThisExtensionVersion('0.5.1');
47 // Version history array (add more with , '0.1.0' and so on)
48 setExtensionVersionHistory(array('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'));
50 switch (getExtensionMode()) {
51 case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
52 // SQL commands to run
56 case 'remove': // Do stuff when removing extension
57 // SQL commands to run
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 `what`='order' LIMIT 1");
62 case 'activate': // Do stuff when admin activates this extension
63 // SQL commands to run
64 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what`='order' LIMIT 1");
65 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `admin_only`='N', `mem_only`='Y' WHERE `module`='order' LIMIT 1");
68 case 'deactivate': // Do stuff when admin deactivates this extension
69 // SQL commands to run
70 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `what`='order' LIMIT 1");
71 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `visible`='N', `locked`='Y' WHERE `module`='order' LIMIT 1");
74 case 'update': // Update an extension
75 switch (getCurrentExtensionVersion()) {
76 case '0.1.0': // SQL queries for v0.1
77 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD order_max_full ENUM('ORDER','MAX') NOT NULL DEFAULT 'MAX'");
78 addAdminMenuSql('setup','config_order','Mailbuchungsseite','Einstellungen am Mailbuchungsformular.',7);
80 // Update notes (these will be set as task text!)
81 setExtensionUpdateNotes("Maximale Mailbuchungen sind nun vom maximalen Empfang abhägig.");
84 case '0.1.1': // SQL queries for v0.1.1
85 // OLD QUERIES: addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='config_order' LIMIT 1");
86 // OLD QUERIES: addAdminMenuSql('setup','config_order','Mailbuchungsseite','Einstellungen am Mailbuchungsformular.',7);
87 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `mail_orders` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0");
89 // Update notes (these will be set as task text!)
90 setExtensionUpdateNotes("Maximale Mailbuchung vervollständigt (Admin-Bereich und im Buchungsformular selber).");
93 case '0.1.3': // SQL queries for v0.1.3
94 // Update notes (these will be set as task text!)
95 setExtensionUpdateNotes("Maximale Mailbuchungen repariert (werden nun hochgezählt und bei täglichem Reset auf 0 gesetzt).");
98 case '0.1.4': // SQL queries for v0.1.4
99 // Update notes (these will be set as task text!)
100 setExtensionUpdateNotes("Dummy-Datenfeld wird wieder gelöscht, um Probleme zu vermeiden. Fehlende Spalte <em>mail_order</em> korregiert auf <em>mail_orders</em>.");
103 case '0.1.5': // SQL queries for v0.1.5
104 // Update notes (these will be set as task text!)
105 setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist.");
108 case '0.1.6': // SQL queries for v0.1.6
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.7': // SQL queries for v0.1.7
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.8': // SQL queries for v0.1.8
119 // Update notes (these will be set as task text!)
120 setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt.");
123 case '0.1.9': // SQL queries for v0.1.9
124 // Update notes (these will be set as task text!)
125 setExtensionUpdateNotes("Menüpunkte im Gast-/Mitgliedsbereich können nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist.");
128 case '0.2.0': // SQL queries for v0.2.0
129 // Update notes (these will be set as task text!)
130 setExtensionUpdateNotes("Seit <strong>Patch 340</strong> überflüssige HTML-Tags entfernt.");
133 case '0.2.1': // SQL queries for v0.2.1
134 // Update notes (these will be set as task text!)
135 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.");
138 case '0.2.2': // SQL queries for v0.2.2
139 // Update notes (these will be set as task text!)
140 setExtensionUpdateNotes("Es wird nun überprüft ob auch genügend Empfänger eingegeben worden sind und ob auch genügend empfangsbereit sind.");
143 case '0.2.3': // SQL queries for v0.2.3
144 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD order_min BIGINT(20) UNSIGNED NOT NULL DEFAULT 10");
146 // Update notes (these will be set as task text!)
147 setExtensionUpdateNotes("Minimum an Empfänger pro Mailbuchung einstellbar. Standart: 10 Empfänger");
150 case '0.2.4': // SQL queries for v0.2.4
151 // Update notes (these will be set as task text!)
152 setExtensionUpdateNotes("Anzahl mindestens einszustellende Empfänger wird nun auch angezeigt.");
155 case '0.2.5': // SQL queries for v0.2.5
156 // Update notes (these will be set as task text!)
157 setExtensionUpdateNotes("Speicherung der Einstellungen klappt.");
160 case '0.2.6': // SQL queries for v0.2.6
161 // Update notes (these will be set as task text!)
162 setExtensionUpdateNotes("Fehler in Mailbuchung behoben: Es wurde beim Ermitteln der nötigen {?POINTS?} die maximale Anzahl von Usern in der Kategorie gewählt und
163 nicht die vom Mitglied eingegebene. Resultat: Das Script beschwerte sich, der User hätte nicht genügend {?POINTS?} auf dem Konto. Ein Rechenbeispiel:
165 <li>Das Mitglied wählt eine Kategorie XYZ mit maximal 15 Empfängern aus.</li>
166 <li>Es stellt die Mailart <u>"3 {?POINTS?} Kosten / Mail"</u> ein.</li>
167 <li>Es hat aber nur {?POINTS?} für 10 Empfänger und gibt 10 ein.</li>
168 <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
170 <li>Hatte es aber, wie hier im Beispiel 31 {?POINTS?}, konnte es nicht mehr buchen.</li>
171 <li>Jetzt ist der Fehler endlich weg! Machen Sie dies bitte Ihren Mitgliedern bekannt.</li>
175 case '0.2.7': // SQL queries for v0.2.7
176 // Update notes (these will be set as task text!)
177 setExtensionUpdateNotes("Fehler mit <u>__MIN_VALUE</u> behoben.");
180 case '0.2.8': // SQL queries for v0.2.8
181 // Update notes (these will be set as task text!)
182 setExtensionUpdateNotes("Konstantenproblem beseitigt.");
185 case '0.2.9': // SQL queries for v0.2.9
186 // Update notes (these will be set as task text!)
187 setExtensionUpdateNotes("Problem mit nicht funktionierenden Mailbuchungen beseitigt.");
190 case '0.3.0': // SQL queries for v0.3.0
191 // Update notes (these will be set as task text!)
192 setExtensionUpdateNotes("Basis-Modul <strong>order.php</strong> abgesichert, wenn Erweiterung nicht aktiviert ist.");
195 case '0.3.1': // SQL queries for v0.3.1
196 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD order_select VARCHAR(255) NOT NULL DEFAULT 'userid'");
197 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD order_mode ENUM('ASC','DESC') NOT NULL DEFAULT 'DESC'");
199 // Update notes (these will be set as task text!)
200 setExtensionUpdateNotes("Beworbene URL wird nun getestet.");
203 case '0.3.2': // SQL queries for v0.3.2
204 // Update notes (these will be set as task text!)
205 setExtensionUpdateNotes("Datumsformat festgelegt auf ausführlich.");
208 case '0.3.3': // SQL queries for v0.3.3
209 // Update notes (these will be set as task text!)
210 setExtensionUpdateNotes("Unter <strong>Einstellungen - Mailbuchungsseite</strong> war immer die Tabellenspalte <strong>Mitgliedsnummer</strong> ausgewählt.");
213 case '0.3.4': // SQL queries for v0.3.4
214 // Update notes (these will be set as task text!)
215 setExtensionUpdateNotes("Dateiamenskonflikt zwischen den Erweiterungen <strong>support</strong> und <strong>order</strong> behoben.");
218 case '0.3.5': // SQL queries for v0.3.5
219 // Update notes (these will be set as task text!)
220 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.");
223 case '0.3.6': // SQL queries for v0.3.6
224 // Update notes (these will be set as task text!)
225 setExtensionUpdateNotes("Im Modul order (<strong>inc/modules/order.php</strong>) wurde fehlerhafterweise die Erweiterung <strong>beg</strong> getestet.");
228 case '0.3.7': // SQL queries for v0.3.7
229 // Update notes (these will be set as task text!)
230 setExtensionUpdateNotes("SQL-Anweisungen mit SQL_QUERY_ESC() abgesichert.");
233 case '0.3.8': // SQL queries for v0.3.8
234 // Update notes (these will be set as task text!)
235 setExtensionUpdateNotes("Mailbuchungsseite korregiert.");
238 case '0.3.9': // SQL queries for v0.3.9
239 // Update notes (these will be set as task text!)
240 setExtensionUpdateNotes("Erneuten Fehler in Mailbuchungsseite behoben.");
243 case '0.4.0': // SQL queries for v0.4.0
244 // Update notes (these will be set as task text!)
245 setExtensionUpdateNotes("{?POINTS?}-Abzug klappt wieder. Danke an Andreman!");
248 case '0.4.1': // SQL queries for v0.4.1
249 // Update notes (these will be set as task text!)
250 setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
253 case '0.4.2': // SQL queries for v0.4.2
254 // Update notes (these will be set as task text!)
255 setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4.");
258 case '0.4.3': // SQL queries for v0.4.3
259 // Update notes (these will be set as task text!)
260 setExtensionUpdateNotes("Neue Urlaubsschaltung mit integriert.");
263 case '0.4.4': // SQL queries for v0.4.4
264 // Update notes (these will be set as task text!)
265 setExtensionUpdateNotes("Ein <strong>WHERE `ext_active`='Y'</strong> tauchte bei einigen Betreibern auf und ist mit dieser Version beseitigt.");
268 case '0.4.5': // SQL queries for v0.4.5
269 // Update notes (these will be set as task text!)
270 setExtensionUpdateNotes("De-/Aktivieren des mit dieser Erweiterung verknüpften Modules eingebunden.");
273 case '0.4.6': // SQL queries for v0.4.6
274 addMemberMenuSql('order',NULL,'Mailbuchungen','N','Y',3);
275 addMemberMenuSql('order','order2','Framekiller-Mails','N','Y',2);
276 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='order', `sort`=1, `title`='Klick-Mails' WHERE `what`='order' LIMIT 1");
278 // Update notes (these will be set as task text!)
279 setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut.");
282 case '0.4.7': // SQL queries for v0.4.7
283 // Update notes (these will be set as task text!)
284 setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
287 case '0.4.8': // SQL queries for v0.4.8
288 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_admin_menu` SET `title`='Mailbuchung' WHERE `what`='config_order' LIMIT 1");
290 // Update notes (these will be set as task text!)
291 setExtensionUpdateNotes("Menüpunkt "Mailbuchungsseite" nach "Mailbuchung" umbenannt und weitere Einstellungen aus Sonstige Einstellungen verschoben.");
294 case '0.4.9': // SQL queries for v0.4.9
295 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD repay_deleted_mails ENUM('REPAY','JACKPOT','SHRED') NOT NULL DEFAULT 'REPAY'");
297 // Update notes (these will be set as task text!)
298 setExtensionUpdateNotes("Bei Löschung von Mailbuchungen kann nun global entschieden werden (Einstellungen also), ob die verbliebenen {?POINTS?} wieder gutgeschrieben werden sollen oder in den Jackpot landen.");
301 case '0.5.0': // SQL queries for v0.5.0
302 addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_url_blacklist`");
303 addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_url_blacklist` (
304 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
305 `url` VARCHAR(255) NOT NULL DEFAULT '',
306 `pool_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
307 `timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
310 ) TYPE=MYISAM COMMENT='URL blacklist'");
312 // Update notes (these will be set as task text!)
313 setExtensionUpdateNotes("Tabelle für URL-Sperrliste angelegt.");
316 case '0.5.1': // SQL queries for v0.5.1
317 addMemberMenuSql('main','order','Mailbuchung','N','Y',8);
319 // Update notes (these will be set as task text!)
320 setExtensionUpdateNotes("Weiteren Menü-Query in Erweiterung verlagert.");
325 case 'modify': // When the extension got modified
328 case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
331 case 'init': // Do stuff when extension is initialized
332 // Do daily reset only when installed and extension version is at least 0.1.1
333 if ((isResetModeEnabled()) && (isInstalled()) && (isAdminRegistered()) && (getExtensionVersion('order') >= '0.1.1')) {
334 // Reset mail order values
335 $result_ext = SQL_QUERY("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET mail_orders=0 WHERE mail_orders > 0", __FILE__, __LINE__);
339 case 'init': // Do stuff when extension is initialized
342 default: // Unknown extension mode
343 DEBUG_LOG(__FILE__, __LINE__, sprintf("Unknown extension mode %s detected.", getExtensionMode()));